다음 수강신청 테이블은 시퀀스로 부여한 인조식별자 신청ID 를 기본키로… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
다음 수강신청 테이블은 시퀀스로 부여한 인조식별자 신청ID 를 기본키로 쓴다. 한 학생은 같은 강좌를 한 번만 신청할 수 있을 때, 이 설계를 보완하는 방법으로 가장 적절한 것은?수강신청
| 신청ID | 학번 | 강좌코드 | 신청일 |
|---|---|---|---|
| 1 | 2026001 | C10 | 2026-03-02 |
| 2 | 2026002 | C10 | 2026-03-02 |
| 3 | 2026001 | C20 | 2026-03-03 |
| 4 | 2026001 | C10 | 2026-03-04 |
1
학번+강좌코드에 유니크 제약을 둔다
2
신청ID 에 NOT NULL 제약을 추가한다
3
신청일을 기본키로 바꾸어 사용한다
4
학번 단독으로 유니크 제약을 건다
해설
인조식별자만 기본키로 두면 같은 학생의 같은 강좌 신청이 신청ID 만 달리해 중복 입력되며, 실제로 2026001·C10 신청이 두 행 저장되었다.
본질식별자인 (학번, 강좌코드)에 유니크 제약을 걸면 인조식별자를 유지하면서도 업무상 중복을 막을 수 있다.
- 신청일은 여러 신청이 같은 날 생기므로 유일성이 없다.
- 신청ID 는 기본키라 이미 NOT NULL 이며 중복을 막지 못한다.
- 학번 단독 유니크는 한 학생의 여러 강좌 신청까지 막는다.
오류나 개정된 내용이 보이면 알려주세요