문제
다음 <고객>과 <제품정보> 테이블 관계에서 참조 무결성이 항상 유지되도록 설정할 수 없는 경우는?
<그림> [그림: <고객> 테이블의 고객번호가 기본키이고, <제품정보> 테이블의 고객번호가 외래키로 연결된 1:N 관계]
① <고객> 테이블의 ‘고객번호’ 필드 값이 <제품정보> 테이블의 ‘고객번호’ 필드에 없는 경우. ② <고객> 테이블의 ‘고객번호’ 필드 값이 <제품정보> 테이블의 ‘고객번호’ 필드에 하나만 있는 경우. ③ <제품정보> 테이블의 ‘고객번호’ 필드 값이 <고객> 테이블의 ‘고객번호’ 필드에 없는 경우. ④ <고객> 테이블의 ‘고객번호’ 필드 값이 <제품정보> 테이블의 ‘고객번호’ 필드에 두 개 이상 있는 경우.
정답
3번
해설
정답: 3. 외래키 값은 참조 대상의 기본키 값에 존재하거나 NULL이어야 하므로, 제품정보의 고객번호가 고객 테이블에 없으면 참조 무결성이 깨진다.
오답 풀이
- 1번: 고객이 제품정보에 없어도 부모 테이블 입장에서는 참조 무결성 위반이 아니다.
- 2번: 제품정보에 한 번만 참조되어도 정상이다.
- 3번: 자식 테이블의 외래키가 부모 테이블의 기본키에 없으면 참조 무결성 위반이다.
- 4번: 1:N 관계에서 여러 제품정보가 같은 고객번호를 참조할 수 있다.
보충 개념 참조 무결성은 외래키가 참조 대상 테이블의 기본키와 일치해야 한다는 제약이다.