다음 청구 테이블은 청구ID(일련번호)를 기본키로 쓴다. 업무 규칙상 … | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 10회
다음 청구 테이블은 청구ID(일련번호)를 기본키로 쓴다. 업무 규칙상 같은 계약·같은 사고일자·같은 청구차수의 청구는 한 건만 있어야 할 때, 이 테이블에 대한 설명으로 옳은 것은?[청구]
| 청구ID | 계약번호 | 사고일자 | 청구차수 | 청구금액 |
|---|---|---|---|---|
| 1 | K01 | 2026-03-02 | 1 | 120 |
| 2 | K02 | 2026-03-02 | 1 | 80 |
| 3 | K01 | 2026-03-02 | 2 | 60 |
| 4 | K03 | 2026-03-10 | 1 | 200 |
| 5 | K01 | 2026-04-15 | 1 | 90 |
| 6 | K03 | 2026-03-10 | 1 | 200 |
1
업무상 같은 청구가 중복 입력돼 있다
2
사고일자·차수 UNIQUE로 충분하다
3
PK가 있어 중복 청구는 생길 수 없다
4
계약번호 UNIQUE면 중복만 막는다
해설
청구ID 4와 6은 계약 K03·사고일자 03-10·차수 1이 같은 업무상 중복인데, 인조식별자인 청구ID 값만 달라 기본키로는 걸러지지 않았다.
막으려면 (계약번호, 사고일자, 청구차수) 세 속성 조합 전체에 UNIQUE 제약을 걸어야 한다.
- 인조식별자 PK 는 값만 다르면 같은 업무 데이터도 받아들인다.
- 계약번호만 UNIQUE면 K01 의 정상적인 여러 청구까지 막힌다.
- 사고일자·차수만 UNIQUE면 K01 과 K02 의 정상 청구가 충돌한다.
오류나 개정된 내용이 보이면 알려주세요