티스토리 뷰
🔷 관계형 데이터베이스 무결성 제약 3가지 — 개체, 참조, 도메인 완벽 이해
✅ 무결성이란
무결성(Integrity)은 데이터베이스에 저장된 데이터가 항상 정확하고 일관되게 유지되도록 보장하는 제약 조건입니다. 제약 없이 데이터를 저장하거나 수정하면, 중복되거나 모순되는 데이터가 쉽게 발생할 수 있습니다. 이런 잘못된 데이터가 시스템에 남아 있으면 업무에 혼란을 주고 데이터의 신뢰성을 크게 떨어뜨리게 됩니다. 따라서 관계형 데이터베이스 관리 시스템(DBMS)은 무결성 제약을 이용해 데이터를 올바르게 유지하도록 강제합니다.
이 글에서는 관계형 데이터베이스에서 가장 기본적인 무결성 제약인 개체 무결성, 참조 무결성, 도메인 무결성을 차례대로 설명합니다. 각각 지켜지지 않은 데이터 상태와 지켜진 상태를 실제 예시와 함께 설명하고, 왜 그렇게 되는지를 상세히 풀이합니다.
1️⃣ 개체 무결성
🔷 정의
개체 무결성(Entity Integrity)은 테이블에 저장된 각각의 행(row)을 명확하게 구분할 수 있도록 하는 규칙입니다. 이를 위해 기본 키(Primary Key)를 설정하고, 그 값이 비어 있지 않고 중복되지 않도록 강제합니다. 즉, 테이블 안의 모든 행이 고유해야 하며, 각 행을 식별할 수 없는 상태가 되면 안 됩니다.
🔷 지켜지지 않은 데이터 상태와 문제점
학번 | 이름 |
---|---|
1001 | 홍길동 |
1001 | 이순신 |
NULL | 강감찬 |
위 표에서는 두 가지 문제가 있습니다. 첫 번째로, 1001
이라는 학번이 두 번 나타납니다. 이 상태에서 학번이 1001인 학생의 이름을 알려 달라
고 하면 홍길동과 이순신이 동시에 선택되어 정확한 결과를 알 수 없습니다. 데이터베이스가 하나의 행을 선택해야 하는데, 중복된 값 때문에 혼란이 발생합니다.
두 번째로, NULL
값이 존재합니다. NULL
은 데이터가 없다는 뜻이므로, 해당 행이 누구의 데이터인지 전혀 알 수 없습니다. 이 경우에는 행 자체가 의미 없는 데이터가 됩니다.
🔷 지켜진 데이터 상태와 장점
학번 | 이름 |
---|---|
1001 | 홍길동 |
1002 | 이순신 |
1003 | 강감찬 |
이 표에서는 모든 학번이 유일하며 비어 있지 않습니다. 각각의 행이 서로 다른 학번을 가지기 때문에, 학번=1002
라고 지정하면 반드시 하나의 행만 선택됩니다. 데이터베이스가 정확하게 특정 행을 찾을 수 있고, 데이터의 신뢰성이 높아집니다. 즉, 데이터베이스가 각 행의 고유성을 유지하며 정확하게 동작할 수 있는 상태입니다.
2️⃣ 참조 무결성
🔷 정의
참조 무결성(Referential Integrity)은 두 개의 테이블이 서로 연결될 때 그 관계가 올바르게 유지되도록 하는 규칙입니다. 자식 테이블에 저장된 외래 키(Foreign Key)는 반드시 부모 테이블에 존재하는 값이어야 합니다. 부모 테이블에 없는 데이터를 자식 테이블이 가리키면 관계가 끊어져 버립니다.
🔷 지켜지지 않은 데이터 상태와 문제점
고객 테이블
고객ID | 이름 |
---|---|
1 | 홍길동 |
2 | 이순신 |
주문 테이블
주문ID | 고객ID |
---|---|
101 | 1 |
102 | 3 |
주문 테이블에 고객ID=3
이 있습니다. 하지만 고객 테이블에는 고객ID=3
이 존재하지 않습니다. 이 상태에서는 주문ID=102
가 누구의 주문인지 알 수 없고, 데이터베이스의 관계가 깨진 상태가 됩니다. 즉, 자식 테이블의 데이터가 부모 테이블에 대응되지 않는 고아 데이터가 되어 버립니다. 데이터 간의 연결성이 사라지고, 조회나 집계 결과가 왜곡됩니다.
🔷 지켜진 데이터 상태와 장점
고객 테이블
고객ID | 이름 |
---|---|
1 | 홍길동 |
2 | 이순신 |
주문 테이블
주문ID | 고객ID |
---|---|
101 | 1 |
102 | 2 |
이 상태에서는 주문 테이블의 고객ID
가 모두 고객 테이블에 존재합니다. 주문ID=102
를 조회하면 고객ID=2
로 정확히 이순신의 주문임을 알 수 있습니다. 두 테이블이 정확하게 연결되어 있으므로, 데이터베이스의 관계가 유지되고, 데이터 신뢰성이 확보됩니다.
3️⃣ 도메인 무결성
🔷 정의
도메인 무결성(Domain Integrity)은 특정 컬럼에 저장되는 값이 정해진 형식과 범위를 지키도록 하는 규칙입니다. 컬럼의 데이터 타입, 길이, 허용 범위 등을 설정하여, 의미 없는 값이 들어가지 않도록 강제합니다.
🔷 지켜지지 않은 데이터 상태와 문제점
이름 | 나이 |
---|---|
홍길동 | 25 |
이순신 | -5 |
강감찬 | ABC |
위 표에서는 나이
에 두 가지 문제가 있습니다. 첫 번째는 -5
처럼 나이가 음수로 저장된 경우입니다. 현실적으로 나이는 음수가 될 수 없으므로 데이터의 의미가 사라집니다. 두 번째는 ABC
처럼 숫자가 아닌 문자열이 저장된 경우입니다. 이 역시 데이터의 형식이 맞지 않아서 잘못된 상태입니다. 이런 데이터가 쌓이면 통계나 계산 시 오류를 유발합니다.
🔷 지켜진 데이터 상태와 장점
이름 | 나이 |
---|---|
홍길동 | 25 |
이순신 | 30 |
강감찬 | 40 |
모든 값이 0 이상의 정수이며, 사람의 나이로 적절합니다. 이 상태에서는 통계나 계산을 할 때 오류가 발생하지 않고, 데이터의 의미가 유지됩니다. 데이터베이스가 관리하는 값이 일관성을 유지하고, 사용자도 신뢰할 수 있는 상태입니다.
✅ 무결성 제약 비교
무결성 종류 | 보장하는 것 |
---|---|
개체 무결성 | 각 행을 유일하게 구분할 수 있도록 함 |
참조 무결성 | 부모-자식 관계를 올바르게 유지함 |
도메인 무결성 | 값의 형식과 범위를 적절하게 유지함 |
✅ 정리
관계형 데이터베이스에서 무결성 제약은 데이터의 신뢰성과 정확성을 유지하기 위한 핵심 요소입니다. 무결성 제약이 없으면 데이터베이스에 잘못된 데이터가 쉽게 저장되고, 업무에 혼란이 발생할 수 있습니다.
- 개체 무결성은 각 데이터가 고유하게 구분되도록 보장합니다.
- 참조 무결성은 서로 연결된 테이블 간 관계가 올바르게 유지되도록 보장합니다.
- 도메인 무결성은 컬럼 값이 의미 있는 형식과 범위를 유지하도록 보장합니다.
데이터베이스를 설계할 때 이 세 가지 무결성을 반드시 고려해야 하며, 이를 통해 데이터베이스는 안정적으로 운영될 수 있습니다. 올바른 데이터는 정확한 의사결정을 가능하게 하고, 시스템의 신뢰성을 높이는 기반이 됩니다.
'정보처리기사' 카테고리의 다른 글
NAT(Network Address Translation)란 무엇인가 (1) | 2025.07.16 |
---|---|
클라우드 서비스의 3가지 모델(IaaS, PaaS, SaaS) (1) | 2025.07.15 |
소프트웨어 테스트 커버리지 쉽게 암기 정리 (2) | 2025.07.14 |
GoF 디자인 패턴 23가지 완벽 마스터하기: 핵심 특징 및 요약 (1) | 2025.07.13 |
소프트웨어 테스트 커버리지: 개념, 코드, 테스트케이스별 퍼센트까지 완전 정리 (0) | 2025.07.13 |
- Total
- Today
- Yesterday
- 알고리즘문제풀이
- 동적계획법
- 프로그래밍
- 알고리즘기초
- DP
- C++ 알고리즘
- 브루트포스
- Python
- 알고리즘 문제풀이
- 그리디
- 그리디알고리즘
- 알고리즘
- 객체지향
- 그래프 탐색
- 문자열처리
- 파이썬코딩
- c++알고리즘
- 백준
- 인접 행렬
- 코딩테스트
- dfs
- 파이썬
- 코딩
- python 알고리즘
- 동적 계획법
- 코딩 테스트
- C++
- c언어
- 문제풀이
- 문제 풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |