문서 읽는 데 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와 에듀윌 온라인강의로 합격까지 이어가세요.