테이블 설계 관련하여 질문드립니다 0 1 142

by 웹린이 [2021.09.09 11:18:06]


현재 A,B,C라는 사람별로 각각 정해진 하루일과가 있고, 현재시간에 따른 각 사람별 하루일과를 보여주고 싶은데요

(현재시간 12시일 경우-> A 는 수학공부, B는 영어공부, C는 일어공부)

 

테이블은 아래와 같이 설계하였는데 


첨부 이미지

PK를 어떻게 잡아야할지 모르겠습니다 ㅜㅜ 

 

사람별로 수업시작~끝시간안에 다른 수업시간이 들어가있으면 안되서 중복이 없어야하는데요..

(예를 들면 A가 10~12시가 수학시간인데 11시부터 1시까지 영어시간을 하면 안되서요...)

 

그런데 사람/수업시작/끝시간 3개를 PK로 잡아도 중복을 제거할 순 없을 것 같은데요

ex) KIM MATH 10:00 12:00 

     KIM  ENG   11:00 13:00

이런것까지는 테이블설계에서 잡아낼 수 없을까요? 

 

이런 경우 어떻게 PK를 잡아야할까요?

 

by 우리집아찌 [2021.09.09 13:23:46]

PK로 사용할만한 후보식별자가 보이지 않습니다.

그런 경우 인조식별자를 만들어 쓰게 되는데요

그보다 이름은 중복될수 있으니 테이블을 분리하셔야합니다. 클래스도 명칭이 변경될수 있으니 분리해합니다. 

그다음에 위의 테이블 경우면 

인조식별자 (순번) , 이름테이블의 pk , 클래스테이블의 pk , 시작시간 , 끝시간

pk를 인조식별자로 사용하거나

또는

이름테이블의 pk , 클래스테이블의 pk , 시작시간 , 끝시간

pk를 이름테이블의 pk , 클래스테이블의 pk , 시작시간 으로 사용하면 될것 같네요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입