Database normalization guide
λ°μ΄ν°λ² μ΄μ€ μ κ·ν μλ²½ κ°μ΄λ
μΆμ λΉλ: μ
λΉμΆ νκ·Έ: μ’ μμ±, μ κ·ν λ¨κ³, μ΄μ νμ
λ°μ΄ν° μ’ μμ± (Data Dependency)
κΈ°λ³Έ κ°λ
- μ μ: λ°μ΄ν°μ λ λ€λ₯Έ λ°μ΄ν°κ° μλ‘ μμ‘΄κ΄κ³λ₯Ό κ°μ§λ κ²
- Aκ° λ³κ²½λ λ Bλ λ³κ²½λκ³ , Aκ° μμ λ λ Bλ μμ λ¨
- λ°μ΄ν° μ’ μμ±μΌλ‘ μΈν΄ λ³κ²½, μ½μ , μμ λ± μ μ½μ΄ λ°λ₯΄κ±°λ 무결μ±μ΄ νΌμλ¨
- μ’ λ₯: ν¨μ μ’ μ, λ€κ°(λ€μΉ)μ’ μ, μ‘°μΈ μ’ μ
ν¨μ μ’ μ (Functional Dependency)
- ν μμ±μ΄ λ€λ₯Έ μμ±μ μ μΌνκ² μλ³ν μ μλ μν
- Aμμ±μ΄ Bμμ±μ μ μΌνκ² μλ³:
A -> B
- ꡬμ±μμ:
- κ²°μ μ(Determinant): μ’ μμ± κ·λͺ μ κΈ°μ€ μμ±, μ μΌν¨, μ€λ³΅ λΉνμ©
- μ’ μμ(Dependent): κ²°μ μμ μν΄ κ°μ΄ μ ν΄μ§λ μμ±, μ€λ³΅ νμ©
λ€κ°(λ€μΉ) μ’ μ (MultiValued Dependency)
- νλμ κ²°μ μκ° λ€λ₯Έ μ¬λ¬ κ΄λ ¨μλ μμ±μ κ°μ κ²°μ ν¨
- μ’ μμλΌλ¦¬λ μλ‘ κ΄λ ¨μ΄ μμ
- νκΈ°:
G ->> H | J
-
μμ: νλ² -> μ΄λ¦ λμ¬νμ
μ‘°μΈ μ’ μ (Join Dependency)
- μ μ΄μμ 릴λ μ΄μ μΌλ‘ λΆν΄ν λ€ λ€μ μ‘°μΈνμ¬ λ³΅μν μ μμ
- 곡ν΅ν€λ₯Ό κΈ°μ€μΌλ‘ λ€μ μ‘°μΈλμ΄ λ³΅μν μ μμ΄μΌ ν¨
νν¬ (Closure)
κΈ°λ³Έ κ°λ
- μ μ: νΉμ μμ±μ μ’ μλμλ€κ³ μΆλ‘ κ°λ₯ν λͺ¨λ μμ±μ μ§ν©
- μ: νμλ²νΈ μμ±μ νν¬ = νμλ²νΈ+
μ’ μμ± μΆλ‘ κ·μΉ
- λ°μ¬(Reflexicity): Yκ° Xμ λΆλΆμ§ν©μΌ λ X->Y μ±λ¦½
- μ¦κ°(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μ΄κ³ YZ->Wμ΄λ©΄, XZ->W μ±λ¦½
μ κ·ν (Normalization)
κ°λ
- μ μ: μ€λ³΅μ±μ μ΅μννκ³ μ 보μ μΌκ΄μ±μ 보μ₯
- λ Όλ¦¬ λ°μ΄ν° λͺ¨λΈλ§ μμΈνμ κ°μ₯ μ€μν λ¨κ³
βμ κ·ν λ¨κ³β
- λΉμ κ·ν: μ κ·ν μ§ν μλ μν
- κΈ°λ³Έ μ κ·ν:
- 1NF
- 2NF (λΆλΆ ν¨μ μ’ μ μ κ±°)
- 3NF (μ΄νμ ν¨μ μ’ μ μ κ±°)
- BCNF
- κ³ κΈ μ κ·ν:
- 4NF (λ€μΉ μ’ μ μ κ±°)
- 5NF (μ‘°μΈ μ’ μ μ κ±°)
μ κ·ν νΉμ§
- μ νμ±, μΌμΉμ±, λ¨μμ±, λΉμ€λ³΅μ±, μμ μ± λ³΄μ₯
- λΆν΄ νλ¨κΈ°μ€ μ 곡
- λ¬΄κ²°μ± μ μ§ κ°λ₯
- μ μ°ν λ°μ΄ν° κ΅¬μΆ κ°λ₯ (λ¨, 물리μ μ κ·Όκ²½λ‘ λ³΅μ‘ν)
μ΄μ νμ
- λͺ©μ : λ°μ΄ν° μ½μ , κ°±μ , μμ μμ λ°μνλ μ΄μνμ μ κ±°
- μ’
λ₯:
- μ½μ μ΄μ: νν μ½μ μ κ΄λ ¨μλ μ 보 ν¨κ» μ½μ
- κ°±μ μ΄μ: νν κ°±μ μ λ°μ΄ν° λΆμΌμΉ
- μμ μ΄μ: νν μμ μ κ΄λ ¨λ μ 보 ν¨κ» μμ
μ κ·ν λ¨κ³λ³ μ€λͺ
- μ 1μ κ·ν (1NF)
- λͺ¨λ μμ±μ λλ©μΈμ΄ μμκ°μ κ°μ§
- μμκ°μ΄ μλ κ°μ κ°μ§λ μμ± μ κ±°
- μ€λ³΅ μ κ±°κ° μλ μμκ° λ³΄μ₯
- μ 2μ κ·ν (2NF)
- λͺ¨λ μμ±μ΄ μμ ν¨μ μ’ μμ κ°μ§
- μμ ν¨μ μ’ μ: μ’ μμκ° λͺ¨λ κ²°μ μμ μ’ μ
- λΆλΆ ν¨μ μ’ μ: μ’ μμκ° μΌλΆ κ²°μ μμ μ’ μ
- μμ:
- λΆλΆν¨μμ’ μ: νλ²->μ΄λ¦
- μμ ν¨μμ’ μ: {νλ²,κ³Όλͺ©}->μ±μ
- μ 3μ κ·ν (3NF)
- μ΄νμ ν¨μ μ’ μμ κ°μ§ μμ±μ΄ μ κ±°λ 릴λ μ΄μ μ€ν€λ§
- μμ: λμμ½λ->λμλͺ , λμλͺ ->μ μ, λμμ½λ->μ μ
- λͺ¨λ μμ±μ΄ 릴λ μ΄μ μ κΈ°λ³Έν€μ μ΄νμ μΌλ‘ μ’ μλμ§ μμ
- BCNF (Boyce-Codd μ κ·ν)
- κ²°μ μκ° ν보ν€κ° μλ ν¨μ μ’ μμ΄ μ κ±°λ μ€ν€λ§
- 릴λ μ΄μ μ΄ 3NFμ΄κ³ λͺ¨λ κ²°μ μκ° ν보ν€
- μ€μ μ μΈ μ κ·νμ λͺ©νκ° λλ λ¨κ³
- μ 4μ κ·ν (4NF)
- λ€μΉμ’ μμ±μ κ°μ§ μμ±μ μ κ±°
-
μ: κ³Όλͺ© -Β» κ°μ¬ νλ‘κ·Έλ¨
- μ 5μ κ·ν (5NF)
- μ‘°μΈ μ’ μμ μ κ±°
- μ‘°μΈ μ’ μμ±μ΄ ν보ν€λ₯Ό ν΅ν΄μλ§ μ±λ¦½
λ Όλ¦¬ λ°μ΄ν° λͺ¨λΈ νμ§ κ²μ¦
μ’μ λ°μ΄ν° λͺ¨λΈμ 쑰건
- μꡬμ¬νμ΄ λΉ μ§μμ΄ κ΅¬ν
- μμ€ν μ΄μμ μ΅μ ν
- (λ¨, κ°κ΄μ μΈ κΈ°μ€μ΄ μμ΄ νκ°κ° μ΄λ €μ)
λ°μ΄ν° λͺ¨λΈμ νκ°μμ
- μμ μ±: μμ ν(λΉ μ§μμ΄) νμ§ νκ°
- μ€λ³΅ λ°°μ : νμμ λ°λΌ λ°μ΄ν°λ₯Ό μΌλΆλ¬ μ€λ³΅μν΄
- μ 무 κ·μΉ: μ΄ν΄κ΄κ³μλ€μ΄ λμΌν νλ¨ νμ λ°μ΄ν° μ‘°μ
- λ°μ΄ν° μ¬μ¬μ©: ν΅ν© μ€κ³λ₯Ό ν΅ν μ¬μ¬μ©μ± ν₯μ
- μμ μ± λ° νμ₯μ±
- κ°κ²°μ±
- μμ¬μν΅
λ Όλ¦¬ λ°μ΄ν° λͺ¨λΈ νμ§ κΈ°μ€
- μ νμ±
- μμ μ± (λλ½ μ΅μν)
- μ€κ±°μ± (λ°μ΄ν° νμ€, νμ€ν κ·μΉ, λ²μ μ건 μ€μ)
- μ΅μ μ±
- μΌκ΄μ± (ν΅ν©μ±)
- νμ©μ±