티스토리 뷰

반응형

🔷 관계형 데이터베이스 무결성 제약 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
soldat

위 표에서는 나이에 두 가지 문제가 있습니다. 첫 번째는 -5처럼 나이가 음수로 저장된 경우입니다. 현실적으로 나이는 음수가 될 수 없으므로 데이터의 의미가 사라집니다. 두 번째는 ABC처럼 숫자가 아닌 문자열이 저장된 경우입니다. 이 역시 데이터의 형식이 맞지 않아서 잘못된 상태입니다. 이런 데이터가 쌓이면 통계나 계산 시 오류를 유발합니다.


🔷 지켜진 데이터 상태와 장점

이름 나이
홍길동 25
이순신 30
강감찬 40

모든 값이 0 이상의 정수이며, 사람의 나이로 적절합니다. 이 상태에서는 통계나 계산을 할 때 오류가 발생하지 않고, 데이터의 의미가 유지됩니다. 데이터베이스가 관리하는 값이 일관성을 유지하고, 사용자도 신뢰할 수 있는 상태입니다.


✅ 무결성 제약 비교

무결성 종류 보장하는 것
개체 무결성 각 행을 유일하게 구분할 수 있도록 함
참조 무결성 부모-자식 관계를 올바르게 유지함
도메인 무결성 값의 형식과 범위를 적절하게 유지함

✅ 정리

관계형 데이터베이스에서 무결성 제약은 데이터의 신뢰성과 정확성을 유지하기 위한 핵심 요소입니다. 무결성 제약이 없으면 데이터베이스에 잘못된 데이터가 쉽게 저장되고, 업무에 혼란이 발생할 수 있습니다.

  • 개체 무결성은 각 데이터가 고유하게 구분되도록 보장합니다.
  • 참조 무결성은 서로 연결된 테이블 간 관계가 올바르게 유지되도록 보장합니다.
  • 도메인 무결성은 컬럼 값이 의미 있는 형식과 범위를 유지하도록 보장합니다.

데이터베이스를 설계할 때 이 세 가지 무결성을 반드시 고려해야 하며, 이를 통해 데이터베이스는 안정적으로 운영될 수 있습니다. 올바른 데이터는 정확한 의사결정을 가능하게 하고, 시스템의 신뢰성을 높이는 기반이 됩니다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
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
글 보관함
반응형