티스토리 뷰
🔷 관계형 데이터베이스 무결성 제약 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
- python 알고리즘
- 알고리즘 문제풀이
- c언어
- 문제풀이
- 프로그래밍
- 그리디알고리즘
- 알고리즘문제풀이
- dfs
- 브루트포스
- 코딩
- 코딩테스트
- 문자열처리
- 상속
- 프로그래머스
- 동적계획법
- 코딩 테스트
- Python
- 객체지향
- 그리디
- 그래프 탐색
- 동적 계획법
- 문제 풀이
- HTML
- 파이썬코딩
- 알고리즘
- 백준
- 알고리즘기초
- 파이썬
- 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 |
