문제
아래 그림과 같이 <주문내역> 테이블과 <제품> 테이블의 관계가 설정되어 있다. 다음 중 <제품> 테이블의 특정 레코드를 삭제하였을 경우에 대한 설명으로 옳은 것은?
[관계 설정]
- <제품>(제품번호) 1 : ∞ <주문내역>(제품번호)
- '항상 참조 무결성 유지' 사용
- '관련 레코드 모두 삭제' 사용
- 관계 종류: 일대다(1:∞)
① <주문내역> 테이블에서 참조되고 있으므로 <제품> 테이블에서 특정 레코드를 삭제할 수 없다. ② <제품> 테이블에서만 특정 레코드가 삭제되고, <주문 내역> 테이블에는 아무런 변동이 없다. ③ <제품> 테이블의 특정 레코드가 삭제되고, 이를 참조하는 <주문내역> 테이블의 모든 레코드도 함께 삭제된다. ④ <제품> 테이블의 특정 레코드와 <주문내역> 테이블의 모든 레코드가 삭제된다.
정답
3번
해설
정답: 3. '관련 레코드 모두 삭제(연쇄 삭제)'가 설정되어 있으므로, 기본 테이블(<제품>)의 레코드를 삭제하면 이를 참조하는 <주문내역> 테이블의 '해당' 레코드들도 함께 삭제된다.
오답 풀이
- 1번: 연쇄 삭제가 설정되어 있어 삭제가 가능하므로 '삭제할 수 없다'는 옳지 않다.
- 2번: 참조하는 주문내역 레코드도 함께 삭제되므로 '변동 없다'는 옳지 않다.
- 3번: 제품 레코드와 이를 참조하는 주문내역 레코드가 함께 삭제되므로 옳다.
- 4번: 주문내역의 '모든' 레코드가 아니라 참조하는 레코드만 삭제되므로 옳지 않다.
보충 개념 참조 무결성에서 '관련 레코드 모두 삭제'(연쇄 삭제)를 켜면 기본 테이블 삭제 시 참조하는 외래 키 레코드도 함께 삭제된다. 설정하지 않으면 참조되는 레코드는 삭제할 수 없다.