티스토리 뷰

반응형

2026.05.13 - [데이터베이스] - 데이터베이스 제1정규화

2026.05.13 - [데이터베이스] - 데이터베이스 제2정규화

데이터베이스 설계의 완성도를 높이는 제3정규화(Third Normal Form, 3NF)에 대해 정리해 드립니다. 제3정규화는 데이터 간의 '연쇄적인 의존 관계'를 끊어내어 데이터 무결성을 최종적으로 확보하는 단계입니다.


1. 제3정규화(3NF)의 정의와 성립 조건

정의

제3정규화란 "제2정규형을 만족하면서, 기본키(PK)가 아닌 모든 속성 간에 '이행적 함수 종속(Transitive Functional Dependency)'이 없어야 한다"는 원칙입니다. 쉽게 말해, 기본키가 아닌 일반 컬럼들끼리 서로 종속 관계를 가지면 안 된다는 뜻입니다.

  • 성립 조건 1: 테이블이 제2정규형(2NF)을 만족해야 합니다.
  • 성립 조건 2 (비이행성): 기본키(A)를 통해 속성(B)를 알고, 그 속성(B)를 통해 또 다른 속성(C)을 알 수 있는 관계($A \to B \to C$)가 존재해서는 안 됩니다.
  • E.F. Codd의 정의 (1971): "Every non-prime attribute of R is non-transitively dependent on every key of R." (R의 모든 비주요 속성이 R의 모든 키에 대해 이행적으로 종속되지 않아야 한다.)

2. 핵심 개념: 이행적 함수 종속 (Transitive Dependency)

이행적 종속이란 논리학의 삼단논법과 비슷합니다.

[이행적 종속의 예시]

  1. 학번(A)을 알면 학과(B)를 알 수 있다. ($A \to B$)
  2. 학과(B)를 알면 학과 사무실 위치(C)를 알 수 있다. ($B \to C$)
  3. 결과적으로 학번(A)을 통해 학과 사무실 위치(C)를 알 수 있게 된다. ($A \to C$)

이 경우, 학과 사무실 위치(C)는 기본키인 학번에 직접 종속된 것이 아니라 학과(B)를 거쳐 이행적으로 종속된 것이며, 이는 제3정규화 위반 대상입니다.


3. 제3정규화 미적용 시 발생하는 이상 현상

이상 현상 내용
삽입 이상 새로운 학과와 그 학과 사무실 위치를 등록하고 싶어도, 해당 학과에 소속된 학생(학번)이 없으면 등록이 불가능함.
삭제 이상 특정 학생의 데이터를 삭제할 때, 그 학생이 속한 학과의 사무실 위치 정보까지 함께 사라짐.
갱신 이상 학과 사무실이 이사했을 경우, 해당 학과 소속 모든 학생의 행을 수정해야 하며, 누락 시 데이터 불일치가 발생함.

반응형

4. 실전 예제: 학생 정보 테이블 분석

[Step 1] 제2정규화 완료 상태

기본키는 학번입니다. 모든 일반 속성은 학번에 완전 종속되어 있습니다.

학번 (PK) 이름 학과 학과 사무실 번호
1001 홍길동 컴퓨터공학 02-123-4567
1002 임꺽정 전자공학 02-987-6543
1003 장길산 컴퓨터공학 02-123-4567
  • 분석:
    • 학번 $\to$ 학과 (결정됨)
    • 학과 $\to$ 학과 사무실 번호 (결정됨)
    • 학번 $\to$ 학과 $\to$ 학과 사무실 번호 구조이므로 이행적 종속 발생.

[Step 2] 제3정규화 적용 (테이블 분리)

이행적 관계를 형성하는 학과와 학과 사무실 번호를 별도 테이블로 분리합니다.

1. 학생 테이블

학번 (PK) 이름 학과 (FK)
1001 홍길동 컴퓨터공학
1002 임꺽정 전자공학
1003 장길산 컴퓨터공학

2. 학과 정보 테이블

학과 (PK) 학과 사무실 번호
컴퓨터공학 02-123-4567
전자공학 02-987-6543

5. SQL 구현 예제

SQL
 
-- 1. 학과 정보를 담는 부모 테이블
CREATE TABLE Departments (
    DeptName VARCHAR(50) PRIMARY KEY,
    OfficePhone VARCHAR(20)
);

-- 2. 학생 정보를 담는 자식 테이블 (3NF 준수)
CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    StudentName VARCHAR(50),
    DeptName VARCHAR(50),
    CONSTRAINT FK_Dept FOREIGN KEY (DeptName) REFERENCES Departments(DeptName)
);

-- 데이터 삽입
INSERT INTO Departments VALUES ('컴퓨터공학', '02-123-4567');
INSERT INTO Students VALUES (1001, '홍길동', '컴퓨터공학');

6. 요약 및 핵심 체크리스트

항목 내용
핵심 목적 일반 속성 간의 종속성 제거 (이행적 종속 제거)
판단 기준 "기본키가 아닌 컬럼 A를 알면 컬럼 B를 알 수 있는가?"
해결 방법 결정자(Determinant)와 종속자(Dependent)를 별도 테이블로 분리
기대 효과 데이터 저장 공간 절약 및 논리적 일관성 확보

 

#데이터베이스 #제3정규화 #3NF #정규화 #Normalization #이행적함수종속 #DB설계 #데이터모델링 #SQL #RDBMS #데이터무결성 #백엔드개발 #기술면접대비 #정보처리기사 #DB튜닝 #소프트웨어아키텍처 #개발자학습 #데이터베이스기초

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