문서 읽는 데 51분 · 24강 · 3과목 · 데이터베이스 구축

관계 데이터 모델

목차 23
전체 59강 중 24강 · 3과목 · 데이터베이스 구축

23강이 데이터의 설계 청사진(E-R 다이어그램)을 그리는 단계였다면, 24강은 그 청사진이 실제 컴퓨터 안에서 어떤 모양의 테이블로 안착하는가다. 관계 모델이 무엇이고(E.F. 코드 1970·2차원 테이블) → 릴레이션은 어떤 구조이고(스키마·인스턴스·튜플·속성) → 행과 열을 어떻게 세고(카디널리티·디그리) → 행을 어떻게 식별하고(키 5종) → 데이터의 정합성을 어떻게 지키는가(무결성 3종)를 관통한다. 점수밭은 릴레이션 구조·키 5종·무결성 3종 — 논리 데이터베이스 설계 단원의 거의 매회 출제처다.

핵심 암기: 카디널리티 = 행(튜플) 수 카·기·행·튜플 · 디그리 = 열(속성) 수 디·차·열·속성 · 키 5종 슈후기대외(슈퍼·후보·기본·대체·외래) · 무결성 3종 개참도(개체·참조·도메인)


관계 데이터 모델과 E-R 변환

관계 데이터 모델 정의 — E.F. 코드 1970 ·관계 데이터 모델·

[정의] 관계 데이터 모델(Relational Data Model) = 데이터를 2차원 테이블(릴레이션) 형태로 표현하는 데이터 모델. 1970년 E.F. 코드(Edgar F. Codd) 가 IBM 논문(A Relational Model of Data for Large Shared Data Banks)에서 제안. 관계대수·관계해석에 수학적 기반을 둔, 50년 넘게 OLTP 시장의 표준 모델이다.

[표] 논리적 데이터 모델 4종 — 그중 ③ 관계형이 현재 주류(23강 계네관객 회수).

모델 구조 시대 N:M 비고
계층형 트리(Tree) 1960s ❌ (1:N만) 부모 하나뿐
네트워크형 그래프(Graph) 1970s ✅ 다중 부모
관계형 2차원 테이블 1970s ~ 현재 ✅ 현재 주류 · 24강 본격
객체지향형 객체+관계 1990s ~ ✅ 한정된 영역

🔑 암기 관계 데이터 모델 = E.F. 코드(1970)·2차원 테이블. 관계대수 제안자도 같은 사람. 4종 중 N:M을 못 그리는 건 계층형 하나뿐(트리라서). ⚠️ 함정 '관계 데이터 모델 = 관계대수' ❌(→ 관계 데이터 모델은 표로 보는 모델 개념, 관계대수는 그 위에 돌리는 연산 4종 σ·π·⋈·÷ — 25강) / '객체지향 데이터 모델 제안자 = 코드' ❌(→ 객체지향은 1980년대 별도 흐름). 🎯 빈출 제안자·연도 매칭, 논리 모델 4종 구분. 간헐. 💡 보충 관계형이 50년 표준인 이유는 '행과 열이 있는 표' 한 문장의 단순함 + 집합론 기반 수학적 엄밀성 + 선언적 SQL. 누구나 만져본 엑셀 스프레드시트 한 장이 곧 릴레이션 한 개라는 친숙함이 핵심이다.

E-R → 관계 모델 변환 4규칙 ·E-R 변환·

[정의] E-R 다이어그램(23강 산출물)이 실제 테이블로 변환되는 규칙은 4가지. 개체·속성은 그대로 1:1 변환되고, 다중값과 N:M만 별도 테이블로 분리된다.

[표] 변환 4대 규칙.

# ERD 요소 → 관계 모델 변환 본질
① 개체(사각형 □) → 릴레이션(테이블) 1개 개체 → 테이블
② 속성(타원 ○) → 컬럼(속성) 1개 속성 → 헤더 한 칸
③ 다중값 속성(이중 타원 ⊙) → 별도 릴레이션 분리 1NF 위반 방지
④ 관계(마름모 ◇) → 카디널리티에 따라 분기 FK 또는 연결 테이블

[표] ④번 관계 변환 — 카디널리티별 3분기.

카디널리티 변환 방식 예시
1 : 1 어느 한쪽에 FK 1개 추가 사용자 ↔ 프로필
1 : N N쪽에 FK 추가(1쪽 PK를 가리킴) 부서 ↔ 사원 — 사원.부서번호 FK
N : M 연결 테이블 별도 생성 + 양쪽 FK + 복합 PK 학생 ↔ 과목 — enrollment 별도

🔑 암기 개체→테이블 / 속성→컬럼 / 다중값→별도 테이블 / 관계→카디널리티 분기. 외래키는 항상 많은 쪽(N쪽)에 붙는다. ⚠️ 함정 '다중값 속성은 같은 테이블에 콤마로 저장' ❌(→ 별도 테이블 분리) / '1:N은 1쪽에 FK 추가' ❌(→ N쪽에 FK) / 'N:M은 한 테이블에 펼친다' ❌(→ 연결 테이블 별도 생성). 🎯 빈출 변환 규칙·FK 위치(N쪽). 간헐~보통. 💡 보충 다중값과 N:M을 별도 테이블로 빼는 건 둘 다 '한 칸에 여러 값을 욱여넣지 말라'는 같은 원칙 — 속성 원자성(1NF)의 첫 다리다.

