입고 테이블의 기본키를 일련번호 입고ID 로 정했더니 다음처럼 같은 송… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
입고 테이블의 기본키를 일련번호 입고ID 로 정했더니 다음처럼 같은 송장이 두 번 입고 등록되었다. 이를 막는 조치로 가장 적절한 것은?[입고]
| 입고ID | 거래처번호 | 송장번호 | 수량 |
|---|---|---|---|
| 1 | C10 | S-771 | 40 |
| 2 | C20 | S-771 | 15 |
| 3 | C10 | S-771 | 40 |
| 4 | C10 | S-772 | 8 |
1
입고ID 를 더 큰 숫자형으로 변경
2
입고ID 에 인덱스를 하나 더 생성
3
송장번호를 NULL 허용으로 변경
4
거래처번호·송장번호에 UNIQUE 지정
해설
입고ID 같은 인조식별자는 매번 새 값이 붙어 업무상 같은 입고(C10·S-771)가 중복돼도 막지 못하므로, 본질 속성 조합인 거래처번호·송장번호에 UNIQUE 제약을 둔다.
송장번호는 거래처마다 따로 매기므로 C20 의 S-771 은 정상이고 입고ID 3 이 중복이다.
- 숫자형 범위를 넓혀도 중복 입력은 그대로 허용된다.
- 입고ID 인덱스는 이미 유일한 값이라 중복 송장을 거르지 못한다.
- NULL 을 허용하면 송장 없는 입고까지 늘어날 뿐이다.
오류나 개정된 내용이 보이면 알려주세요