이행적 종속을 가지는 {Author Nationality} 와 {Genre Name}을 분리하여 각각 릴레이션으로 만듦
BCNF: Boyce-Codd Normal Form
3NF에서 조금 더 강화된 버전 (3.5NF 라고도 불림)
모든 함수 종속 관계 ( X -> Y) 에서 X로 가능한 집합의 속성이 모두 슈퍼 키 이면 BCNF을 만족한다
위 함수적 종속 관계에는 이행적 종속이 존재하지 않기 때문에 3NF을 만족한다
{D}가 슈퍼키에 포함되어 있지 않기 때문에 BCNF 조건에는 만족하지 않는다
위반하는 함수 종속 관계를 다른 릴레이션으로 분리하여 BCNF 만족시킨다
3NF 을 만족하면 정규화 되었다고 한다
Analytic query를 주로 실행하는 OLAP 애플리케이션인 경우 성능 향상을 위해 낮은 수준의 정규화를 추구하기도 한다
Denormalization : 일부 쓰기 성능의 손실을 감수하고 데이터를 묶거나 데이터의 복제 사본을 추가함으로써 데이터베이스의 읽기 성능을 개선하려고 시도하는 과정
정규형의 종류 - 2
4NF: Fourth normal form
Multi-valued dependency
함수적 종속성과 달리 이 조건은 튜플이 생성될 때 속성들 사이의 관계를 말한다
릴레이션에 3개 이상의 속성이 있을 때 (X, Y, Z) 존재한다. X 값이 Y 값의 집합을 가지고 Z의 값의 집합을 가질 때 Y, Z값은 서로 독립적일 때 mult-valued dependency 가 있다고 한다
릴레이션 R – Attribute-sets α ∈ R, β ∈ R
α →→ β (α multidermines β)
Multi-valued dependency
예제) 두 개의 multi-valued dependency를 가진다
{ Course } →→ { Book }
{ Course } →→ { Lecturer }
Trivial multi-valued dependency : X →→ Y
If Y is a subset of X
Or X ⋃ Y is whole set of Relation
제 4 정규형 (4NF, Fourth Normal Form)
BCNF 를 만족하면서 릴레이션의 모든 notrivial multi-valued dependency X →→ Y의 경우 X가 superkey인 경우
5NF: Fifth normal form
제 5 정규형 (5NF, Fifth Normal Form) – PJNF (Project-Join Normal Form)
Join Dependency : 릴레이션 T의 부분 속성 집합 (projection table of T) {A, B, C} 를 조인한 결과가 릴레이션 T와 같을 때 JD 만족
제 5 정규형의 조건
릴레이션에 존재하는 모든 Join Dependency 이 기존 릴레이션의 슈퍼키를 가질 때 만족한다 여러개의 릴레이션으로 분해했을 때 나누어진 릴레이션이 기존 릴레이션의 슈퍼키를 가지며 더 이상 무손실 분해가 불가능할 때
(Franchisee ID, Title) 의 (Franchisee ID, Location) 조인은 기존 테이블을 만들지 못하므로 Join Dependency를 만족 못함 즉, 기존 테이블은 무손실 분해가 불가능한 상태이므로 5NF 를 만족한다 4NF을 만족하는 릴레이션이 5NF을 만족 못 하는 매우 드물다
6NF: Sixth normal form
제 6 정규형 (6NF, Sixth Normal Form)
a table is in 6NF when the row contains the Primary Key, and at most one other attribute
하나의 entity를 표현하기 위해 많은 테이블이 필요함 (만약 5NF 테이블이 primary key + N Attributes ) -> N 테이블이 필요함
데이터 업데이트할 때 여러 테이블을 함께 업데이트 하므로 OLTP에 안 좋음
Analytics query (OLAP)을 중시하는 Datawarehouse 솔루션들은 내부적 저장 포맷을 column-based로 해서 6NF와 비슷한 포맷으로 저장함
Aggregation과 같은 range query에 빠른 성능
Compression이 잘 되기 때문에 저장공간 절약
4. 데이터베이스 설계 프로세스
전체적인 데이터베이스 설계 프로세스
데이터베이스 디자인을 통해 테이블의 스키마는 다음과 같은 경우로 생성된다
ER 다이어그램을 릴레이션으로 변환을 통하여 생성
모든 속성(Attributes)을 포함하는 하나의 릴레이션 – Universal relation
정규화를 통해서 작은 테이블들로 분해 된다
ad hoc 디자인을 통해서 생성
정규화를 통해서 테스트하고 좋은 디자인으로 변화
ER 다이어그램과 Normalization
ER 다이어그램이 모든 데이터를 잘 표현할 수 있게 설계되어 있다면 ER 다이어그램으로 생성된 테이블들은 추가적인 정규화 과정이 필요하지 않다
그러나 실제 디자인에서는 키 속성이 아닌 속성 (attribute)에서 시작하는 함수적 종속성 (functional dependency)이 있을 수 있고 이런 문제들을 정규화를 통해서 분해 과정을 거친다