N:M → 3 테이블 분해 — enrollment 시그니처 ·N:M 분해·

[정의] 24강의 상징 예제 — 학생-과목 N:M → student·course·enrollment 3 테이블 분해. N:M 관계는 가운데에 연결 테이블을 끼우고, 양쪽 PK를 외래키로 가리키며, 그 둘을 묶어 복합 PK로 삼는다.

[표] 3 테이블 분해 구조.

테이블 역할 키
student 학생 개체 PK: 학번
course 과목 개체 PK: 과목번호
enrollment 연결 테이블(N:M 분해) 복합 PK: (학번, 과목번호) + 양쪽 FK
텍스트
 [학생] ──── N:M ──── [과목]          ERD: 다대다 관계
                ↓ 분해
 student        enrollment            course
 (학번 PK)      (학번 FK → student     (과목번호 PK)
                 과목번호 FK → course
                 복합 PK = 두 FK 묶음
                 + 성적·수강년도 부가 속성)

🔑 암기 N:M은 가운데 연결 테이블 + 양쪽 FK로 PK를 가리킨다. 연결 테이블 PK = 양쪽 FK를 묶은 복합 PK(한 학생이 같은 과목 두 번 등록 ❌). ⚠️ 함정 'N:M은 한 테이블에 저장 가능' ❌(→ 연결 테이블 분해, 안 하면 1NF 위반) / '연결 테이블의 PK는 단일 컬럼' ❌(→ 복합 PK 또는 별도 ID + 양쪽 UNIQUE). 🎯 빈출 N:M 분해 구조·복합 PK. 보통. 💡 보충 이 한 예제가 25강 관계대수(student ⋈ enrollment ⋈ course)·26강 DDL(CREATE TABLE ... FOREIGN KEY)·27강 DML(다중 조인 SELECT)로 계속 이어진다. 이커머스 주문 ↔ 상품 → 주문항목도 같은 결.


릴레이션 구조 — 스키마·튜플·속성·카디널리티

릴레이션 구조 — 스키마 vs 인스턴스 ·릴레이션 구조·1순위·

[정의] 릴레이션(Relation) = 행과 열로 구성된 2차원 테이블. 구조는 스키마(헤더·설계) 와 인스턴스(본문·데이터) 두 부분으로 나뉜다 — 엑셀 시트 한 장으로 한방에 시각화된다.

텍스트
 [student 릴레이션 = 엑셀 시트 한 장]

 ┌─ 스키마(1행 헤더 · 구조 정의) ──────────
 │  학번      이름    학년   학과
 ├──────────────────────────────────────
 │  2024001   김철수   2     컴퓨터
 │  2024002   이영희   3     경영        ← 인스턴스(본문 · 실제 데이터)
 │  2024003   박민수   1     통계
 └──────────────────────────────────────
   한 열 ↓ = 속성(Attribute)      한 행 → = 튜플(Tuple)

[표] 스키마 vs 인스턴스.

구분 정의 엑셀 비유 변경 시점
릴레이션 스키마(Schema) 헤더·구조 정의 — 속성명·도메인·제약 1행 헤더 + 데이터 타입 설계 시(DDL) · 거의 고정
릴레이션 인스턴스(Instance) 본문·실제 데이터 — 튜플들의 집합 본문 데이터 운영 시(DML) · 매 순간 변함

🔑 암기 릴레이션 = 스키마 + 인스턴스. 스키마는 거의 고정, 바뀌는 건 인스턴스. ⚠️ 함정 '스키마가 매 순간 바뀐다' ❌(→ 인스턴스가 바뀜) / 'INSERT가 스키마를 바꾼다' ❌(→ INSERT는 인스턴스만 갱신·DML / 스키마는 DDL만) / '인스턴스 = 설계도' ❌(→ 인스턴스는 본문, 설계도는 스키마). 🎯 빈출 스키마·인스턴스 분별. 간헐. 💡 보충 운영 중 스키마 변경(ALTER TABLE)은 락이 걸려 신중히, 인스턴스 관리(INSERT·DELETE)는 수시로 — 스키마=느림, 인스턴스=빠름이 함정의 본질.

튜플과 속성 — 각 4동의어 ·튜플·속성·1순위·

[정의] 릴레이션의 가로 한 줄 = 튜플(Tuple), 세로 한 칸 = 속성(Attribute). 둘 다 시험에 4개씩 동의어가 나온다.

[표] 튜플·속성 4동의어 매칭 — '같은 것을 모두 고르시오' 단골.

구분 방향 동의어 4종
튜플(Tuple) 가로(행) 튜플 · 행(Row) · 레코드(Record) · 인스턴스(Instance)
속성(Attribute) 세로(열) 속성 · 열(Column) · 필드(Field) · 프로퍼티(Property)

