진박사의 일상

[데베시] 13강 - Normalization 본문

프로그래밍/공부

[데베시] 13강 - Normalization

진박사. 2021. 12. 15. 11:46

- Normal forms과 Normalization

 

Normalization

- Normal form : relations의 바람직한 형태를 정의

- Normalization : relation schema를 작고 바람직한 relation으로 나누는 과정

- Normalization은 Lossless join property & Dependency preservation property를 만족하게 분할해야 함

 

Prime Attribute

- relation schema R의 일부 candicate key에 속하는 attribute. -> R의 Candidate key가 있을 때 그 key의 각 attribute

ex) WORKS_ON(Ssn, Pnumber, Hours) -> {Ssn, Pnumber}는 후보키 -> Ssn과 Pnumber는 prime attribute

 

First Normal Form(1NF)

- 속성값으로 오직 단일 원자값만 허용하는 구조 = 각  attribute의 튜플은 오직 해당 domain의 하나의 값만을 가지고 있어야 한다. = 다중값이 허용되지 않는다.

- relational model에서는 모든 relation은 반드시 1NF을 만족해야 한다.(기본 조건)

- 특성 : non-atomic attribute를 허용하지 않음 (Composite attribute, Multi-valued attribute, Neested relation 불가능)

(b)는 허용되지 않는 relation

 

Second Normal Form(2NF)

- Full functional dependency(완전 함수적 종속) : X -> Y, 단 X에 속하는 어떤 Attribute A라도 제거되면 더이상 X -> Y가 성립하지 X

- Partial functional dependency(부분적 함수적 종속) : X -> Y, 단 X에 속하는 어떤 Attribute A를 제거하더라도 X -> Y가 성립

ex) FD1 = {Ssn, Pnumber} -> Hours, FD2 = {Ssn, Pnumber} -> Ename, FD3 = {Pnumber} -> Pname

==> FD1의 경우 {Ssn} -> Hours이나 {Pnumber} -> Hours가 성립하지 않기 때문에 Full functional dependency

==> FD2의 경우 {Ssn} -> Ename이 성립하므로 Partial functional dependency

- 2NF의 정의 : relation schema R에 속하는 모든 nonprime attribute A(후보키에 속하지 않는 attribute)가 R의 모든 후보키에 대해 완전 함수적 종속 -> 2NF가 아닌 경우 : 어떤 nonprime Attribute가 R의 후보키에 부분적 함수 종속된다면 2NF가 아님

ex)

FD3는 {County_name, Lot#} -> Tax_rate인데 {County_name} -> Tax_rate이므로 부분적 함수 종속임 -> 2NF가 아님

- 2NF로 Normalization하기 : LOTS를 LOTS1 + LOTS2로 분할

FD1, FD2, FD4만 남기고 Tax_rate를 분할
County_name을 기본키이자 외래키로 둔 FD3을 나타내는 table

부분적 함수 종속을 보이던 FD3를 기준으로 다른 테이블로 분할

 

Third Normal Form(3NF)

- relation schema R의 모든 함수적 종속 X->A가 다음의 둘 중 하나를 만족시킨다면 3NF

-> 2가지 조건 : (1) X는 R의 superkey (2) A는 R의 prime attribute

-> (1) 조건 의미 : R 내부에 X가 같은 tuple은 존재하지 않음. 즉 X->A로 인한 중복이 존재하지 않음

-> (2) 조건 의미 : A가 candidate key에 속하는 attribute라면 X가 superkey가 아니라도 허용(예외조건)

ex)

FD4는 Area가 superkey도 아니고 Price도 prime attribute가 아니므로 조건 만족 x

- 3NF으로 Normalization : LOTS1을 LOTS1A와 LOSTS1B로 분할

FD4를 제거하기 위해 Price 제거
FD4를 분할

 

Boyce-Codd Normal Form(BCNF)

- relation schema R의 모든 함수적 종속 X->A에서 X가 superkey여야  한다.

- BCNF는 3NF 조건 중에서 A가 prime attribute이면 된다는 조건도 허용하지 않음.

ex)

3NF는 만족하지만 BCNF는 만족 X

FD5 : {Area} -> County_name은 3NF의 2번째 조건 A가 prime attribute라는 조건에 맞으므로 3NF -> but BCNF는 허용되지 않음.

-> BCNF로 Normalization : 두개로 나눔

 

 

note: ER 모델링을 잘 했다면 3NF으로 잘 모델링 될 것

'프로그래밍 > 공부' 카테고리의 다른 글

[데베시] 15강  (0) 2021.12.16
[데베시] 14강  (0) 2021.12.16
[데베시] 12강  (0) 2021.12.07
생일 문제(Birthday Paradox) - Python  (0) 2021.12.06
[컴보] 12강 - 포인터  (0) 2021.12.06