정보모델링의 참조 무결성
참조 무결성은 DB 설계의 기본 중의 기본입니다. 외래키 제약과 ON DELETE/UPDATE 옵션을 실제 시나리오와 연결하여 설명하면 실용적인 답안이 됩니다. ERD 개념과 연결해서 부모-자식 테이블 관계를 그림으로 설명하면 효과적입니다.
| 종류 | 설명 |
|---|---|
| 개체 무결성 | 기본키는 NULL이나 중복값 불가 |
| 참조 무결성 | 외래키는 참조 테이블의 기본키에 존재하는 값만 허용 |
| 도메인 무결성 | 속성값은 정의된 도메인 범위 내에 있어야 함 |
| 사용자 정의 무결성 | 비즈니스 규칙에 따른 제약 (CHECK 등) |
참조 무결성(Referential Integrity)이란 자식 테이블의 외래키(FK) 값은 반드시 부모 테이블의 기본키(PK)에 존재하거나 NULL이어야 한다는 규칙입니다. 이를 통해 고아 레코드(Orphan Record) — 참조 대상 없는 레코드 — 의 발생을 방지합니다.
| 옵션 | 동작 | 사용 시나리오 |
|---|---|---|
| CASCADE | 부모 삭제/변경 시 자식도 연쇄 처리 | 주문 삭제 시 주문상세 자동 삭제 |
| SET NULL | 부모 삭제 시 자식 FK를 NULL로 설정 | 담당자 퇴직 시 담당자 필드를 NULL |
| SET DEFAULT | 부모 삭제 시 자식 FK를 기본값으로 | 카테고리 삭제 시 ‘미분류’로 변경 |
| NO ACTION/RESTRICT | 자식이 참조 중이면 부모 삭제/변경 거부 | 참조되는 상품 삭제 시도 시 오류 발생 |
-- 고객(부모) 테이블
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는 편리하지만 연쇄 삭제로 인한 의도치 않은 데이터 손실을 유발할 수 있어 신중하게 사용해야 합니다.
요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…
공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…
주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…
배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…
통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…