🔑 암기 튜플 = 행·레코드·Row·Instance / 속성 = 열·필드·Column·Property. 한 줄이 한 사람의 모든 정보(튜플), 한 칸이 한 항목의 모든 값(속성). ⚠️ 함정 '튜플 = 컬럼' ❌(→ 튜플은 행, 컬럼은 속성) / '속성 = 행' ❌(→ 속성은 열) / '튜플 = 인스턴스' ✅(같은 말). 🎯 빈출 4동의어 매칭이 매년 단골. 보통. 💡 보충 다음 카드에서 튜플 수를 세면 카디널리티, 속성 수를 세면 디그리다.

카디널리티 = 행 수 · 디그리 = 열 수 ·카디널리티·디그리·1순위·

[정의] 카디널리티(Cardinality) = 릴레이션의 튜플(행) 개수(= 기수). 디그리(Degree) = 릴레이션의 속성(열) 개수(= 차수). 둘 다 숫자로 표기하며, 24강 1순위 출제 영역이다.

텍스트
 [student 릴레이션]
 학번      이름    학년   학과
 2024001   김철수   2     컴퓨터    → 튜플 5개 → 카디널리티 = 5 (위에서 아래로)
 2024002   이영희   3     경영
 2024003   박민수   1     통계      → 속성 4개 → 디그리 = 4 (학번·이름·학년·학과)
 2024004   최지영   4     컴퓨터
 2024005   정혜진   2     수학

[표] 카디 vs 디그리 매트릭스.

구분 카디널리티 디그리
측정 튜플(행) 수 속성(열) 수
한자 기수(基數) 차수(次數)
시간성 매 순간 변함(INSERT/DELETE·인스턴스 성질) 거의 고정(ALTER만·스키마 성질)
즉답 카드 카·기·행·튜플 디·차·열·속성

🔑 암기 "카디는 카드 세듯 행, 디그리는 학위 분야처럼 열." Card 한 장씩 위에서 아래로 세듯 = 카디널리티(행), Degree(학위)는 여러 분야처럼 = 디그리(열). ⚠️ 함정 '카디 = 열 수' ❌(→ 디그리) / '디그리 = 행 수' ❌(→ 카디) / '카디 = 차수' ❌(→ 카디 = 기수, 디그리 = 차수) / '카디 = 키 개수' ❌(→ 키와 무관·튜플 수). 🎯 빈출 인스턴스 주고 카디·디그리 값 계산. 거의 매회. 💡 보충 카디널리티는 인스턴스 성질이라 INSERT 한 번에 +1, DELETE 한 번에 −1. 디그리는 스키마 성질이라 컬럼을 추가/삭제할 때만 변한다.

⚠️ 카디널리티 두 의미 분별 — 관계 다중도 vs 튜플 수 ·카디널리티 두 의미·1순위·

[정의] 카디널리티는 한 단어에 두 의미가 있다. 23강의 카디널리티(관계 다중도)와 24강의 카디널리티(튜플 수)는 같은 단어인데 측정 대상이 완전히 다르다 — 매년 변형 함정으로 출제되는 1순위 영역이다.

[표] 3단어 종합 분별 — 시험장 즉답 카드.

단어 측정 표기 분별 키
관계 카디널리티(23강·관계 다중도) 두 개체 사이 매핑 비율 1:1·1:N·N:M(콜론) 보기에 콜론(:)
릴레이션 카디널리티(24강) 한 릴레이션의 튜플(행) 수 숫자(예: 50) 보기에 숫자·튜플·행·기수
디그리(24강) 속성(열) 수 숫자(예: 4) 보기에 속성·열·차수

🔑 암기 "콜론은 관계 다중도, 숫자는 튜플 수, 열은 디그리." 9글자 압축 — "콜론은 관계, 카는 행, 디는 열." ⚠️ 함정 '카디 1:N은 튜플 수가 1과 N' ❌ — 한 보기에 관계 다중도 의미(1:N)와 튜플 수 의미가 섞이면 100% 함정 / '카디는 1:1·1:N·N:M 세 종류뿐' ❌(→ 그건 관계 다중도 의미, 릴레이션 카디는 임의의 자연수). 🎯 빈출 같은 단어 두 의미 분별. 보통(매년 변형). 💡 보충 실무에서도 'cardinality'는 컨텍스트로 갈린다 — ERD 설계 회의면 관계 다중도, 쿼리 옵티마이저·인덱스 튜닝 회의면 튜플(유니크 값) 수. 산업 어휘 자체가 두 자리로 분리돼 쓰여 시험에도 그대로 반영된다.


릴레이션 5대 특성

릴레이션 5대 특성 ·5대 특성·1순위·

[정의] 릴레이션이 수학적 집합으로 다뤄지기 위해 지켜야 하는 5대 특성. 정규화 1NF의 다리이자 시험 단독 출제 빈출 영역이다.

[표] 5대 특성 — 위반 시 무엇이 깨지나.

# 특성 정의 위반 시
① 튜플 유일성 완전히 같은 튜플 두 개 ❌ 키 무결성 위반
② 튜플 무순서 튜플 사이 순서 의미 없음 정렬은 ORDER BY로 별도
③ 속성 무순서 속성 사이 순서 의미 없음 SELECT 컬럼 순서로 별도
④ 속성 원자성 한 속성 값은 더 못 쪼개는 원자값 1NF 위반
⑤ 도메인 동일 한 속성의 모든 값은 같은 도메인 도메인 무결성 위반

