문제
‘부서코드’를 기본키로 하는 [부서] 테이블과 ‘부서코드’를 포함한 사원정보가 있는 [사원] 테이블을 이용하여 관계를 설정하였다. 다음 중 이와 관련된 관계 설정에 대한 설명으로 옳은 것은? (단, 한 부서에는 여러 명의 사원이 소속되어 있으며, 한 사원은 하나의 부서에 소속된다.)
① ‘항상 참조 무결성 유지’를 설정하면 [사원] 테이블에 입력하려는 ‘사원’의 ‘부서코드’는 반드시 [부서] 테이블에 존재해야만 한다. ② ‘항상 참조 무결성 유지’를 설정하면 [부서] 테이블에서 ‘부서코드’가 바뀌는 경우 [사원] 테이블에 있는 ‘사원’의 ‘부서코드’도 무조건 자동으로 바뀐다. ③ ‘항상 참조 무결성 유지’를 설정하지 않더라도 [사원] 테이블에 입력하려는 ‘사원’의 ‘부서코드’는 반드시 [부서] 테이블에 존재해야만 한다. ④ ‘항상 참조 무결성 유지’를 설정하지 않더라도 [사원] 테이블에서 사용 중인 ‘부서코드’는 [부서] 테이블에서 삭제할 수 없다.
정답
1번
해설
정답: 1. 참조 무결성을 설정하면 자식 테이블([사원])의 외래 키(부서코드)는 부모 테이블([부서])에 존재하는 값만 입력할 수 있다. 즉, 없는 부서코드를 사원에 입력할 수 없다.
오답 풀이
- 1번: 참조 무결성 설정 시 사원의 부서코드는 부서 테이블에 존재해야 하므로 옳다.
- 2번: 부서코드 변경이 자동 반영되려면 ‘관련 필드 모두 업데이트’를 추가로 켜야 하므로 ‘무조건 자동’은 옳지 않다.
- 3번: 참조 무결성을 설정하지 않으면 부서에 없는 코드도 입력될 수 있으므로 옳지 않다.
- 4번: 사용 중 코드 삭제 방지는 참조 무결성(및 관련 옵션)을 설정해야 적용되므로 ‘설정하지 않더라도’는 옳지 않다.
보충 개념 참조 무결성은 외래 키가 항상 부모 테이블의 기본 키 값을 참조하도록 보장한다. ‘관련 필드 모두 업데이트’·‘관련 레코드 모두 삭제’ 옵션을 함께 켜야 연쇄 변경·삭제가 일어난다.