모두CBT

[부서] 테이블과 [사원] 테이블에는 아래 표와 같이 데이터가 들어 있… | [컴퓨터활용능력 1급 필기] 10년 1회차 기출문제 상세 페이지

1[컴퓨터활용능력 1급 필기] 10년 1회차
[부서] 테이블과 [사원] 테이블에는 아래 표와 같이 데이터가 들어 있다. [부서] 테이블의 '부서코드'는 기본키로 설정되어 있고 [사원] 테이블의 '소속부서' 필드는 [부서]테이블의 부서코드를 참조하고 있는 외래키(foreign key)이다. 다음 설명으로 옳지 않은 것은?
[부서]
부서코드부서명
1회계부
2관리부
3총무부
[사원]
사번사원명소속부서
1홍길동1
2깁을섭3
3박부자1
4이원수null
1
현재 참조무결성(referential intergrity)이 유지되고 있다.
2
[사원] 테이블에서 4번 사원의 '소속부서'를 4로 바꾸면 참조무결성은 유지되지 않는다.
3
[사원] 테이블에서 2번 사원을 삭제해도 참조무결성은 유지된다.
4
[부서]테이블에서 2번 부서를 삭제하면 참조무결성이 유지되지 않는다.
해설

[부서] 테이블에는 부서코드 1(회계부), 2(관리부), 3(총무부) 가 있고, [사원] 테이블의 소속부서 값은 차례로 1, 3, 1, null 이다. 즉 부서코드 2(관리부)를 참조하는 사원은 한 명도 없다.

참조 무결성은 외래키 값이 부모 테이블에 실제로 존재하는 기본키 값이거나 Null 이어야 유지된다. 지금은 1과 3이 모두 존재하는 부서코드이고 나머지 하나는 Null 이므로 현재 상태는 참조 무결성이 유지되고 있다. 여기서 소속부서를 존재하지 않는 4 로 바꾸면 참조할 부서가 없어 무결성이 깨지고, 자식 쪽인 사원 한 명을 지우는 것은 부모를 건드리지 않으므로 아무 문제가 없다.

반면 부모 테이블에서 관리부(부서코드 2)를 삭제하는 경우, 그 부서를 참조하는 사원 레코드가 존재하지 않으므로 삭제 후에도 모든 외래키 값(1, 3, Null)이 여전히 유효하다. 따라서 참조 무결성은 그대로 유지되며, 유지되지 않는다고 한 설명이 옳지 않다. 참조하는 자식 레코드가 있는 회계부나 총무부를 지우려 했다면 이야기가 달라진다는 점도 함께 확인해 두자.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.