데이터베이스 정규화
2022.07.07 공부 내용, 2022.07.15 보강
관계형 데이터베이스 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는 다음 조건을 만족하는 attribute 집합.
Superkey → {Every attribure}
Minimal한 superkey. Attribute를 하나 이상 지울 경우 더 이상 superkey가 아님. key라고도 부름.
Candidate key에 포함된 attribute. Non-prime attribute란 어느 candidate key에도 등장하지 않는 attribute.
Candidate key 중에서 사용하기로 선택된 키.
정규화란 데이터베이스에서 불필요한 정보를 줄이고 무결성을 유지하기 위한 처리 과정.
특정 조건을 만족하는 normal form으로 변경하는 과정. normal form의 종류는 다음과 같음.
데이터베이스의 각 column이 하나의 원자 값만 가지는 경우.
1NF를 만족하며, 모든 non-prime attribute Y에 대해, X → Y가 완전 함수 종속인 경우
X → Y이고, X 내의 어떤 attribute A에 대해 X - {A}가 Y를 함수적으로 결정하지 못 하는 경우.
2NF를 만족하며, 어떤 non-prime attribute도 primary key에 이행 함수 종속적이지 않은 경우.
X → Y일 때 다음과 같은 Z가 존재하면 Y가 X에 이행 함수 종속이라고 함.
3NF를 만족하며, X → Y를 만족하는 경우 Y ⊆ X 혹은 X가 superkey인 경우.
데이터베이스 스키마를 더 작은 단위로 분해하는 것. relation R이 있다면 더 작은 relation R1, R2가 생성됨. 정규화도 이에 해당.
R을 R1, R2로 분해했을 때, R1과 R2의 natural join이 R이 되는 경우.
R을 R1, R2로 분해했을 때, R이 R1과 R2의 natural join의 proper subset이 되는 경우.
BCNF를 만드는 과정은 loseless decomposition. 그러나 BCNF를 수행하는 과정에서 함수적 종속이 소실됨.
정규화된 relation에 redundant한 copy를 추가하는 등의 방법으로 정규화 전 상태로 되돌리는 것. 상황에 따라 성능 향상을 보임. (Tradeoff 존재)
정규화는 relation을 normal form으로 만드는 과정. 1NF ~ BCNF 까지가 주로 사용되며 각 단계를 거치며 중복 정보는 줄어들고 relation 개수는 늘어 남. 성능 향상을 위해 denormalization을 고려해야 함.