🔑 암기 "튜플은 유일·무순서, 속성은 무순서·원자성, 속성값은 도메인 동일." 대상별로 — 튜플(①②)·속성(③④)·속성값(⑤). ⚠️ 함정 '튜플 사이에 순서가 있다' ❌(→ 무순서·함정 1순위) / '한 속성에 여러 값 가능' ❌(→ 원자성 위반·1NF 위반) / '튜플은 중복 가능' ❌(→ 유일성) / '속성 원자성은 BCNF 조건' ❌(→ 1NF 조건). 🎯 빈출 특성 중 틀린 것 고르기 — 거의 항상 '순서 있다' 또는 '여러 값 가능' 패턴. 거의 매회. 💡 보충 ④ 속성 원자성이 곧 제1정규형(1NF)의 출발점. 변환 4규칙 ③(다중값→별도 테이블)·5대 특성 ④·1NF가 같은 사슬(28강에서 본격).


키 5종 — 슈후기대외

슈퍼키 · 후보키 — 유일성·최소성 두 잣대 ·키 5종·1순위·

[정의] 키(Key) = 튜플을 유일하게 식별하는 속성(조합). 모든 키는 두 잣대로 갈린다 — 유일성(모든 튜플이 다른 값)과 최소성(속성 하나라도 빼면 유일성이 깨짐). 슈퍼키는 유일성만, 후보키는 둘 다 만족한다.

[표] 슈퍼키 vs 후보키.

키 유일성 최소성 개수 한 줄 본질
슈퍼키(Super Key) ✅ ❌ 가능 여러 개 군더더기 포함 OK — 가장 느슨
후보키(Candidate Key) ✅ ✅ 여러 개 기본키 후보들
텍스트
 student 속성: 학번, 주민번호, 이름, 학년
 - {학번}             유일성 ✅, 최소성 ✅ → 후보키
 - {주민번호}         유일성 ✅, 최소성 ✅ → 후보키
 - {학번, 이름}       유일성 ✅, 최소성 ❌ → 슈퍼키만(이름은 군더더기)

🔑 암기 유일성만 = 슈퍼키 / 유일성 + 최소성 = 후보키. 포함 관계 슈퍼키 ⊃ 후보키(슈퍼키가 더 넓음). ⚠️ 함정 '슈퍼키는 최소성 만족' ❌(→ 유일성만) / '슈퍼키 ⊂ 후보키' ❌(→ 방향 반대·슈퍼키 ⊃ 후보키) / '후보키는 1개만' ❌(→ 여러 개) / '후보키는 NULL 금지' ❌(→ 후보키 NULL 가능, 금지는 기본키만). 🎯 빈출 두 잣대 매칭·포함 방향. 거의 매회. 💡 보충 최소성을 따지지 않으니 슈퍼키는 무수히 많다 — 실무 코드엔 거의 안 쓰이는 학술·시험 개념. 후보키가 둘 이상이면 DBA가 그중 하나를 기본키로 고른다.

기본키 — 대표 1개, NULL ❌ ·기본키·1순위·

[정의] 기본키(Primary Key) = 후보키 중 DBA가 대표로 선택한 1개. 릴레이션의 모든 튜플을 유일하게 식별하며, NULL과 중복을 절대 허용하지 않는다.

[표] 기본키 4대 성질.

# 성질 본질
① 유일성 + 최소성 ✅ 후보키 성질 상속
② NULL ❌ 식별 불가 → 데이터 의미 상실
③ 중복 ❌ 같은 PK 두 튜플 → 식별 충돌
④ 자동 인덱스 ✅ DBMS가 자동 생성
SQL
CREATE TABLE student (
    학번    INT          PRIMARY KEY,   -- NULL ❌ · 중복 ❌ · 자동 인덱스
    이름    VARCHAR(20)  NOT NULL,
    학년    INT
);

🔑 암기 기본키 = NULL 금지·중복 금지·대표 1개·자동 인덱스. "신분증 없으면 사람 식별 불가" — PK NULL은 곧 누군지 모른다는 뜻(개체 무결성). ⚠️ 함정 '기본키 NULL 가능' ❌(→ 절대 NULL ❌) / '기본키 여러 개' ❌(→ 딱 1개, 후보키가 여러 개) / '기본키 = 후보키' ❌(→ 대표 1개) / '기본키 중복 가능' ❌(→ 중복 ❌). 🎯 빈출 기본키 NULL·개수 함정. 거의 매회(키 문항 1순위). 💡 보충 복합 PK((학번, 과목번호))도 '기본키 1개'로 센다 — 여러 컬럼이 하나로 묶여 1개. OLTP 표준 첫 줄이 거의 항상 id BIGINT PRIMARY KEY, PK 없는 테이블은 코드 리뷰에서 보통 반려.

대체키 · 외래키 — UNIQUE vs FK NULL ✅ ·대체키·외래키·1순위·

[정의] 대체키(Alternate Key) = 후보키 중 기본키로 선택되지 않은 나머지(UNIQUE 제약으로 식별 보장). 외래키(Foreign Key) = 다른 릴레이션의 기본키를 참조하는 속성(관계 표현·NULL 허용).

