Coffee Chat Brewing AI Knowledge

eng kor

데이터베이스 3: 이상, 함수적 종속과 정규화

이상 (Anomaly)

DB 내 데이터가 불필요하게 중복되어 릴레이션 조작 시 예기치 않게 발생하는 곤란한 현상.

  • 삽입 이상 (Insertion Anomaly): 데이터 삽입 시 의도치 않은 값들로 인해 삽입할 수 없게 되는 현상.
  • 삭제 이상 (Deletion Anomaly): 튜플 삭제 시 의도치 않은 값들도 삭제되는 현상 (연쇄 삭제).
  • 갱신 이상 (Update Anomaly): 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되는 현상. 불일치성(Inconsistency) 발생.

함수적 종속 (Functional Dependency)

테이블 $R$의 속성 집합의 부분 집합 $X$와 $Y$에 대해, $X$의 값 각각에 대해 항상 $Y$의 값이 오직 하나만 연관되어 있을 때 ‘$Y$는 $X$에 함수적 종속’ 또는 ‘$X$가 $Y$를 함수적으로 결정한다’고 표현함.

  • 기호: $X\rightarrow Y$

  • 완전 함수적 종속 (Full Functional Dependency): $Y$가 $X$에 대해 함수적 종속이면서 $X$의 어떤 진부분 집합 $Z (X \sup Z)$에도 함수적 종속이 아닐 때 ‘$Y$는 $X$에 완전 함수적 종속’이라고 함.
  • 부분 함수적 종속 (Partial Functional Dependency): $Y$가 $X$에 대해 함수적 종속이면서 $X$의 임의의 진부분 집합 $Z$에 대해 함수적 종속일 때 ‘$Y$는 $X$에 부분 함수적 종속’이라고 함.
  • 이행적 함수적 종속 (Transitive Functional Dependency): $X\rightarrow Y$이고 $Y\rightarrow Z$일 때 $X\rightarrow Z$인 관계.

정규화 (Normalization)

테이블을 무손실 분해하는 과정. 속성들이 상호 종속적인 관계를 갖는 특성을 이용.

  • 목적: 중복을 가능한 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것.
  • 정규형: 제 1정규형(1NF) → 제 2정규형(2NF) → 제 3정규형(3NF) → BCNF → 제 4정규형(4NF) → 제 5정규형(5NF)

정규화 과정

erd

반정규화 (Denormalization)

정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위.

  • 시스템의 성능 향상, 개발 및 운영의 편의성 등을 향상시킬 수 있음.
  • 과도한 반정규화는 오히려 성능을 저하시킴.

중복 테이블 추가

작업의 효율성을 위해 테이블을 추가하는 것.

  • 집계 테이블 추가: 집계 데이터를 위한 테이블 생성, 원본 테이블에 트리거를 설정하여 사용.
  • 진행 테이블 추가: 이력 관리 등의 목적으로 테이블 추가.
  • 특정부분만을 포함하는 테이블 추가: 데이터가 많은 테이블에서 특정 부분만을 사용하는 경우 해당 부분으로 새로운 테이블 형성.