문제
부서 테이블의 1행을 삭제할 때, 이를 참조하는 사원 테이블의 행도 함께 삭제되도록 하는 외래키 표현으로 가장 적절한 것은?
① FOREIGN KEY (부서ID) REFERENCES 부서(부서ID) ON DELETE RESTRICT ② 부서 테이블이 사원 테이블을 REFERENCES 하고 ON DELETE CASCADE를 지정한다. ③ 사원 테이블의 부서ID가 부서 테이블의 부서ID를 REFERENCES 하고 ON DELETE CASCADE를 지정한다. ④ FOREIGN KEY (부서ID) REFERENCES 부서(부서ID) ON DELETE SET NULL
정답
3번
해설
정답: 3. 자식 테이블인 사원 테이블의 외래키가 부모 테이블인 부서 테이블을 참조하고 ON DELETE CASCADE를 지정해야 부모 삭제 시 자식 행도 삭제된다.
오답 풀이
- 1번: RESTRICT는 자식 행이 있으면 부모 삭제를 제한한다.
- 2번: 참조 방향이 반대이다.
- 3번: 자식이 부모를 참조하고 CASCADE를 지정하는 올바른 방식이다.
- 4번: SET NULL은 자식 행을 삭제하지 않고 외래키 값을 NULL로 만든다.
보충 개념 외래키는 자식 테이블에 정의하며 부모 테이블의 기본키 또는 고유키를 참조한다. ON DELETE CASCADE는 부모 삭제 시 자식 행 삭제를 전파한다.