[표] 대체키 vs 외래키.

키 유일성 NULL 본질 SQL
대체키(Alternate) ✅ ✅ 같은 테이블 내 식별(후보키 − 기본키) UNIQUE
외래키(Foreign) ❌ ✅ 다른 테이블 PK 참조·관계 표현 FOREIGN KEY ... REFERENCES
SQL
CREATE TABLE enrollment (
    학번        INT,
    과목번호    CHAR(4),
    PRIMARY KEY (학번, 과목번호),                       -- 복합 PK
    FOREIGN KEY (학번)    REFERENCES student(학번),     -- 외래키 (같은 학번 중복 OK)
    FOREIGN KEY (과목번호) REFERENCES course(과목번호)
);

🔑 암기 대체키 = UNIQUE·후보키 − 기본키 / 외래키 = 다른 PK 참조·NULL ✅·유일성 ❌. 외래키 NULL 가능은 '관계가 아직 결정 안 됨'을 표현(예: 부서 미배정 사원). ⚠️ 함정 '외래키는 NULL이 될 수 없다' ❌(→ NULL 가능, 금지는 기본키만·★시험 1순위★) / '외래키 유일성 만족' ❌(→ 유일성 ❌, 1:N에서 같은 FK 여러 번) / '대체키 = 외래키' ❌(→ 대체키는 같은 테이블 식별, 외래키는 다른 테이블 참조) / '대체키 NULL 금지' ❌(→ NULL 가능). 🎯 빈출 외래키 NULL 허용·대체키 vs 외래키 분별. 거의 매회. 💡 보충 외래키 위반 시 처리 4옵션(RESTRICT·CASCADE·SET NULL·SET DEFAULT)은 참조 무결성 카드에서 본격. 수억 행 규모에선 성능상 FK 제약을 코드 레벨로 옮기기도 하지만, 시험에선 항상 FK 제약 ON으로 가정한다.

★ 슈후기대외 ★ 종합 + 제약 매트릭스 ·키 5종 종합·1순위·

[정의] 키 5종을 한 두문자로 종합 — 슈후기대외(슈퍼·후보·기본·대체·외래). 포함 관계와 제약을 한 매트릭스로 굳힌다.

[표] ★슈후기대외★ 제약 종합 매트릭스 — 시험 직전 마지막 카드.

키 유일성 최소성 NULL 중복 SQL 제약 개수
슈퍼키 ✅ ❌ 가능 – – – 여러 개
후보키 ✅ ✅ ✅ ❌ – 여러 개
기본키 ✅ ✅ ❌ ❌ PRIMARY KEY 1개
대체키 ✅ ✅ ✅ ❌ UNIQUE 여러 개
외래키 ❌ – ✅ ✅ FOREIGN KEY ... REFERENCES 여러 개

[표] 핵심 분별 한눈에.

분별 정답
NULL 금지인 키 기본키만
중복·유일성 ❌인 키 외래키만
반드시 1개인 키 기본키만
자동 인덱스 기본키 무조건 / 대체키 보통

🔑 암기 "슈는 느슨, 후는 빡빡, 기는 NULL 금지, 대는 후−기, 외는 다른 PK 참조." 포함 관계 슈퍼키 ⊃ 후보키 ⊃ 기본키 / 후보키 = 기본키 + 대체키 / 외래키는 별도(참조). ⚠️ 함정 '외래키 NULL ❌' ❌(→ NULL 가능) / '기본키 여러 개' ❌(→ 1개) / '슈퍼키 최소성' ❌(→ 유일성만) / '대체키 = 외래키' ❌(→ 별도 개념). 🎯 빈출 키 5종 성질 매칭 2~3문항. 거의 매회. 💡 보충 호텔 예약으로 비유하면 — 슈퍼키(객실+층+동) / 후보키({객실번호},{예약코드}) / 기본키(객실번호) / 대체키(예약코드·UNIQUE) / 외래키(손님ID→customer 참조). 실무 표준 어휘는 PK·UNIQUE Key·FK 3종(슈퍼·후보는 학술 개념).


무결성 3종 — 개참도

개체 무결성 ·개체 무결성·1순위·

[정의] 개체 무결성(Entity Integrity) = 기본키(PK)는 NULL ❌, 중복 ❌. 모든 튜플이 유일하게 식별 가능해야 한다는 제약. 슈후기대외의 '기'가 본격 제약으로 변신한 것.

[표] 무결성 3종 검사 대상 — '누구를 검사하나'.

무결성 검사 대상 규칙
개체 기본키 NULL ❌ · 중복 ❌
참조 외래키 참조 PK 존재 OR NULL
도메인 일반 속성 도메인 범위 안

🔑 암기 개체 무결성 = 기본키 검사(NULL ❌·중복 ❌). "신분증 없으면 식별 불가" — NULL을 원천 차단. ⚠️ 함정 '개체 무결성은 외래키 NULL 금지' ❌(→ 기본키 NULL 금지, 외래키는 NULL 가능) / '개체 무결성 = 외래키 검사' ❌(→ 기본키 검사) / '개체 무결성 = 도메인 검사' ❌(→ 도메인 무결성 영역). 🎯 빈출 검사 대상(기본키) 매칭. 거의 매회. 💡 보충 학번 INT PRIMARY KEY 한 줄이 개체 무결성을 자동 보장 — NULL이나 중복을 INSERT하면 DBMS가 거부한다.

