관리 메뉴

Partially Committed

[#07] Normalization λ³Έλ¬Έ

πŸ’» Study !/Database System

[#07] Normalization

WonderJay 2022. 7. 18. 14:18
728x90
λ°˜μ‘ν˜•
SMALL

ν•™λΆ€ μˆ˜μ—…μ„ μ •λ¦¬ν•˜κΈ° μœ„ν•΄ μ˜¬λ¦¬λŠ” κ²Œμ‹œκΈ€μœΌλ‘œ, 잘λͺ»λœ λ‚΄μš©μ΄ μžˆμ„ μ‹œ μ§€μ ν•΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€!


  μ—¬λŸ¬κ°€μ§€ Schema λ₯Ό ν•©μ³μ„œ ν•˜λ‚˜μ˜ table 을 κ΅¬μΆ•ν•˜λŠ” 경우 λ°μ΄ν„°μ˜ λΆˆν•„μš”ν•œ 쀑볡이 λ°œμƒν•  여지가 λ§Žλ‹€. μ΄λŸ¬ν•œ 쀑볡은 각각의 attribute κ°„μ˜ functional dependency 에 μ˜ν•΄ μ•ΌκΈ°λœλ‹€. (μ΄ν•˜ FD라고 뢀름)

 

  Functional Dependency(FD)

νŠΉμ • attribute λ₯Ό μ•Œκ³  μžˆμ„ λ•Œ, λ‹€λ₯Έ attribute λ₯Ό μ•Œ 수 μžˆλŠ” dependent ν•œ 관계λ₯Ό FD 라고 ν•œλ‹€.

●  K κ°€ R 의 super key 라면 K -> R κ³Ό 같은 FD κ°€ μ‘΄μž¬ν•œλ‹€.

●  K κ°€ R 의 Candidate key 라면 K -> R μ΄μ§€λ§Œ, K 에 μ†ν•œ μž„μ˜μ˜ attribute λ₯Ό a 라고 ν–ˆμ„ λ•Œ K-a λŠ” R에 λŒ€ν•œ FD κ°€ μ—†λ‹€.

●  B κ°€ A의 subset 이면 A->B λŠ” trivial ν•˜λ‹€.

●  A->B 이고 B->C 이면 A->C μž„μ„ logically ν•˜κ²Œ μΆ”λ‘ ν•  수 μžˆλŠ”λ°(마치 삼단논법), μ΄λŸ¬ν•œ FD λ“€μ˜ 집합을 closure 이라고 ν•œλ‹€. (FD κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, ν•΄λ‹Ή FDλ‘œλΆ€ν„° μΆ”λ‘  κ°€λŠ₯ν•œ λͺ¨λ“  FD)

●  F의 closure 은 F+ 라고 ν‘œκΈ°ν•œλ‹€.(notation)

 

  μ΄λŸ¬ν•œ FD λŠ” λ‹€μ–‘ν•œ μ—°μ‚° 법칙이 μ‘΄μž¬ν•œλ‹€.

●  Subset Property (Trivial)

:  λ§Œμ•½ Y κ°€ X 의 subset 이면 X->Y κ°€ trivial ν•˜λ‹€.

●  Augmentation

:  λ§Œμ•½ X->Y κ°€ μ„±λ¦½ν•œλ‹€λ©΄ XZ->YZ λ˜ν•œ μ„±λ¦½ν•œλ‹€.

●  Transitivity

:  λ§Œμ•½ X->Y κ°€ μ„±λ¦½ν•˜κ³  Y->Z κ°€ μ„±λ¦½ν•˜λ©΄ X->Z λ˜ν•œ μ„±λ¦½ν•œλ‹€.

●  Union

:  λ§Œμ•½ X->Y 이고 X->Z 이면 X->YZ κ°€ μ„±λ¦½ν•œλ‹€.

●  Decomposition

:  λ§Œμ•½ X->YZ 이면, X->Y 와 X->Z κ°€ μ„±λ¦½ν•œλ‹€.

●  Pseudo - transitivity

:  λ§Œμ•½μ— X->Y κ°€ μ„±λ¦½ν•˜κ³  WY->Z κ°€ μ„±λ¦½ν•˜λ©΄, WX->Z λ˜ν•œ μ„±λ¦½ν•œλ‹€.

 

  예제λ₯Ό ν†΅ν•΄μ„œ μ‚΄νŽ΄λ³΄μž.

λ§Œμ•½μ— R = { A, B, C, G, H, I } 이고 F = { A->B,  A->C,  CG->H,  CG->I,  B->H  } 라고 μ£Όμ–΄μ‘Œλ‹€κ³  μƒκ°ν•΄λ³΄μž.

● A->H λΌλŠ” FD λŠ”μ„±λ¦½ν•˜λŠ”κ°€?

:  A->B κ°€ μ„±λ¦½ν•˜κ³  B->H κ°€ μ„±λ¦½ν•˜λ―€λ‘œ Transitivity 에 μ˜ν•΄ A->H λ˜ν•œ μ΄ν–‰μ μœΌλ‘œ μ„±λ¦½ν•œλ‹€.

● AG->I λΌλŠ” FD κ°€ μ„±λ¦½ν•˜λŠ”κ°€?

:  A->C μ—μ„œ augmentation 에 μ˜ν•΄ AG->CG κ°€ 성립함을 μ•Œ 수 μžˆλ‹€. λ˜ν•œ CG->I κ°€ 성립함을 이미 μ•Œκ³  μžˆλŠ”λ°, transitivity 에 μ˜ν•΄μ„œ AG->I κ°€ 성립함을 μ•Œ 수 μžˆλ‹€.

● CG->HI λΌλŠ” FD λŠ” μ„±λ¦½ν•˜λŠ”κ°€?

:  augmentation 에 μ˜ν•΄μ„œ CG->I λΌλŠ” FD λ‘œλΆ€ν„° CG->CGI κ°€ 성립함을 μ•Œ 수 μžˆλ‹€. λ˜ν•œ CG->H 둜 λΆ€ν„° CGI->HI κ°€ μ„±λ¦½ν•˜λŠ”λ°, 이λ₯Ό μ΄μš©ν•΄μ„œ CG->HI κ°€ 성립함을 transitivity property 에 μ˜ν•΄ μ•Œ 수 μžˆλ‹€.

 

 

  Lossy decomposition

Relation 을 decomposition ν•œ λ‹€μŒμ— λ‹€μ‹œ μ›λž˜λŒ€λ‘œ reconstruction ν•  수 μ—†λŠ” 경우λ₯Ό Lossy decompositionb 이라고 ν•œλ‹€. μš°λ¦¬λŠ” Lossless join decomposition 에 μ£Όλͺ©ν•΄μ•Ό ν•œλ‹€. Lossless join decomposition 은 Relation 을 decomposition ν•œ 이후에 λ‹€μ‹œ reconstruct ν•˜λ”λΌλ„ μ •λ³΄μ˜ 손싀이 μ—†λŠ” 것을 μ˜λ―Έν•œλ‹€.

  Normalization 의 λͺ©ν‘œ

데이터λ₯Ό μ •κ·œν™”ν•œλ‹€λŠ” 것은 λΆˆν•„μš”ν•˜κ²Œ μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŒμœΌλ‘œμ„œ data integrity λ₯Ό μœ μ§€ν•  수 있고, database 의 μš©λŸ‰μ„ μ ˆμ•½ν•  수 μžˆλ‹€. ν•œλ§ˆλ””λ‘œ λ§ν•˜λ©΄ μ •κ·œν™”λŠ” 데이터 λ² μ΄μŠ€μ—μ„œ λΆˆν•„μš”ν•œ μ€‘λ³΅λœ μš”μ†Œλ₯Ό μ œκ±°ν•΄λ‚˜κ°€λŠ” κ²ƒμœΌλ‘œ, FD 듀을 μ΄μš©ν•΄μ„œ Relation 을 decomposition ν•΄μ„œ λ‹€μ–‘ν•œ μ΄μƒν˜„μƒμ΄ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ μ μš©ν•œλ‹€.

 

  First Normal Form [제 1 μ •κ·œν™”]

First normal form 은 Relaton 의 Domain 의 λͺ¨λ“  attribute 듀이 atomic ν•˜λŠ” 경우 μ„±λ¦½ν•œλ‹€. 예λ₯Ό λ“€μ–΄ dept_name 의 attribute κ°€ 2 가지 이상 값을 가진닀면 ν•˜λ‚˜μ˜ κ°’λ§Œ 가지도둝 atomic ν•˜κ²Œ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€. course_name κ³Ό dept_name 을 attribute 둜 κ°€μ§€λŠ” relation 이 μžˆλ‹€κ³  ν–ˆμ„ λ•Œ, C programming μ΄λΌλŠ” course_name 은 EE,CS 와 같이 dept_name  에 2개의 값이 μ‘΄μž¬ν•  수 μžˆλ‹€. μ΄λŠ” atomic ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ 각각 C programming - EE,  C programming - CS 와 같이 atomic ν•˜κ²Œ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€.

 

  Second Normal Form [제 2 μ •κ·œν™”]

First normal form 을 λ§Œμ‘±ν•˜λŠ” table 에 λŒ€ν•˜μ—¬ Primary key 의 partial set 이 determinant κ°€ λ˜μ–΄μ„œλŠ” μ•ˆλœλ‹€. PK κ°€ Composite Primary key 이면, ν•΄λ‹Ή Key 전체에 λŒ€ν•˜μ—¬ Dependent ν•΄μ•Ό ν•˜λŠ”λ° 일뢀 subset 에 λŒ€ν•΄μ„œλ§Œ Dependent ν•œ attribute κ°€ μ‘΄μž¬ν•œ 경우 이λ₯Ό decompose ν•΄μ•Ό ν•œλ‹€. (partial functional dependency κ°€ μ‘΄μž¬ν•˜λ©΄ μ•ˆλœλ‹€.) 

예λ₯Ό λ“€μ–΄, takes λ¦΄λ ˆμ΄μ…˜μ€ takes_id, course_id, cource_name 을 attribute 둜 가지고, ( takes_id, course_id ) κ°€ PK 인 상황을 μƒκ°ν•΄λ³΄μž. 이 λ¦΄λ ˆμ΄μ…˜μ„ κ΄€μ°°ν•΄λ³΄λ‹ˆ takes_id → course_id  이고, course_id → course_name 이닀. 즉, Composite PK 의 일뢀인 partial set 에 λŒ€ν•˜μ—¬ dependency κ°€ μ‘΄μž¬ν•˜κ³  μžˆμœΌλ―€λ‘œ, Second Normal Form 을 λ§Œμ‘±ν•˜μ§€ μ•Šμ•„ λΆ„ν•΄ν•΄μ•Ό ν•˜λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

  Boyce-Codd Normal Form[BCNF]

X Y κ°€ trival FD μ΄κ±°λ‚˜ ν˜Ήμ€ X κ°€ R 의 Super key 인 λ¦΄λ ˆμ΄μ…˜μ„ BCNF λ₯Ό λ§Œμ‘±ν•œλ‹€κ³  ν•œλ‹€. μ΄λŠ” λͺ¨λ“  determinant κ°€ key μ—¬μ•Ό ν•œλ‹€λŠ” 것이닀.

예λ₯Ό λ“€μ–΄ μœ„μ™€ 같이 주어진 Inst_dept μ—μ„œλŠ” dept_name 이 key κ°€ μ•„λ‹˜μ—λ„ FD κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— BCNF λ₯Ό λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλ ‡λ‹€λ©΄ BCNF λ₯Ό λ§Œμ‘±ν•˜λ„λ‘ λΆ„ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ? μ΄λŠ” κ³΅μ‹μ²˜λŸΌ, μ•„λž˜μ˜ 절차λ₯Ό λ”°λ₯΄λ©΄ λœλ‹€.

 

1.  BCNF λ₯Ό μœ„λ°˜ν•˜λŠ” nontrivial FD 인 X → Y λ₯Ό μ°ΎλŠ”λ‹€.

2.  그리고 μ•„λž˜μ˜ 두 relation 으둜 λΆ„ν•΄ν•˜λ©΄, BCNF λ₯Ό λ§Œμ‘±ν•˜λ„λ‘ λ§Œλ“€ 수 μžˆλ‹€.

     β— (X U Y)

     β— (R - (Y-X))

 

BCNF λŠ” λ„ˆλ¬΄ κ³Όν•˜κ²Œ decompose ν•˜λŠ” 츑면이 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ AB → C, C→B  와 같은 FDs κ°€ μžˆμ„ λ•Œ, BCNF 둜 λ§Œλ“€λ©΄ (A,C), (B,C) 둜 λΆ„ν•΄λœλ‹€κ³  ν•˜μž. μ΄λŸ¬ν•œ 경우 μ›λž˜ 가지고 있던 FD 인 AB → C λŠ” λ³΄μ‘΄λ˜μ§€ μ•ŠλŠ”λ‹€.

     β— BCNF 와 dependency preservation 을 λ™μ‹œμ— λ§Œμ‘±ν•˜λŠ” 것은 항상 κ°€λŠ₯ν•˜μ§€ μ•Šλ‹€.

     β— Dependency preservation 을 λ§Œμ‘±μ‹œν‚€κ³ μž ν•œλ‹€λ©΄ 3NF λ₯Ό κ³ λ €ν•˜λŠ” 것도 ν•˜λ‚˜μ˜ 방법이닀.

 

 

Third Normal Form [제 3 μ •κ·œν™”]

  Third Normal Form 은 2NF λ₯Ό λ§Œμ‘±ν•˜λŠ” ν…Œμ΄λΈ”μ΄ μžˆμ„ λ•Œ, determinant μ™Έμ˜ attribute κ°„ dependency κ°€ λ°œμƒν•˜λ©΄ μ•ˆλœλ‹€. dependency κ°€ λ°œμƒν•˜λ©΄ redundancy κ°€ 생기기 λ•Œλ¬Έμ—, trasient dependency λ₯Ό λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€. 이행적 ν•¨μˆ˜ 쒅속관계가 λ°œμƒν•˜λ©΄ μ•ˆλœλ‹€.

  예λ₯Ό λ“€μ–΄ takes_info λΌλŠ” λ¦΄λ ˆμ΄μ…˜μ—λŠ” takes_id(PK), semester, student_id, phone_num κ³Ό 같이 attribute κ°€ κ΅¬μ„±λ˜μ–΄μžˆλ‹€κ³  치자. ν•΄λ‹Ή λ¦΄λ ˆμ΄μ…˜μ„ μ‚΄νŽ΄λ³΄μ•˜λ”λ‹ˆ student_id λŠ” PK κ°€ μ•„λ‹˜μ—λ„ student_id 에 μ˜ν•΄ Phone_num 이 κ²°μ •λ˜λŠ” 이행적 쒅속 관계가 μžˆμœΌλ―€λ‘œ, 3NF λ₯Ό λ§Œμ‘±ν•˜μ§€ λͺ»ν•œλ‹€. 고둜 이λ₯Ό 뢄리해야 ν•œλ‹€.

     β—  BCNF λŠ” Dependency λ₯Ό preserving ν•˜μ§€ μ•ŠμœΌλ©° Update 에 μ˜ν•œ FD violation 의 λ°œμƒμ„ 효과적으둜 ν™•μΈν•˜λŠ” 것이 ν•„μš”ν•˜λ‹€λ©΄ BCNF 보닀 μ•½ν•œ μ •κ·œν˜•μΈ 3NF λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

 

Goals of Normalizaton (Benefits of Normalization) 

이와 같이 μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•˜λŠ” λͺ©μ μ„ μ •λ¦¬ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

1. Less storage space

2. Quicker updates

3. Less data inconsistency

4. Clearer data relationships

5. Easier to add data

6. Flexibel Structure

 

Denormalization for Performance

κ°„ν˜Ή μ •κ·œν™” λ˜μ§€ μ•Šμ€ μŠ€ν‚€λ§ˆλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 보닀 쒋은 μ„±λŠ₯을 보일 λ•Œκ°€ μžˆλ‹€. μ΄λŸ¬ν•œ 경우, κ·Έλƒ₯ μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•Šκ³  μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ±°λ‚˜ materialized view λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

 


References
●  Slides from Professor wookhee Kim (Konkuk. Univ)

●  Databasγ…  e System Concepts Seventh Edition

      - Avi Silberschatz Henry F. Korth S. Sudarshan

728x90
λ°˜μ‘ν˜•
LIST

'πŸ’» Study ! > Database System' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[DB] Correlation subquery 의 μ‹€ν–‰ μˆœμ„œ  (0) 2023.03.30
Natural Join 의 μœ„ν—˜μ„±? (03/22)  (0) 2023.03.22
[#06] Database Design Using the E-R Model  (0) 2022.07.18
[#01] Introduction  (0) 2022.07.06
Comments