아무리 구조가 잘 짜인 데이터베이스라도, 그 안에 있는 데이터가 신뢰할 수 없다면 시스템 전체가 무너질 수 있습니다. 이를 막기 위해 반드시 지켜야 하는 것이 바로 데이터 무결성(Integrity)입니다. 이번 글에서는 데이터 무결성이 무엇인지, 그리고 이를 보장하기 위한 제약조건(Constraints)의 종류와 특징에 대해 알아보겠습니다.
1. 데이터 무결성이란?
데이터 무결성(Data Integrity)이란 데이터가 정확하고, 일관되며, 신뢰할 수 있는 상태를 의미합니다. 즉, 데이터가 잘못되거나 중복되거나 논리적으로 틀리지 않도록 보장하는 것이죠.
📌 무결성 = 데이터의 "정확성"과 "신뢰성"을 유지하는 능력
2. 무결성의 종류
무결성 종류 | 설명 |
개체 무결성 | 기본 키(PK)는 반드시 고유하고 NULL 불가 |
도메인 무결성 | 속성의 값은 정의된 데이터 타입, 범위 내에 있어야 함 |
참조 무결성 | 외래 키(FK)는 다른 테이블의 PK 값을 참조해야 함 |
사용자 정의 무결성 | 업무 규칙에 따라 별도로 정의 (예: 나이는 0보다 커야 함 등) |
3. 데이터 무결성을 위한 제약조건
SQL에서는 다양한 제약조건(Constraint)을 통해 무결성을 보장할 수 있습니다. 각 제약조건은 테이블 생성 시 명시하거나, 나중에 추가할 수 있습니다.
제약조건 | 설명 | 적용 대상 |
PRIMARY KEY | 테이블의 고유 식별자, 중복 불가, NULL 불가 | 한 개 컬럼 또는 복합 컬럼 |
UNIQUE | 고유한 값만 허용, NULL은 가능 | 중복 제한 |
NOT NULL | 반드시 값이 있어야 함 | 필수 입력 |
CHECK | 값의 범위나 조건 제한 (예: 급여 > 0) | 사용자 정의 |
FOREIGN KEY | 다른 테이블의 PK를 참조 | 참조 무결성 |
실무에서 PK와 FK는 필수, CHECK와 UNIQUE는 선택적으로 사용
4. 제약조건 정의 방법 (SQL 예제)
✔ 테이블 생성 시 제약조건 정의
CREATE TABLE Employees (
EmpID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Age INT CHECK (Age >= 18),
DeptID INT,
CONSTRAINT fk_dept FOREIGN KEY (DeptID) REFERENCES Departments(DeptID)
);
✔ ALTER TABLE로 제약조건 추가
ALTER TABLE Employees
ADD CONSTRAINT uc_name UNIQUE (Name);
마무리 및 요약
- 데이터 무결성은 정확한 데이터베이스 운영의 핵심
- 제약조건은 무결성을 보장하기 위한 SQL 도구
- 실무나 시험에서는 기본키, 외래키, 체크 조건 등이 자주 등장
정확하고 안정적인 시스템을 만들기 위해서는 초기 설계 단계부터 무결성을 고려하는 것이 매우 중요합니다.
🎯 TIP: SQLD 시험에서는 "다음 중 참조 무결성 제약조건은?", "CHECK 제약조건을 사용한 예는?"과 같은 문제들이 출제됩니다.
SQL 구문을 해석할 수 있는 능력도 함께 키우는 것이 좋습니다.
'프로그래밍' 카테고리의 다른 글
SELECT 구문과 조건절 완전정복 (4) | 2025.08.04 |
---|---|
SQL 기본 문법 총정리 (DDL, DML, DCL) (0) | 2025.08.02 |
정규화와 이상 현상: 데이터 구조를 더 깔끔하고 안정적으로 만드는 법 (3) | 2025.08.01 |
데이터 모델과 성능: 성능을 고려한 데이터베이스 모델링 전략 (1) | 2025.08.01 |
데이터 모델의 이해 - SQLD 필수 개념 정리 (2) | 2025.08.01 |