참조 무결성 + FK 4옵션 ·참조 무결성·1순위·

[정의] 참조 무결성(Referential Integrity) = 외래키(FK)는 참조하는 PK 값과 일치하거나 NULL이어야 한다. 참조 대상이 실제로 존재해야 하며, 참조 PK가 삭제·수정될 때의 처리는 4옵션 중 선택한다.

[표] ★ 외래키 위반 시 4옵션 ★ — 시험 1순위.

# 옵션 동작 예시(참조 student 삭제 시)
① RESTRICT 거부(기본) 참조 중이면 삭제 거부·에러
② CASCADE 연쇄 삭제 관련 enrollment 자동 삭제
③ SET NULL NULL로 enrollment.학번을 NULL로
④ SET DEFAULT 기본값으로 enrollment.학번을 기본값으로
SQL
FOREIGN KEY (학번) REFERENCES student(학번)
    ON DELETE CASCADE      -- student 삭제 시 enrollment 자동 삭제
    ON UPDATE CASCADE;

🔑 암기 참조 무결성 = 외래키 검사(참조 PK 존재 OR NULL). 위반 시 RESTRICT(기본)·CASCADE·SET NULL·SET DEFAULT 4옵션. ⚠️ 함정 '참조 무결성은 기본키 검사' ❌(→ 외래키 검사) / 'FK는 항상 NULL 금지' ❌(→ NULL 가능) / 'CASCADE가 기본' ❌(→ RESTRICT가 기본) / 'FK 옵션은 2종뿐' ❌(→ 4종). 🎯 빈출 4옵션 매칭·검사 대상(외래키). 보통~거의 매회. 💡 보충 옵션 선택은 곧 비즈니스 정책 — 게시글-댓글은 CASCADE(같이 삭제), 사용자-주문 이력은 RESTRICT/SET NULL(보존). 개인정보 보호 정책이 옵션을 가르기도 한다.

도메인 무결성 ·도메인 무결성·

[정의] 도메인(Domain) = 한 속성(컬럼)에 들어올 수 있는 값의 합법적 집합(타입·범위·열거 3형식). 도메인 무결성(Domain Integrity) = 속성값이 정의된 도메인 범위 안에 있어야 한다는 제약 — '컬럼의 입국 심사대'.

[표] 도메인 3형식 = 도메인 무결성 제약.

형식 SQL 제약 예시
데이터 타입 INT, VARCHAR(20), DATE 학번 INT, 이름 VARCHAR
범위(CHECK) CHECK (조건) CHECK (나이 BETWEEN 0 AND 150)
열거(ENUM) ENUM(...) · CHECK (... IN (...)) CHECK (성별 IN ('M','F'))
SQL
나이    INT      CHECK (나이 BETWEEN 0 AND 150),   -- 범위
성별    CHAR(1)  CHECK (성별 IN ('M', 'F'))        -- 열거
-- 나이 200 INSERT → CHECK 위반 거부 / 성별 'X' → 거부

🔑 암기 도메인 무결성 = 일반 속성 검사(타입·범위·열거 3형식). 통과 못 하는 값은 입국 거부. ⚠️ 함정 '도메인 무결성은 PK 검사' ❌(→ 개체 무결성) / '도메인 = 데이터 타입만' ❌(→ 타입 + 범위 + 열거 3종) / 'ENUM은 도메인이 아님' ❌(→ 열거형 도메인) / '도메인 무결성 = 외래키 검사' ❌(→ 일반 속성). 🎯 빈출 도메인 3형식·검사 대상(일반 속성). 간헐~보통. 💡 보충 도메인을 좁힐수록 데이터 품질은 올라가고 ALTER 비용도 올라간다. 간편송금 시스템의 잔액 DECIMAL(15,2) CHECK (잔액 >= 0)로 음수 차단이 표준.

★ 개참도 ★ 종합 — 무결성 3종 ·무결성 종합·1순위·

[정의] 무결성 3종을 한 두문자로 종합 — 개참도(개체·참조·도메인). 정처기 표준 무결성은 개·참·도 딱 3종이며, 그 외 단어는 모두 함정이다.

[표] ★개참도★ 종합 — 즉답 매트릭스.

글자 무결성 검사 대상 SQL 제약
개 개체 기본키 PRIMARY KEY(NULL·중복 ❌)
참 참조 외래키 FOREIGN KEY ... REFERENCES(4옵션)
도 도메인 일반 속성 CHECK·ENUM·타입

[표] ⚠️ 무결성 3종이 아닌 것 — 매년 변형 단골.

오답 보기 왜 ❌
트랜잭션 무결성 ACID와 혼동(별도)
사용자 무결성 DCL(권한)과 혼동
키 무결성 개체 무결성과 혼동(별도 용어 ❌)
응용·세션·테이블 무결성 일반 용어와 혼동

