※ 본 시리즈는 정보시스템설계 수업에서 진행된 2인1조 프로젝트의 진행과정을 재구성한 것이며, 작성자는 이벤트 스케쥴러, 날짜 관련 쿼리 구현과 예시 데이터 삽입을 제외한 프로세스 & 데이터 모델링, SQL을 모두 직접 제작했음을 알립니다.
※ 시스템 제작 과정은 Essentials of Systems Analysis and Design 교재에 제시된 SDLC를 참고했습니다.
이 단계는 관계형 데이터베이스(RDB) 설계에 해당한다. 관계형 데이터베이스 설계는 이전에 작성한 ERD를 Relation Schema로 변환하는 방식으로 진행했다.
ERD에서 각 개체의 식별자(identifier)는 Relation에서 기본키(primary key)가 된다.
구매
와 대여
는 연관개체(associative entity)이므로 나머지 일반개체(regular entity)들과 맺는 일대다 관계성(1:N relatoinship)에서 다(多)의 역할을 맡는다. 따라서 일반개체들의 기본키를 외래키(foreign key)로 보유하게 되는데, 이 외래키와 '일시(datetime)' 속성을 합친 결합키(composite key)가 연관개체의 기본키가 된다.
관계 | Relation | 속성(Attrubute) |
---|---|---|
학생 | Student | 학생ID(student_id), 이름(name), 잔여이용시간(residual_time) |
이용권 | Ticket | 이용권번호(ticket_no), 이용시간(time), 저장가능(storable), 가격(price) |
자리 | Seat | 자리번호(seat_no) |
구매 | Purchase | 학생ID(student_id), 이용권번호(ticket_no), 일시(date) |
대여 | Rent | 학생ID(student_id), 자리번호(seat_no), 시작일시(start_date), 실제마감일시(real_end_date), 예정마감일시(expected_end_date) |
[참고]
학생
과이용권
개체의 'OO시간' 속성은 초 단위의 시간을 의미하며, 'time'으로 번역했다.구매
와대여
개체의 'OO일시' 속성은 날짜 & 시각(예: 2021-06-21 14:32:49)을 의미하며, date로 번역했다.- 볼드체는 기본키(primary key)를 의미한다.
다음으로, 앞선 포스트에 작성한 프로세스에 구체성을 더하여 프로세스 각 단계가 RDB에서 어떤 방식으로 작동하는지 알아보았다.
프로세스는 학생, 이용권, 자리의 데이터가 수집된 상태를 전제한다.
프로세스의 각 단계는 튜플(tuple)의 삽입이나 속성 값의 갱신으로 표현된다. 아래는 이를 반영한 프로세스이다. 괄호는 프로세스에 따른 RDB에서의 동작방식이며, 굵은 글씨는 구매나 대여 행위와 함께 자동적으로 실행된다. 학생의 예정마감일시 계산은 이전에 없던 단계로 이번에 추가됐다.
구매
테이블 insert)학생
테이블 '잔여이용시간' update)대여
테이블 insert)대여
테이블 '실제마감시간' update)학생
테이블 '잔여이용시간' update)