무결성
데이터가 정해진 규칙을 만족하는 상태입니다.
무결성 종류
1. 개체 무결성 (Entity Integrity)
PK는 NULL이거나 중복될 수 없음
CREATE TABLE users (
id INT PRIMARY KEY -- NULL 불가, 중복 불가
);
INSERT INTO users VALUES (NULL); -- X 에러
INSERT INTO users VALUES (1);
INSERT INTO users VALUES (1); -- X 에러 (중복)
2. 참조 무결성 (Referential Integrity)
FK는 참조하는 테이블에 존재해야 함
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT REFERENCES users(id) -- FK
);
INSERT INTO orders VALUES (1, 999); -- X 에러 (user 999 없음)
3. 도메인 무결성 (Domain Integrity)
컬럼 값이 정해진 범위/타입을 만족
CREATE TABLE users (
age INT CHECK (age >= 0 AND age <= 150),
email VARCHAR(100) NOT NULL
);
INSERT INTO users VALUES (-5, 'test@test.com'); -- X 에러
INSERT INTO users VALUES (25, NULL); -- X 에러
4. 고유 무결성 (Unique Integrity)
특정 컬럼 값이 중복되지 않음
CREATE TABLE users (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE
);
INSERT INTO users VALUES (1, 'a@a.com');
INSERT INTO users VALUES (2, 'a@a.com'); -- X 에러 (중복)
정리
| 무결성 | 규칙 | 제약조건 |
|---|---|---|
| 개체 무결성 | PK는 NULL/중복 불가 | PRIMARY KEY |
| 참조 무결성 | FK는 존재하는 값만 | FOREIGN KEY |
| 도메인 무결성 | 값이 범위/타입 만족 | CHECK, NOT NULL |
| 고유 무결성 | 중복 불가 | UNIQUE |
무결성 vs 정합성
| 무결성 | 정합성 | |
|---|---|---|
| 초점 | 규칙 준수 | 데이터 간 일치 |
| 예시 | age >= 0 | 주문 총액 = 상품 합계 |
| 보장 | DB 제약조건 | 트랜잭션, 애플리케이션 로직 |