🔑 암기 "무결성 = 개·참·도 3종만, 나머지 다 함정." 슈후기대외 짝꿍 — 기(기본키)=개 / 외(외래키)=참 / 일반 속성=도. ⚠️ 함정 '무결성 3종에 트랜잭션 무결성 포함' ❌(→ 개·참·도 3종) / '무결성 = 개체·참조 2종' ❌(→ 3종, 도메인 포함). 개·참·도 세 글자 밖이면 무조건 오답. 🎯 빈출 '무결성이 아닌 것 고르기' — 거의 매회. 💡 보충 SQL 코드 리뷰 체크리스트도 정확히 'PRIMARY KEY(개체)·FOREIGN KEY(참조)·CHECK(도메인)' 세 줄 — 외운 두문자가 곧 실무 어휘다.


기출 다지기

[기출 1 출제] 다음 릴레이션의 카디널리티(Cardinality)와 디그리(Degree)를 순서대로 옳게 나타낸 것은? (값 계산)

텍스트
[student]
학번      이름     학년    학과
2024001   김철수    2     컴퓨터
2024002   이영희    3     경영
2024003   박민수    1     통계
2024004   최지영    4     컴퓨터
2024005   정혜진    2     수학
  • ① 5, 4
  • ② 4, 5
  • ③ 4, 4
  • ④ 5, 5
정답 및 해설 보기

정답 ①

카디널리티 = 튜플(행) 5개 = 5, 디그리 = 속성(열) 4개(학번·이름·학년·학과) = 4. "카·기·행 / 디·차·열"로 즉답.

선지 판정 근거
① 정답 카디=5(행) / 디그리=4(열)
② 오답 카디·디그리 자리 바꿔치기
③ 오답 카디를 4로(행 5개를 잘못 셈)
④ 오답 둘 다 5로 헷갈리는 함정

🔑 카는 행, 디는 열 — "카·기·행·튜플 / 디·차·열·속성".

[기출 2 출제] 키(Key)에 대한 설명으로 옳지 않은 것은? (부정형)

  • ① 슈퍼키는 유일성은 만족하지만 최소성은 만족하지 않을 수 있다.
  • ② 후보키는 유일성과 최소성을 모두 만족한다.
  • ③ 기본키는 NULL 값을 가질 수 있다.
  • ④ 외래키는 다른 릴레이션의 기본키를 참조하는 속성이다.
정답 및 해설 보기

정답 ③

기본키는 절대 NULL을 가질 수 없다(개체 무결성 본질). NULL 금지는 키 5종 중 기본키뿐.

선지 판정 근거
① 옳음 슈는 느슨 — 유일성만
② 옳음 후는 빡빡 — 유일성 + 최소성
③ 정답(틀린 것) 기본키는 NULL ❌(개체 무결성)
④ 옳음 외는 다른 PK 참조

🔑 NULL 금지는 기본키만, 외래키는 NULL ✅ — "기는 NULL 금지, 외는 다른 PK 참조".

[기출 3 출제] 관계 데이터베이스의 무결성(Integrity) 제약조건이 아닌 것은? (소거형)

  • ① 개체 무결성(Entity Integrity)
  • ② 참조 무결성(Referential Integrity)
  • ③ 도메인 무결성(Domain Integrity)
  • ④ 트랜잭션 무결성(Transaction Integrity)
정답 및 해설 보기

정답 ④

정처기 표준 무결성 = 개·참·도 3종. 트랜잭션 무결성은 ACID와 혼동한 함정.

선지 판정 근거
① 옳음 개 — 기본키 NULL·중복 ❌
② 옳음 참 — 외래키 = 참조 PK 존재 OR NULL
③ 옳음 도 — 속성값이 도메인 범위 안
④ 정답(아닌 것) 트랜잭션 무결성 = ACID 혼동(별도)

🔑 개·참·도 세 글자 밖이면 함정 — 트랜잭션·사용자·키 무결성 모두 ❌.

[기출 4 출제] 관계 데이터 모델의 릴레이션 특성으로 옳지 않은 것은? (부정형)

  • ① 한 릴레이션에는 동일한 튜플이 두 개 이상 존재할 수 없다.
  • ② 한 릴레이션의 튜플 사이에는 순서가 있다.
  • ③ 한 속성의 값은 더 이상 분해할 수 없는 원자값이다.
  • ④ 한 속성의 모든 값은 같은 도메인에서 온다.
정답 및 해설 보기

정답 ②

튜플은 무순서(5대 특성 ②) — '먼저 들어온 튜플이 위'는 의미 없다.

선지 판정 근거
① 옳음 튜플 유일성(같은 튜플 ❌)
② 정답(틀린 것) 튜플 무순서
③ 옳음 속성 원자성 = 1NF
④ 옳음 도메인 동일

🔑 5대 특성 함정은 거의 항상 '순서 있다' 또는 '여러 값 가능' — "튜플은 유일·무순서, 속성은 무순서·원자성".

[기출 5 출제] 다음 중 릴레이션의 카디널리티(Cardinality), 즉 튜플(행) 수 의미에 해당하는 것은? (의미 분별)

  • ① E-R 모델에서 두 개체 사이의 관계가 1:N이다.
  • ② student 릴레이션의 튜플 개수가 50,000개이다.
  • ③ student 릴레이션의 속성 개수가 5개이다.
  • ④ student 릴레이션의 기본키는 학번이다.
정답 및 해설 보기

정답 ②

릴레이션 카디널리티 = 튜플(행) 수. '50,000개'처럼 숫자로 표기된 튜플 수가 정답.

선지 판정 근거
① 오답 1:N = 관계 카디널리티(관계 다중도)
② 정답 튜플 50,000개 = 릴레이션 카디널리티
③ 오답 속성 5개 = 디그리
④ 오답 키 정의 — 카디널리티와 무관

🔑 콜론(:)이 보이면 관계 다중도, 숫자가 보이면 튜플 수, 열은 디그리.

[기출 6 출제] 외래키(Foreign Key)에 대한 설명으로 옳지 않은 것은? (부정형)

  • ① 다른 릴레이션의 기본키를 참조하는 속성이다.
  • ② NULL 값을 가질 수 없다.
  • ③ 여러 튜플이 같은 외래키 값을 가질 수 있다.
  • ④ 참조 무결성 제약조건과 관련이 있다.
정답 및 해설 보기

정답 ②

외래키는 NULL 가능('관계 미결정' 상태 허용). NULL 금지는 기본키뿐.

선지 판정 근거
① 옳음 외래키 = 다른 PK 참조
② 정답(틀린 것) 외래키 NULL ✅, 금지는 기본키만
③ 옳음 유일성 ❌ — 1:N에서 같은 FK 여러 번
④ 옳음 외래키 = 참조 무결성 검사 대상

🔑 NULL ❌은 기본키만, 외래키는 NULL ✅ + 유일성 ❌.

[기출 7 출제] 학생(N) — 과목(M)의 N:M 관계를 관계 데이터 모델로 변환할 때 가장 적절한 방법은? (변환)

  • ① 학생 테이블에 과목 컬럼을 콤마로 나열한다.
  • ② 과목 테이블에 학생 외래키 하나만 추가한다.
  • ③ 양쪽 외래키와 복합 기본키를 가진 연결 테이블을 별도로 만든다.
  • ④ 하나의 테이블에 학생과 과목을 모두 펼쳐 저장한다.
정답 및 해설 보기

정답 ③

N:M은 가운데에 연결 테이블을 끼우고 양쪽 PK를 외래키로 가리키며, 그 둘을 묶어 복합 PK로 삼는다(enrollment).

선지 판정 근거
① 오답 콤마 나열 = 원자성 위반(1NF ❌)
② 오답 FK 하나만으론 1:N — N:M 표현 불가
③ 정답 연결 테이블 + 양쪽 FK + 복합 PK
④ 오답 한 테이블에 펼치면 중복·이상현상

🔑 N:M은 연결 테이블 분해 — 양쪽 FK로 PK를 가리키고 복합 PK로 묶는다.


한 장 요약

영역 핵심 암기팁
관계 데이터 모델 E.F. 코드(1970)·2차원 테이블·현재 주류 논리 모델 4종 중 계층형만 N:M ❌
E-R 변환 4규칙 개체→테이블 / 속성→컬럼 / 다중값→별도 / 관계→분기 1:N은 N쪽에 FK
N:M 분해 student·course·enrollment 연결 테이블 양쪽 FK + 복합 PK
릴레이션 구조 스키마(헤더·고정) vs 인스턴스(본문·변함) INSERT는 인스턴스만
튜플·속성 튜플=행·레코드·Row·Instance / 속성=열·필드·Column·Property 4동의어 매칭
카디널리티 = 행 수 튜플 수·기수·매 순간 변함 카·기·행·튜플
디그리 = 열 수 속성 수·차수·거의 고정 디·차·열·속성
└ 두 의미 분별 관계 다중도(콜론) vs 튜플 수(숫자) 콜론은 관계, 카는 행, 디는 열
릴레이션 5대 특성 튜플 유일·무순서 / 속성 무순서·원자성 / 도메인 동일 원자성=1NF·튜플 무순서 함정
키 5종 슈퍼·후보·기본·대체·외래 슈후기대외
└ 두 잣대 유일성(슈퍼부터) + 최소성(후보부터) 슈퍼키 ⊃ 후보키 ⊃ 기본키
└ NULL 기본키만 NULL ❌ / 외래키 NULL ✅ 외는 NULL 가능
무결성 3종 개체(기본키)·참조(외래키)·도메인(일반 속성) 개참도
└ 참조 4옵션 RESTRICT(기본)·CASCADE·SET NULL·SET DEFAULT 기본은 RESTRICT
└ 함정 트랜잭션·사용자·키 무결성 = ❌ 개·참·도 3종만

🎯 합격 한 끗: 24강은 네 공식이 전부다 — 카·기·행(카디) / 디·차·열(디그리) / 슈후기대외(키 5종) / 개참도(무결성 3종). 시험 직전 함정 5쌍만 더 굴리면 끝 — 외래키 NULL ✅(금지는 기본키만) · 기본키 1개 · 무결성 개참도 3종(트랜잭션 ❌) · 튜플 무순서 · 콜론은 관계 다중도·숫자는 튜플 수. 이 다섯이면 24강 출제분의 90%는 즉답이다.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.