- Today
- Total
- CS
- Graph
- 벨λ§ν¬λ
- PS
- λ°μ΄ν°λ² μ΄μ€
- Algorithm
- java
- database
- λ°±μλ
- OOP
- λ¬Έλ²
- dp
- μμμ λ ¬
- μ‘Έμ μν
- pytorch
- leetcode
- MST
- array
- λ°±μ€
- BFS
- spring
- 그리λ
- μλ°μμ μ
- tree
- μλ£κ΅¬μ‘°
- μλ°
- ꡬν
- λ€μ΅μ€νΈλΌ
- νλ‘κ·Έλλ¨Έμ€
- μΈν΄
Partially Committed
[#07] Normalization λ³Έλ¬Έ
νλΆ μμ μ μ 리νκΈ° μν΄ μ¬λ¦¬λ κ²μκΈμΌλ‘, μλͺ»λ λ΄μ©μ΄ μμ μ μ§μ ν΄μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€!
μ¬λ¬κ°μ§ 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
'π» 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 |