정보처리기사/데이터베이스 활용

무결성 제약조건(Integrity Constraints)

glorypang 2025. 10. 15. 20:54
728x90
반응형
SMALL

1) 개체 무결성 (Entity Integrity)

의미

  • 각 행(튜플)을 고유하게 식별하는 기본키(PK)NULL·중복 불가.

핵심 포인트

  • PK는 한 컬럼 또는 복합 컬럼 가능
  • PK 변경은 신중(참조 연쇄 영향)

예시

CREATE TABLE Member (
  member_id INT PRIMARY KEY,   -- NOT NULL + UNIQUE 의미
  name      VARCHAR(30) NOT NULL
);

2) 참조 무결성 (Referential Integrity)

의미

  • 외래키(FK) 값은 부모 테이블의 기본키/유니크키에 존재해야 하거나 NULL이어야 함.

핵심 포인트

  • 참조 동작: `ON DELETE/UPDATE` + `CASCADE | RESTRICT/NO ACTION | SET NULL | SET DEFAULT`
  • FK 컬럼의 타입/길이는 부모 키와 일치

예시

CREATE TABLE Orders (
  order_id  INT PRIMARY KEY,
  member_id INT,
  FOREIGN KEY (member_id)
    REFERENCES Member(member_id)
    ON DELETE SET NULL
    ON UPDATE CASCADE
);

3) 속성 무결성 (Attribute Integrity)

의미

  • 속성(컬럼) 값은 정의된 필수 여부, 형식, 기본값 등을 충족해야 함.

핵심 포인트

  • `NOT NULL`, `DEFAULT`, 길이/형식 제약
  • 컬럼 레벨의 실무적 품질 보장

예시

CREATE TABLE Product (
  product_id INT PRIMARY KEY,
  name       VARCHAR(50) NOT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

4) 키 무결성 (Key Integrity)

의미

  • 행을 유일 식별하게 하는 후보키/기본키/대체키/슈퍼키에 관한 제약.

핵심 포인트

  • UNIQUE: 후보키 보장(단, NULL 허용 여부는 DBMS별 규칙)
  • 복합 키: (`col1, col2`) 같이 조합 유일성 보장

예시

CREATE TABLE MemberUnique (
  member_id INT PRIMARY KEY,          -- 기본키
  email     VARCHAR(100) UNIQUE       -- 대체키(후보키)
);

5) 사용자 정의 무결성 (User-Defined / Business Integrity)

의미

  • 도메인/키/참조만으로 표현 어려운 업무 규칙을 제약으로 구현.

핵심 포인트

  • 단순 규칙: `CHECK`
  • 복잡 규칙: 트리거/프로시저/뷰로 보조
  • 트랜잭션 단위 검증이 필요하면 지연검사(DEFERRABLE) 고려(DBMS 의존)

예시

CREATE TABLE OrderItem (
  order_id   INT,
  product_id INT,
  qty        INT CHECK (qty > 0 AND qty <= 100),
  PRIMARY KEY (order_id, product_id),
  FOREIGN KEY (order_id)  REFERENCES Orders(order_id),
  FOREIGN KEY (product_id) REFERENCES Product(product_id)
);
-- 예: "주문 총액 = 항목 합계"는 CHECK로 어렵고 트리거나 뷰/프로시저로 처리

6) 도메인 무결성 (Domain Integrity)

의미

  • 각 속성 값이 정해진 도메인(타입/범위/집합/형식)을 만족해야 함.

핵심 포인트

  • 타입: `INT`, `DATE`, `VARCHAR(n)`
  • 범위/집합: `CHECK (price >= 0), CHECK (grade IN ('A','B','C'))`
  • 형식(패턴): 일부 DB는 `CHECK` + 함수/정규식 제공

예시

CREATE TABLE GradeRule (
  id    INT PRIMARY KEY,
  grade CHAR(1) NOT NULL CHECK (grade IN ('A','B','C')),
  price INT NOT NULL CHECK (price >= 0)
);

비교 표

분류  핵심 목적  대표 제약
개체 무결성 행의 고유 식별 `PRIMARY KEY`
참조 무결성 참조 일관성 `FOREIGN KEY` + `ON DELETE/UPDATE`
속성 무결성 컬럼의 필수/형식/초깃값 `NOT NULL`, `DEFAULT`
키 무결성 유일성 보장 `PRIMARY KEY`, `UNIQUE`
사용자 정의 업무 규칙 반영 `CHECK`, 트리거/프로시저
도메인 무결성 타입·범위·집합 제약 타입 선언, `CHECK`

 

 

728x90
반응형
LIST