
안녕하세요. 오늘은 SQL의 무결성에 대해 알아볼까 해요.
SQL의 무결성
무결성(Integrity, 온전함)은 결함이 없는 상태
즉 데이터의 결함이 없는 상태를 뜻하고,
정확성, 일관성, 신뢰성을 보장하는 개념이에요.
추가로 데이터의 `무결성`을 지키기 위해
제약조건(Constraints)이라는 옵션이 있는데요.
제약조건은 다음 포스팅 때 자세하게 설명 드릴게요.
다음은 무결성의 종류에 대해 알아볼까요?
1. 개체 무결성
개체 무결성은 모든 테이블이 고유한 행을 가지고 있는데요.
기본 키(Primary Key)를 통해 구현합니다.
개체 무결성은 비울 수 없고(Null 불가) 고유성이기 때문에 중복이 불가능해요.
CREATE TABLE Student (
student_id INT PRIMARY KEY,
name VARCHAR(50)
);
ex) 학번, 아이디, 주민등록번호 등
2. 참조 무결성
참조 무결성은 데이터 간의 관계를 정의할 때,
한 테이블이 반드시 테이블의 값을 '참조'하는 경우,
외래 키(Foriegn Key)를 통해 구현을 해요.
CREATE TABLE Enrollment (
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES Student(student_id)
);
ex) 학생 <-> 수강, 고객 <-> 주문, 게시글 <->댓글 등
3. 도메인 무결성
도메인 무결성은 테이블의 각 필드(열, 칼럼)가 정의된 도메인에 맞는 값을 가져야 함을 뜻해요.
데이터타입, 포맷, 범위 등이 적절하게 유지가 되도록 보장을 하고,
데이터 타입 지정, unsigned, 제약 조건(Check) 등을 통해 구현을 해요.
@ 도메인(Domain): '데이터타입, 길이, 가능한 값의 범위'로 구성
CREATE TABLE Student (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 0)
);
ex) 은행 계좌에 입금되는 금액 - 양의 정수만을 허용(unsigned)
점수에 입력되는 숫자 - 0에서 100 사이의 정수(Check)
4. 사용자 정의 무결성
사용자 정의 무결성은 특정 애플리케이션의 규칙에 따라 정의하는데요.
구현하고자 하는 비즈니스 규칙에 따라 애플리케이션의 특정 요구사항을 반영합니다.
CREATE TABLE Employee (
id INT PRIMARY KEY,
salary INT CHECK (salary >= 2000)
);
ex) 비밀번호 설정 (6 ~ 10자 이내, 영문 + 숫자 + 특수기호 조합)
연령 제한 (성인만 가입 가능 & 학생만 가입가능)
무결성의 설명과 구현방식을 표로 요약을 해봤어요.
| 무결성 종류 | 설명 | 구현 방식 |
| 도메인 무결성 | 데이터 타입, 범위, NULL 여부 제한 | NOT NULL, CHECK, DEFAULT |
| 개체 무결성 | 각 행의 고유성 유지 | PRIMARY KEY |
| 참조 무결성 | 테이블 간 관계 유지 | FOREIGN KEY |
| 사용자 정의 무결성 | 비즈니스 규칙 기반의 제약 | CHECK, 트리거 등 |
| 키 무결성 | 모든 키의 유일성과 유효성 유지 | PRIMARY/UNIQUE 키 |

여기까지 SQL의 무결성에 대해 알아봤는데요.
무결성을 알아가면서
데이터베이스를 안전하게, 믿을 수 있게 만들 수 있을 것 같아요.
'Backend > MySQL' 카테고리의 다른 글
| SQL - Select (6) | 2025.08.09 |
|---|---|
| SQL 제약조건 (8) | 2025.08.07 |
| SQL의 기초 - 데이터베이스 (10) | 2025.08.03 |
| MySQL 설치 및 적용방법 (5) | 2025.08.01 |
| MySQL 설치 전 확인 리스트 (2) | 2025.07.30 |