Backend/MySQL

SQL의 무결성

개발자의 첫 걸음 2025. 8. 5. 12:00

 

안녕하세요. 오늘은 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