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