일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 생일문제
- Python
- 직박구리과
- 비둘기목
- ADsP
- Birthday paradox
- IBK기업은행 인턴
- 흰날개해오라기
- 기러기목
- 딥러닝 공부
- structured_array
- SimpleCraft
- 참새과
- 참새목
- keras
- 가마우지과
- 딥러닝공부
- django
- 딱다구리과
- 비둘기과
- 오리과
- AI전략게임
- 계수정렬
- 백로과
- 한국의 새
- 솔딱새과
- 맑은소리 스피치학원
- python3
- AI역량평가
- 한국의새
- Today
- Total
진박사의 일상
[데베시] 13강 - Normalization 본문
- 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 불가능)
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로 분할
부분적 함수 종속을 보이던 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로 분할
Boyce-Codd Normal Form(BCNF)
- relation schema R의 모든 함수적 종속 X->A에서 X가 superkey여야 한다.
- BCNF는 3NF 조건 중에서 A가 prime attribute이면 된다는 조건도 허용하지 않음.
ex)
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 |