📌 원문 문제
정보모델링의 참조 무결성
출제 의도 분석
참조 무결성은 DB 설계의 기본 중의 기본입니다. 외래키 제약과 ON DELETE/UPDATE 옵션을 실제 시나리오와 연결하여 설명하면 실용적인 답안이 됩니다. ERD 개념과 연결해서 부모-자식 테이블 관계를 그림으로 설명하면 효과적입니다.
1. 무결성 제약의 종류
| 종류 | 설명 |
|---|---|
| 개체 무결성 | 기본키는 NULL이나 중복값 불가 |
| 참조 무결성 | 외래키는 참조 테이블의 기본키에 존재하는 값만 허용 |
| 도메인 무결성 | 속성값은 정의된 도메인 범위 내에 있어야 함 |
| 사용자 정의 무결성 | 비즈니스 규칙에 따른 제약 (CHECK 등) |
2. 참조 무결성 개념
참조 무결성(Referential Integrity)이란 자식 테이블의 외래키(FK) 값은 반드시 부모 테이블의 기본키(PK)에 존재하거나 NULL이어야 한다는 규칙입니다. 이를 통해 고아 레코드(Orphan Record) — 참조 대상 없는 레코드 — 의 발생을 방지합니다.
3. ON DELETE / ON UPDATE 옵션
| 옵션 | 동작 | 사용 시나리오 |
|---|---|---|
| CASCADE | 부모 삭제/변경 시 자식도 연쇄 처리 | 주문 삭제 시 주문상세 자동 삭제 |
| SET NULL | 부모 삭제 시 자식 FK를 NULL로 설정 | 담당자 퇴직 시 담당자 필드를 NULL |
| SET DEFAULT | 부모 삭제 시 자식 FK를 기본값으로 | 카테고리 삭제 시 ‘미분류’로 변경 |
| NO ACTION/RESTRICT | 자식이 참조 중이면 부모 삭제/변경 거부 | 참조되는 상품 삭제 시도 시 오류 발생 |
4. ERD에서의 참조 무결성
-- 고객(부모) 테이블
CREATE TABLE Customer (
cust_id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 주문(자식) 테이블 — 참조 무결성 설정
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
cust_id INT,
FOREIGN KEY (cust_id) REFERENCES Customer(cust_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
핵심 정리
참조 무결성은 데이터 일관성의 핵심 보장 수단입니다. 옵션 선택 시 비즈니스 로직을 고려해야 하며, CASCADE는 편리하지만 연쇄 삭제로 인한 의도치 않은 데이터 손실을 유발할 수 있어 신중하게 사용해야 합니다.