[제품] 테이블의 '분류코드'는 [분류] 테이블의 '분류코드'를 참조한… | [컴퓨터활용능력 1급 필기] 10년 1회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 10년 1회차
[제품] 테이블의 '분류코드'는 [분류] 테이블의 '분류코드'를 참조한다. 분류코드 체계를 변경하기 위해 분류코드 필드 값을 변경하려 하였더니 다음과 같은 오류 메세지가 나타났다. 두 테이블에 변경된 내용을 적용하기 위한 가장 적절한 방법은?(메세지 내용 : 관련 레코드가 ‘제품’ 테이블에 있으므로 레코드를 삭제하거나 변경할 수 없습니다.)
1
두 테이블간의 관계를 해제하고 [분류] 테이블의 '분류코드' 필드 값을 수정한다.
2
[제품] 테이블의 '분류코드'를 먼저 수정한 후, [분류] 테이블의 '분류코드' 필드 값을 수정한다.
3
관계 편집 창에서 '관련 필드 모두 업데이트'를 체크한 후, [분류] 테이블의 '분류코드' 필드 값을 수정한다.
4
관계 편집 창에서 '관련 필드 모두 업데이트'를 체크한 후, [제품] 테이블의 '분류코드' 필드 값을 수정한다.
해설
이 메시지는 두 테이블 사이에 참조 무결성이 설정된 상태에서, 자식 쪽([제품])이 참조하고 있는 부모 쪽([분류])의 기본키 값을 바꾸거나 지우려 할 때 나타난다. 참조 무결성이 켜져 있으면 남겨진 [제품] 레코드가 존재하지 않는 분류코드를 가리키게 되므로 Access가 변경 자체를 막는 것이다.
이때 쓰는 기능이 관계 편집 창의 '관련 필드 모두 업데이트'(연쇄 업데이트) 이다. 이 옵션을 체크해 두면 부모 테이블인 [분류]의 '분류코드'를 수정하는 순간 이를 참조하던 [제품]의 '분류코드' 값이 자동으로 함께 바뀌어, 두 테이블에 변경 내용이 한 번에 반영되면서 무결성도 그대로 유지된다.
나머지 방법은 적절하지 않다. 관계를 해제하면 경고는 사라지지만 [제품] 쪽 값이 옛 코드로 남아 데이터가 어긋나고, 외래키 쪽인 [제품]의 분류코드를 먼저 고치면 존재하지 않는 분류코드를 참조하게 되어 역시 오류가 난다. 또 연쇄 업데이트는 기본키 쪽 값이 바뀔 때 동작하므로, 옵션을 켜 두고 [제품] 테이블 값을 고치는 것은 아무 의미가 없다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
