405. 개체 무결성 (Entity Integrity)
⚠️ 이 문서는 데이터베이스 테이블에 저장되는 모든 데이터(행)가 "나는 누구인가?"를 완벽하게 증명할 수 있도록 강제하는, **가장 기본적이면서도 강력한 규칙인 '개체 무결성(기본 키 NULL 불가)'**을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 테이블의 **기본 키(Primary Key, PK)**를 구성하는 어떠한 속성도 빈값(Null)을 가질 수 없으며, 중복된 값을 가질 수도 없다는 절대 규칙이다.
- 이유: 데이터베이스에 들어있는 모든 줄(Tuple)은 서로 구별될 수 있는 독립적인 '개체(Entity)'여야 하는데, 기본 키가 비어있거나 중복되면 그 개체가 누구인지 식별할 수 없기 때문이다.
- 활용: 개발자가
INSERT쿼리를 날릴 때 기본 키를 빼먹거나, 이미 존재하는 기본 키를 넣으려고 하면 DBMS가 이 원칙에 따라 즉시 에러를 뱉어내고 차단한다.
Ⅰ. 개요: 이름 없는 유령을 막아라 (Context & Necessity)
우리가 학교 시스템에 '학생 테이블'을 만들었다. 기본 키는 학번이다.
- 상황 1 (Null 발생): 새로 전학 온 학생을 등록하려고 하는데, 아직 학번이 안 나와서 학번 칸을 비워두고(Null) 이름만 넣었다.
- 상황 2 (중복 발생): 전산 오류로 '김철수'와 '이영희'에게 똑같은 학번
1001번을 줬다.
만약 데이터베이스가 이 두 상황을 허락한다면 대참사가 일어난다. "저기 학번 없는 애 나와봐!"라고 하면 누굴 불러야 할지 모르고, "1001번 학생 성적표 출력해!"라고 하면 철수와 영희의 성적이 섞여서 나올 것이다.
이런 유령 데이터와 도플갱어 데이터를 원천 차단하기 위해 데이터베이스가 멱살을 잡고 지키는 규칙이 바로 개체 무결성이다.
📢 섹션 요약 비유: 개체 무결성은 **'주민등록증 발급소의 철칙'**과 같습니다. "1. 주민번호가 없는 사람은 존재할 수 없다. 2. 똑같은 주민번호를 가진 두 사람도 존재할 수 없다." 이 두 가지 철칙이 지켜져야만 국가가 국민(개체)을 1명씩 정확하게 구별할 수 있습니다.
Ⅱ. 개체 무결성의 2가지 수학적 조건 ★
어떤 컬럼이 기본 키(PK)로 지정되는 순간, 데이터베이스 엔진은 자동으로 다음 두 가지 검사 로직을 켭니다.
1. NOT NULL (널 불가)
- 기본 키는 절대 알 수 없는 값(Null)이나 비어있는 상태로 둘 수 없다.
- 만약 기본 키가
[학번 + 과목코드]처럼 두 개로 합쳐져 있다면(복합 키), 둘 중 하나라도 Null이 되면 개체 무결성 위반이다.
2. UNIQUE (유일성 보장)
- 테이블 안에 이미 존재하는 값과 똑같은 값을 또 넣을 수 없다.
- 100만 건의 데이터가 있어도, 기본 키 값은 100만 개가 모두 다르게 생겨야 한다.
Ⅲ. 실무 및 시험 문제 팁
정보처리 기사나 데이터베이스 시험에서 가장 많이 나오는 오답 유형이다.
- ❌ "개체 무결성은 모든 컬럼이 Null 값을 가지면 안 된다는 원칙이다." (틀림! 기본 키만 안 되면 된다. 나이나 주소 컬럼은 Null이어도 상관없다.)
- ❌ "기본 키로 쓰인 컬럼의 값은 나중에 다른 값으로 바꿀(UPDATE) 수 없다." (틀림! 바꿀 수는 있다. 단, 바꿀 때도 Null이 아니고 중복되지 않는 값으로만 바꿔야 한다.)
┌──────────────────────────────────────────────────────────────┐
│ 개체 무결성 (Entity Integrity) 위반 검사 시각화 │
├──────────────────────────────────────────────────────────────┤
│ │
│ [ 📦 학생 테이블 ] (기본 키: 학번) │
│ 학번(PK) │ 이름 │ 나이 │
│ ────────┼──────┼────── │
│ 1001 │ 김철수 │ 20 ◀── 정상 데이터 │
│ 1002 │ 이영희 │ NULL ◀── 정상 데이터 (일반 컬럼은 Null 가능!) │
│ │
│ [ 🚨 위반 사례 발생! ] │
│ NULL │ 박지성 │ 22 ◀── 개체 무결성 위반! (PK가 Null임) 💥 │
│ 1001 │ 손흥민 │ 21 ◀── 개체 무결성 위반! (PK가 1001로 중복) 💥 │
└──────────────────────────────────────────────────────────────┘
Ⅳ. 결론
"데이터의 존재 가치는 '식별'에서 시작된다." 관계형 데이터베이스(RDB)가 엑셀이나 메모장과 다른 가장 위대한 점은, 쓰레기 데이터(Garbage Data)가 시스템에 들어오는 것을 문지기처럼 막아준다는 것이다. 개체 무결성은 그 문지기가 들고 있는 가장 기초적인 무기다. 이 규칙이 무너지면 테이블에 있는 데이터가 1만 줄이든 10만 줄이든, 누구의 데이터인지 찾을 방법이 없어지므로 그 테이블은 즉시 '정보'로서의 가치를 상실하게 된다.
📌 관련 개념 맵
- 관련 무결성: 참조 무결성 (Referential Integrity - 406번 문서), 도메인 무결성
- 관련 제약조건: Primary Key (기본 키), NOT NULL, UNIQUE
- 이상 현상: 이 규칙을 지키려다 발생하는 문제가 바로 '삽입 이상(Insertion Anomaly - 402번 문서)'이다.
- 시스템 객체: 데이터 사전 (Data Dictionary - 이 제약조건들이 저장되는 곳)
👶 어린이를 위한 3줄 비유 설명
- 개체 무결성은 강아지 유치원에 강아지들을 등록하는 규칙이에요.
- 첫 번째 규칙! 목걸이(기본 키)가 없는 강아지는 유치원에 들어올 수 없어요. (NOT NULL)
- 두 번째 규칙! 목걸이에 적힌 번호가 똑같은 강아지 두 마리가 동시에 유치원에 다닐 수 없어요. (UNIQUE)