패스잇
시스템 설계 · 중급

외래 키(Foreign Key) 제약조건을 설정할 때, 'ON DELETE CASCADE', 'ON DELETE SET NULL', 'ON DELETE RESTRICT' 등의 옵션 중 어떤 경우에 각 옵션을 선택해야 하는지 구체적인 시나리오를 들어 설명해 주세요.

힌트 · ON DELETE CASCADE는 종속 레코드 동시 삭제, SET NULL은 외래 키 값을 NULL로 설정, RESTRICT는 참조 레코드 존재 시 삭제 방지입니다. 데이터의 관계와 비즈니스 로직에 따라 적절히 선택해야 합니다.

참조 무결성데이터 일관성종속성 관리CASCADESET NULL

모범답안

외래 키 제약 조건의 ON DELETE 옵션은 데이터의 일관성을 유지하는 데 중요한 역할을 합니다.

ON DELETE CASCADE는 주 테이블의 레코드가 삭제될 때, 해당 레코드를 참조하는 모든 외래 키 레코드도 함께 삭제해야 하는 경우에 사용합니다. 예를 들어, '주문' 테이블이 '고객' 테이블을 참조할 때, 고객 정보가 삭제되면 해당 고객의 주문 정보도 함께 삭제하는 것이 자연스러울 때 선택합니다.

ON DELETE SET NULL은 주 테이블의 레코드가 삭제될 때, 외래 키 값을 NULL로 설정하는 옵션입니다. 이 옵션은 외래 키 컬럼이 NULL 값을 허용해야 사용할 수 있습니다. 예를 들어, '직원' 테이블이 '부서' 테이블을 참조할 때, 부서가 삭제되어도 직원은 남아있을 수 있지만, 더 이상 특정 부서에 소속되지 않음을 나타내기 위해 NULL로 설정할 수 있습니다.

ON DELETE RESTRICT는 주 테이블의 레코드를 참조하는 외래 키 레코드가 존재하면 삭제를 막는 옵션입니다. 데이터의 무결성을 가장 강력하게 유지하고 싶을 때 사용합니다. 예를 들어, '상품' 테이블을 '주문상세' 테이블이 참조할 때, 주문 상세 정보가 있는 상품은 삭제할 수 없도록 하여 데이터의 일관성을 유지할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 데이터베이스 설계 면접 질문

← 데이터베이스 설계 면접 질문 전체 보기