- 1NF (First Normal Form)
- Features of Good Relational Design
- Functional Dependencies
- Decomposition Using Functional Dependencies
- BCNF (Boyce-Codd Normal Form)
- 3NF
- Multivalued Dependencies and 4NF
- Overall DB Design Process
by Prof. Chang Hwan Lee
1NF (First Normal Form)
릴레이션에 속한 모든 속성의 도메인이 atomic 값으로만 구성되어 있으면 1NF에 속한다
Features of Good Relational Design
Non-atomic 값들은 저장공간을 복잡하게 하고, 중복을 만든다
여기서, DB 설계의 안 좋은 경우는 다음과 같다
- 정보의 반복
- 수정(insert, delete, update)
- 특정 정보 표현의 어려움
예시를 들어보자,
- 값이 반복되는 중복이 일어난다
- assets 값의 불일치의 가능성이 있다 (Complicates updating)
- null 값을 사용할 수는 있지만 다루기 힘들다
- L-23 loan이 삭제되면 Redwood branch도 사라진다
그렇다면, 좋은 테이블로 만드려면 어떻게 해야하나?
Split !
여러 Decomposition 방법이 있지만, 다음 두 가지 조건을 만족시켜야 한다
그 때 Decomposition을 Normalization 이라고 한다
- Attribute preservation
- 어느 attribute도 잃지 않는다
- Lossless join
- 어느 data도 잃지 않는다
이러한 Normalization 이론은 FD(functional dependencies), MVD(multivalued dependencies) 에 기반한다
Functional Dependencies
모든 실제 Constraints 를 만족하는 관계의 경우를 관계의 Legal Instance 라고 한다.
그리고, 관계 "r"이 FD set "F"에 legal이라면,
"r"은 "F"를 satisfies 하고 "F"는 "r"을 holds on 한다고 부른다
즉, 알파 값은 하나의 베타 값을 결정한다
하지만 이 때 FD(Functional Dependencies)는 data를 보고 결정할 수 없다
FD는 모든 관계의 instance가 만족될 때 “Trivial”하다고 한다 (당연한)
FD는 만족하지만, Trivial은 아닌 경우도 있다
ex) 특정 instance에서 name → ID를 만족하는 경우
일련의 FD "F"가 주어지면,
F에 의해 논리적으로 암시되는 특정한 다른 FD가 있다
F에 의해 논리적으로 암시되는 모든 FD의 집합은 F의 closure이다
우리는 F+을 가지고 F의 closure를 나타낸다 (Armstrong’s axioms)
이 규칙들은
sound(실제로 유지되는 기능 종속성만 포함) 하고,
complete(유지하는 모든 기능 종속성 포함) 하다
F+의 FD f를 모두 확인하고, F+의 f1-f2 쌍을 모두 확인하여 F의 closure를 계산한다
그리고 이를 통해
위 조건들을 추론할 수 있다
주어진 FD 집합 F로부터 후보키를 찾아낼 때,
모든 F+를 구해 후보키를 알아내야 할까?
이는 경우의 수가 너무 많기 때문에 Attribute Closure 를 이용해 후보키를 구한다
Attribute Closure는 F에서 우변의 속성을 제외한 나머지 속성들이 모두 후보키 될 자격이 있는 키다
Attribute Set의 test 과정은 다음과 같다
다음 예시를 살펴보자
여기서 AG는 super key이며,
A, G는 후보키가 된다
Decomposition Using Functional Dependencies
- Canonical Cover (중복 지우기)
extraneous 성질을 살펴보자
이는 중복을 나타낼 수 있으며, 확인 절차 후 삭제하여 분해해야 한다
다음 예시를 살펴보자
위 예시처럼, extraneous 한 원소를 확인하고, 제거시킨 후 검토한다
- 복습 (Normalization)
이같은 정규화는 FD(Functional Dependencies) / MVD(Multivalued Dependencies) 에 기반하고
(이 파트에서는 두 테이블로 분해하는 것 까지만 다룸)
정규화를 진행할 때는 각 Relation이 good form을 유지하고, lossless-join 을 만족한다
'DB' 카테고리의 다른 글
[DB][데이터베이스] 7-2. BCNF & 3NF & 4NF(MD) (0) | 2021.12.02 |
---|---|
[DB][데이터베이스] 5. Advanced SQL / 고급 sql (0) | 2021.11.26 |
[DB][데이터베이스] 4. Intermediate SQL / 중간 단계의 sql (0) | 2021.11.26 |
[DB][데이터베이스] 3. SQL / sql의 기본 문법 (0) | 2021.10.28 |
[DB][데이터베이스] 2. E-R / Entity와 Relationship (0) | 2021.10.08 |