개발/CS

[DB] 데이터베이스 정규화와 이상 현상 (Normalization & Anomaly)

zz132456zz 2022. 4. 16. 01:19
728x90

정규화란 이상 현상을 제거하기 위해서 데이터베이스를 올바르게 설계해 나가는 과정이다.

여기서 이상 현상이란 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용이다.

 

이상 현상의 종류

1. 삽입 이상 

데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

 

2. 갱신 이상

중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 문제

 

3. 삭제 이상

튜플을 삭제하면 꼭 필요한 데이터까지 같이 삭제되는 데이터 손실 문제

 

정규화

이상 현상을 제거하기 위해서 릴레이션을 의미 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다.

이때 함수적 종속성을 판단하여 정규화를 진행한다.

 

함수적 종속성이란 속성들 간의 관련성을 이야기하는데, 이를 이용하여 이상 현상이 일어나지 않는 릴레이션으로 설계하는 과정이 정규화이다.

 

함수 종속

X -> Y 일 때

"X가 Y를 함수적으로 결정한다" = "Y가 X에 함수적으로 종속되어 있다"

릴레이션 내의 모든 튜플을 대상으로 하나의  X값에 대한 Y값이 항상 하나인 경우를 의미한다.

 

함수 종속 관계를 판단할 때 현재의 속성 값을 기준으로 판단하면 안 되고 속성에 들어올 수 있는 값들을 고려하여 판단해야 한다. 일반적으로 기본키와 후보 키는 릴레이션의 다른 모든 속성들을 함수적으로 결정한다.

 

완전 함수 종속 (Full Functional Dependency)

일반적으로 함수 종속은 완전 함수 종속을 의미하는데 X -> Y 일 때 속성 집합 X의 일부분에는 Y가 종속되어 있지 않는다.

 

부분 함수 종속 (Partial Functional Dependency)

X -> Y 일 때 속성 집합 X의 부분집합에도 Y가 함수적으로 종속되어 있을 때 부분 함수 종속이라고 한다.

 

이행적 함수 종속 (Transitive Functional Dependency)

함수 종속 관계 X -> Y, Y -> Z 가 있으면 논리적으로 X -> Z 가 성립된다. 이것을 Z가 X에 이행적으로 함수 종속되었다고 한다.

 

 

 

 

 

 

 

 

 

 

728x90