SQLD, D-17 정규화

야아니·2025년 10월 30일

SQLD

목록 보기
2/11
post-thumbnail

1️⃣ 데이터 모델링의 주요 특성

  1. 추상화 : 현실을 간략하게 표현
  2. 단순화 : 누구나 쉽게 이해할 수 있도록 표현
  3. 명확성 : 한가지 의미를 가지며, 명확하게 해석되어야 함

2️⃣ 정규화 (Normalization)

정의
데이터의 일관성 유지, 중복 최소화, 데이터 이상(Anomaly) 제거를 위해
데이터를 여러 테이블로 체계적으로 분해하는 과정


① 제1정규화 (1NF: First Normal Form)

핵심: 속성의 원자성(Atomicity) 확보
한 칸에는 하나의 값만 들어가야 함

학번이름수강과목
1홍길동DB, OS

수강과목에 여러 데이터가 들어있음
✅ 아래처럼 원자값으로 분리해야 함

학번이름수강과목
1홍길동DB
1홍길동OS

② 제2정규화 (2NF: Second Normal Form)

전제: 기본키가 복합키일 경우에만 해당
핵심: 기본키 일부에만 종속된 속성을 분리
부분 함수 종속성(Partial Dependency) 제거

학번과목코드과목명담당교수
1DB01데이터베이스김교수
2OS01운영체제이교수

과목명, 담당교수과목코드에만 종속됨
→ 아래처럼 테이블을 분리

📋 학생-과목 테이블
(학번, 과목코드)

학번과목코드
1DB01
2OS01

📋 과목 테이블
(과목코드, 과목명, 담당교수)

과목코드과목명담당교수
DB01데이터베이스김교수
OS01운영체제이교수

③ 제3정규화 (3NF: Third Normal Form)

핵심: 이행 함수 종속성(Transitive Dependency) 제거
→ 기본키가 아닌 컬럼이 다른 컬럼을 결정하지 않도록 함

학번이름학과코드학과명
1홍길동C01컴퓨터공학과

학과명학과코드에 종속,
학과코드학번에 종속
→ 즉, 학번 → 학과코드 → 학과명 (이행 종속 발생)

📋 학생 테이블
(학번, 이름, 학과코드)

학번이름학과코드
1홍길동C01

📋 학과 테이블
(학과코드, 학과명)

학과코드학과명
C01컴퓨터공학과

④ BCNF (Boyce-Codd Normal Form)

핵심: 모든 결정자(Determinant)후보키(Candidate Key) 여야 함
→ 후보키가 기본키를 종속시키는 경우 제거해야 함

교수과목강의실
김교수DB101호
김교수OS102호

한 교수가 여러 과목을 강의하지만
강의실이 교수마다 고정된다면
강의실 → 교수 (역방향 종속) 발생
→ BCNF 위배 → 테이블 분리 필요


🧾 정규형 요약표

정규형제거 대상의미예시
① 제1정규화반복 속성한 칸에 여러 값 금지DB, OS
② 제2정규화부분 함수 종속복합키 일부에 종속과목코드 → 과목명
③ 제3정규화이행 함수 종속A→B, B→C학번 → 학과코드 → 학과명
④ BCNF비후보키 결정자후보키가 기본키 종속강의실 → 교수

정리 한 줄 요약

  • 1NF: 원자성
  • 2NF: 부분 종속 제거
  • 3NF: 이행 종속 제거
  • BCNF: 후보키 이외 결정자 제거
profile
세계평화를 원하는 사람입니다.

0개의 댓글