코딩 TIL (오늘 배운거)/풀스택 위클리페이퍼

[6주차 위페] 데이터베이스 정규화

손냥로 2025. 8. 10. 14:59

데이터베이스 정규화(Database Normalization)는 데이터의 중복을 최소화하고, 무결성을 유지하며, 효율적으로 데이터를 관리하기 위해 테이블을 구조화하는 과정입니다. 주로 관계형 데이터베이스 설계 시 사용됩니다.

 

관계형 데이터베이스에서 속성은 다른 속성과 관계를 가집니다.

특정 튜플을 구분할 수 있는 속성을 기본키로 설정하게 되고 이 기본키를 통해 데이터를 찾습니다.

특정 속성이 정해졌을 때 다른 속성도 함께 정해지는 것을 종속이라고 부르는데,

기본키가 아닌 속성들의 종속을 최대한 줄이는 것이 정규화의 주된 목적입니다. (라고 저는 알고 있습니다.)

 

종속을 없애게 되면 이상(Anomaly) 방지, 데이터 무결성, 중복 최소화 등의 효과를 얻을 수 있습니다.


✅ 정규화의 목적 (=종속 제거)

  1. 데이터 중복 최소화
  2. 데이터 무결성 유지
  3. 삽입, 삭제, 갱신 이상(Anomaly) 방지
  4. 논리적 데이터 구조 향상

정규형 단계 정리

개념 요약

용어 개념설명
원자성 (Atomicity) 한 속성(컬럼)의 값은 더 이상 나눌 수 없는 단일 값이어야 함.
즉, 하나의 셀에는 하나의 데이터만 존재해야 함.
부분 함수 종속 (Partial Dependency) 기본키가 **복합키(2개 이상)**일 때, 어떤 속성이 그 일부에만 의존하는 경우.
예: (학번, 과목) → 교수명 (교수명이 과목에만 종속됨)
이행적 함수 종속 (Transitive Dependency) 비기본키 속성이 다른 비기본키 속성에 종속되는 경우.
예: 학번 → 부서ID, 부서ID → 부서명 → 학번 → 부서명은 이행 종속
결정자 (Determinant) 어떤 속성(들)을 기준으로 다른 속성의 값을 결정할 수 있는 속성.
예: 학번 → 이름 → 학번이 결정자
다치 종속 (Multivalued Dependency) 하나의 속성이 둘 이상의 독립적인 다중 값을 가질 때 발생.
예: 학생 → 전화번호, 학생 → 이메일 → 전화번호와 이메일은 독립적 다치 종속
조인 종속 (Join Dependency) 테이블이 여러 개로 분해되었을 때, 원래 테이블을 조인으로 정확히 복원할 수 있어야 함.
조인 종속이 성립하면 **손실 없는 분해(Lossless Join)**가 가능