데이터베이스 정규화

ya·2025년 4월 3일

DataBase와 SQL

목록 보기
10/12
post-thumbnail

데이터베이스 정규화 (Normalization) 🚀

데이터베이스 설계 시 이상(Anomaly)을 제거하여 데이터를 효율적으로 구조화하는 과정이다.

🔹 정규화란?

데이터의 중복성과 종속성을 줄이는 방식
큰 테이블을 작은 테이블로 분해하여 데이터의 일관성을 유지
관계를 사용하여 관련된 테이블들을 연결


✅ 정규화의 장점

  • 이상 현상(Anomaly) 제거
  • 데이터의 명확성 확보 🧐
  • 유지보수성 향상 🔧
  • 검색(조회) 효율 증가 🔍
  • 응용 프로그램에서 최소한의 작업으로 원하는 정보 조회 가능 🏎️

❌ 정규화의 단점

  • 테이블 간의 JOIN 연산 증가 🔗
  • 응답 시간이 느려질 가능성 🕒
  • 성능 저하 시 반정규화(De-normalization) 필요 ⚠️

🔥 이상 현상 (Anomaly)

이상(Anomaly)데이터 삽입, 삭제, 수정 시 발생할 수 있는 데이터 불일치 오류를 의미한다.

1️⃣ 삽입 이상 (Insertion Anomaly) ✏️

  • 데이터를 삽입할 때 불필요한 데이터를 반복해서 입력해야 하는 경우 발생

2️⃣ 삭제 이상 (Deletion Anomaly) 🗑️

  • 테이블에서 일부 데이터를 삭제할 때, 삭제할 필요가 없는 정보도 함께 삭제되는 경우 발생

3️⃣ 갱신(수정) 이상 (Update Anomaly) 🔄

  • 데이터 변경 시 일부 레코드만 수정되어 데이터의 일관성이 깨지는 경우 발생 ⚠️
  • 데이터 불일치성으로 무결성(Integrity)이 깨질 위험 존재 🚨

🔗 함수적 종속성 (Functional Dependency)

테이블에서 속성 간의 관계를 표현한 것

✅ 완전 함수적 종속성

  • 기본키가 아닌 속성들이 기본키 전체에 종속됨
  • 기본키가 복합키인 경우, 모든 속성이 기본키 전체에 종속되어야 함

✅ 부분 함수적 종속성

  • 기본키가 아닌 속성이 기본키의 일부에만 종속된 경우 발생

✅ 이행 함수적 종속성

  • 세 개 이상의 속성이 연결되어 있을 때 발생하는 종속 관계
  • A → B 그리고 B → C 라면 A → C 가 성립됨

🎯 정규화 단계 (1NF ~ 5NF)

🔹 1NF (제1 정규형)

  • 테이블의 각 속성값은 원자값(Atomic Value) 으로만 구성되어야 함
  • 중복되는 속성이나 속성 그룹을 별도 테이블로 분리

🔹 2NF (제2 정규형)

  • 1NF를 만족하면서 부분 함수적 종속성을 제거
  • 테이블 분할, 기본키 변경을 수행

🔹 3NF (제3 정규형)

  • 1NF, 2NF를 만족하면서, 모든 non-key 속성이 기본키에만 종속되도록 조정
  • 이행적 종속성을 제거
  • 테이블 분할 수행

🔹 BCNF (Boyce-Codd Normal Form)

  • 3NF를 만족하면서, 모든 결정자가 후보키인 경우
  • 후보키가 아닌 결정자가 존재하면 테이블을 분리해야 함

🔹 4NF (제4 정규형)

  • 다치 종속(Multi-valued Dependency)을 제거
  • 하나의 속성이 두 개 이상의 독립적인 속성 집합에 종속되면 테이블을 분해해야 함

🔹 5NF (제5 정규형)

  • 조인 종속(Join Dependency)을 제거
  • 테이블을 분해했을 때 원래의 정보를 다시 복원할 수 있어야 함

🚀 정리

  • 정규화(Normalization)는 데이터의 중복과 이상 현상을 제거하는 과정
  • 정규화를 수행하면 데이터 무결성을 유지하면서 유지보수성을 향상
  • JOIN 연산이 많아지는 단점이 있으므로, 성능 문제 발생 시 반정규화를 고려 ⚖️
profile
ya로그

0개의 댓글