DB Normalization
DB Normalization
Functional Dependency
관계형 데이터베이스 R의 attribute로 이루어진 집합 X, Y와 R 내의 모든 튜플 t에 대해, t[X]의 값이 정확히 한 개의 t[Y]의 값과 연결된다고 하자.
이 때 X는 Y를 함수적으로 결정한다고 하고, Y는 X에 함수적으로 종속되어 있다고 한다. X → Y로 표기함.
즉, t1[X] = t2[X] ⇒ t1[Y] = t2[Y]
Superkey
Superkey는 다음 조건을 만족하는 attribute 집합.
Superkey → {Every attribure}
Candidate Key
Minimal한 superkey. Attribute를 하나 이상 지울 경우 더 이상 superkey가 아님. key라고도 부름.
Prime attribute
Candidate key에 포함된 attribute. Non-prime attribute란 어느 candidate key에도 등장하지 않는 attribute.
Primary key
Candidate key 중에서 사용하기로 선택된 키.
Normalization
정규화란 데이터베이스에서 불필요한 정보를 줄이고 무결성을 유지하기 위한 처리 과정.
특정 조건을 만족하는 normal form으로 변경하는 과정. normal form의 종류는 다음과 같음.
1NF
데이터베이스의 각 column이 하나의 원자 값만 가지는 경우.
2NF
1NF를 만족하며, 모든 non-prime attribute Y에 대해, X → Y가 완전 함수 종속인 경우
완전 함수 종속
X → Y이고, X 내의 어떤 attribute A에 대해 X - {A}가 Y를 함수적으로 결정하지 못 하는 경우.
3NF
2NF를 만족하며, 어떤 non-prime attribute도 primary key에 이행 함수 종속적이지 않은 경우.
이행 함수 종속
X → Y일 때 다음과 같은 Z가 존재하면 Y가 X에 이행 함수 종속이라고 함.
- X → Z, Z → Y
- Z → X가 아님.
- Z는 어떤 키 혹은 키의 부분집합이 아님.
BCNF
3NF를 만족하며, X → Y를 만족하는 경우 Y ⊆ X 혹은 X가 superkey인 경우.
Decomposition
데이터베이스 스키마를 더 작은 단위로 분해하는 것. relation R이 있다면 더 작은 relation R1, R2가 생성됨. 정규화도 이에 해당.
Lossless decomposition
R을 R1, R2로 분해했을 때, R1과 R2의 natural join이 R이 되는 경우.
Lossy decomposition
R을 R1, R2로 분해했을 때, R이 R1과 R2의 natural join의 proper subset이 되는 경우.
BCNF & Loseless
BCNF를 만드는 과정은 loseless decomposition. 그러나 BCNF를 수행하는 과정에서 함수적 종속이 소실됨.
Denormalization
정규화된 relation에 redundant한 copy를 추가하는 등의 방법으로 정규화 전 상태로 되돌리는 것. 상황에 따라 성능 향상을 보임. (Tradeoff 존재)
References
- Fundamentals of Database Systems (7/E), Ramez Elmasri, Shamkant B. Navathe
- 슈퍼키
- 후보키
- Loseless & Lossy Decomposition