[MySQL] 스터디카페 관리시스템 개발 (3) 시스템 설계

azzurri21·2021년 6월 30일
0

MySQL

목록 보기
3/4

※ 본 시리즈는 정보시스템설계 수업에서 진행된 2인1조 프로젝트의 진행과정을 재구성한 것이며, 작성자는 이벤트 스케쥴러, 날짜 관련 쿼리 구현과 예시 데이터 삽입을 제외한 프로세스 & 데이터 모델링, SQL을 모두 직접 제작했음을 알립니다.

※ 시스템 제작 과정은 Essentials of Systems Analysis and Design 교재에 제시된 SDLC를 참고했습니다.


3. 시스템 설계


3.1 논리적 데이터 모델링

이 단계는 관계형 데이터베이스(RDB) 설계에 해당한다. 관계형 데이터베이스 설계는 이전에 작성한 ERD를 Relation Schema로 변환하는 방식으로 진행했다.

ERD에서 각 개체의 식별자(identifier)는 Relation에서 기본키(primary key)가 된다.

구매대여는 연관개체(associative entity)이므로 나머지 일반개체(regular entity)들과 맺는 일대다 관계성(1:N relatoinship)에서 다(多)의 역할을 맡는다. 따라서 일반개체들의 기본키를 외래키(foreign key)로 보유하게 되는데, 이 외래키와 '일시(datetime)' 속성을 합친 결합키(composite key)가 연관개체의 기본키가 된다.

Relation Schema

관계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에서 어떤 방식으로 작동하는지 알아보았다.

프로세스는 학생, 이용권, 자리의 데이터가 수집된 상태를 전제한다.

Process in RDB

프로세스의 각 단계는 튜플(tuple)의 삽입이나 속성 값의 갱신으로 표현된다. 아래는 이를 반영한 프로세스이다. 괄호는 프로세스에 따른 RDB에서의 동작방식이며, 굵은 글씨는 구매나 대여 행위와 함께 자동적으로 실행된다. 학생의 예정마감일시 계산은 이전에 없던 단계로 이번에 추가됐다.

  • 학생이 입력한 학생ID에 해당하는 이름 확인
  • 학생의 잔여이용시간과 모든 이용권 출력
  • 학생이 이용권을 구매 (구매 테이블 insert)
    - 학생의 잔여이용시간 갱신 (학생 테이블 '잔여이용시간' update)
  • 학생의 이용권 구매내역 출력
  • 대여 가능한 자리 목록 출력
  • 학생이 자리를 대여 (대여 테이블 insert)
    - 학생의 예정마감일시 계산
  • 학생이 대여를 마감 (대여 테이블 '실제마감시간' update)
    - 학생의 잔여이용시간 갱신 (학생 테이블 '잔여이용시간' update)
  • 학생의 대여내역 출력

profile
파이썬 백엔드 개발자

0개의 댓글