[제138회 정보관리기술사 1교시 9번] 정보모델링의 참조 무결성 — 외래키와 ON DELETE 옵션 완전 해설

📌 원문 문제

정보모델링의 참조 무결성

출제 의도 분석

참조 무결성은 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는 편리하지만 연쇄 삭제로 인한 의도치 않은 데이터 손실을 유발할 수 있어 신중하게 사용해야 합니다.

참조 무결성을 실무 테이블 설계에 적용하기

참조 무결성은 외래키 값이 반드시 부모 테이블에 존재하는 키이거나 NULL이어야 한다는 규칙입니다. 존재하지 않는 고객의 주문이 생기는 고아 레코드를 DB가 직접 막아 줍니다.

부모 행이 삭제·수정될 때의 동작은 옵션으로 정합니다. RESTRICT/NO ACTION은 자식이 있으면 거부, CASCADE는 자식도 함께 삭제·수정, SET NULL은 자식의 외래키를 NULL로, SET DEFAULT는 기본값으로 바꿉니다.

  • 선택 기준: 주문 이력처럼 보존해야 하는 데이터는 CASCADE 삭제를 피하고 논리 삭제(삭제 플래그)를 씁니다.
  • CASCADE 위험: 한 줄 삭제가 연쇄적으로 대량 삭제로 번질 수 있습니다.
  • 성능: 외래키 컬럼에 인덱스를 만들어 두지 않으면 부모 삭제와 조인이 느려질 수 있습니다.
  • 대규모 서비스: 샤딩·마이크로서비스 환경에서는 DB 외래키 대신 애플리케이션 차원의 정합성 관리를 택하기도 합니다.
  • 무결성 종류: 개체(기본키), 참조(외래키), 도메인(값 범위) 무결성과 함께 정리합니다.
정리 포인트
참조 무결성의 의미와 동작 옵션, 실무 선택 기준을 함께 쓰면 기술사 답안다운 깊이가 생깁니다.

※ 이 글은 학습·참고용 정리입니다. 제품 사양과 표준 개정 사항은 공식 문서에서 최신 내용을 확인하세요.

Leave a Comment