탑승권 테이블의 PK 를 인조식별자 탑승권ID(일련번호) 하나로 두었더… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
탑승권 테이블의 PK 를 인조식별자 탑승권ID(일련번호) 하나로 두었더니 같은 편명·출발일·좌석번호로 탑승권이 두 장 발급되었다. PK 는 유지할 때 가장 적절한 보완책은?
1
탑승권ID 를 더 긴 번호로 바꾼다
2
탑승권ID 에 NOT NULL 을 추가한다
3
탑승권ID 를 무작위 문자열로 바꾼다
4
편명·출발일·좌석에 UNIQUE 를 둔다
해설
인조식별자는 행마다 새 값이 붙어 업무상 같은 탑승권도 다른 행으로 저장되므로, 본질 속성 조합(편명·출발일·좌석번호)에 UNIQUE 제약을 두어 업무 중복을 막는다.
인조식별자 PK 는 조인 편의를 위해 그대로 두고 본질식별자의 유일성은 별도 제약으로 보장한다.
- 일련번호 길이를 늘려도 업무 중복은 그대로 들어온다.
- NOT NULL 은 값의 존재만 강제할 뿐 중복을 막지 않는다.
- 무작위 문자열도 행마다 다른 값이라 중복을 막지 못한다.
오류나 개정된 내용이 보이면 알려주세요