정보모델링의 참조 무결성
참조 무결성은 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는 편리하지만 연쇄 삭제로 인한 의도치 않은 데이터 손실을 유발할 수 있어 신중하게 사용해야 합니다.
AI가 해킹 도구로 진화했습니다. 27초 만에 공격 코드 작성, AI 봇의 랜섬웨어 협상, GPU 탈취까지—삼성SDS…
필기 시험의 접근통제 영역은 용어 하나만 알아도 풀리는 문제와 개념을 뒤집어 묻는 문제가 섞여 나옵니다.…
유튜브에 AI 자동 생성 영상이 넘쳐납니다. 진짜 크리에이터들은 어떻게 살아남아야 할까요? AI와 경쟁하는 3가지 생존…
이틀 전에 사이드카가 걸렸을 때만 해도 "한 번 놀란 장"으로 끝날 줄 알았는데요. 15일 아침…
오전 시황 글에 이어 장중 후속 정리입니다. 코스피는 개장 직후 5%대였던 낙폭이 오전 10시 전후에…
10월 15일 목요일 아침, 코스피가 전날 종가보다 5.59% 낮은 5,673.01로 출발했습니다. 장 시작 7분 만에…