μ κ·νλ?
Attribute κ°μ μ’ μμ±μΌλ‘ μΈν μ΄μνμμ΄ λ°μνλ 릴λ μ΄μ μ λΆν΄νμ¬ μ¬λμμΈν¨μΌλ‘μ¨ μ΄μνμμ μμ λ κ³Όμ
λ°μ΄ν°μ μ€λ³΅ λ°©μ§, 무결μ±μ μΆ©μ‘±νκΈ° μν΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ€κ³νλ λ°©λ²
μ κ·νκ° μ겨λ λ°°κ²½
ν 릴λ μ΄μ (Relation)μ μ¬λ¬ μν°ν°μ μμ±μ νΌν©νλ©΄ μ λ³΄κ° μ€λ³΅ μ μ₯λλ©° μ μ₯ 곡κ°μ λλΉνκ² λλ€.
λ μ€λ³΅λ μ λ³΄λ‘ μΈν΄ 'μ΄μ νμ'μ΄ λ°μνκ² λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ κ·ν κ³Όμ μ κ±°μΉλ κ²μ΄λ€.
μ κ·νμ 3κ°μ§ μμΉ
- μ 보μ 무μμ€ : λΆν΄λ 릴λ μ΄μ μ΄ νννλ μ 보λ λΆν΄λκΈ° μ μ μ 보λ₯Ό λͺ¨λ ν¬ν¨ν΄μΌ νλ€.
- μ΅μ λ°μ΄ν° μ€λ³΅ : μ΄μ νμμ μ κ±°, λ°μ΄ν° μ€λ³΅μ μ΅μν
- λΆλ¦¬μ μμΉ : νλμ λ 립λ κ΄κ³μ±μ νλμ λ 립λ 릴λ μ΄μ μΌλ‘ λΆλ¦¬ν΄μ νν
μ κ·νμ μ₯λ¨μ
μ₯μ
- μ€λ³΅λ λ°μ΄ν°λ₯Ό μ΅μννμ¬ λ°μ΄ν°μ μΌκ΄μ±κ³Ό μ νμ±μ ν₯μμν¨λ€. => μ©λ μ€μ΄κΈ°
- λ°μ΄ν° μ‘°μμ ν¨μ¨μ μ΄λ€. λ°μ΄ν°μ μ½μ , κ°±μ , μμ , μ‘°ν λ±μ μμ μ΄ λ¨μνλκ³ λ³΅μ‘ν μ‘°μΈ μ°μ°μ μ΅μνν μ μλ€.
- 릴λ μ΄μ μμ λ°μνλ μ΄μνμμ ν΄κ²°νλ€.
λ¨μ
릴λ μ΄μ μ λΆν΄λ‘ μΈν΄ 릴λ μ΄μ κ°μ μ°μ°μ΄ λ§μμ Έ μλ΅ μκ°μ΄ μ€νλ € λλ €μ§ μλ μλ€.
μ΄λ¬ν κ²½μ° λ°μ κ·ν(De-normalization)μ ν΅ν΄μ μ±λ₯μ ν₯μμν¬ μ μλ€.
* λ°μ κ·ν: λ°μ΄ν°λ² μ΄μ€μ μ±λ₯μ ν₯μμν€κ±°λ 쿼리μ κ°κ²°μ±μ μν΄ μ κ·νλ λ°μ΄ν° λͺ¨λΈμμ μΌλΆ μ κ·ν κ·μΉμ 무μνκ±°λ μ‘°μ νλ κ³Όμ
μ κ·ν λ¨κ³
μ 1μ κ·ν (1NF)
ν μ΄λΈμ 컬λΌμ΄ μμκ°(Atomic Value, νλμ κ°)μ κ°λλ‘ ν μ΄λΈμ λΆν΄νλ κ².
κ΅μλͺ | λ΄λΉ κ³Όλͺ© |
λ°κ΅μ | μ¬ν |
μ΄κ΅μ | κ΅μ΄ |
κΉκ΅μ | μμ , μ²΄μ‘ |
μ΅κ΅μ | μν |
ν΄λΉ ν μ΄λΈμμ κΉκ΅μμ λ΄λΉ κ³Όλͺ©μ μμ κ³Ό 체μ‘μ΄λ€.
ν μ΄λΈμ 컬λΌ(λ΄λΉ κ³Όλͺ©)μ΄ μ¬λ¬ κ°μ κ°μ κ°μ§κ³ μμΌλ―λ‘ μ 1 μ κ·νμ μλ°°λλ€.
βμ 1 μ κ·νλ₯Ό λ§μ‘±νλ ν μ΄λΈ
κ΅μλͺ | λ΄λΉ κ³Όλͺ© |
λ°κ΅μ | μ¬ν |
μ΄κ΅μ | κ΅μ΄ |
κΉκ΅μ | μμ |
κΉκ΅μ | μ²΄μ‘ |
μ΅κ΅μ | μν |
κΉκ΅μμ λ΄λΉ κ³Όλͺ©μ λΆλ¦¬νμ¬ μ 1 μ κ·νλ₯Ό λ§μ‘±μν¨λ€.
μ 2 μ κ·ν (2NF)
μ 1 μ κ·νλ₯Ό μ§νν ν μ΄λΈμ λν΄ μμ ν¨μ μ’ μμ λ§μ‘±νλλ‘ ν μ΄λΈμ λΆν΄νλ κ² (λΆλΆ ν¨μ μ’ μμ± μ κ±°)
π€μμ ν¨μ μ’ μμ΄λ?
κΈ°λ³Έν€μ λΆλΆ μ§ν©μ΄ κ²°μ μκ° λμ΄μ μλλ€λ κ²
(κ³Όλͺ©κ³Ό μ§λκ΅μλ μΌλμΌ κ΄κ³μ΄λ€)
νλ² | κ°μ | μ§λ κ΅μ | μ±μ |
B810 | λ°μ΄ν°λ² μ΄μ€ | μ΄κ΅μ | 4.0 |
B710 | λ°μ΄ν°λ² μ΄μ€ | μ΄κ΅μ | 3.5 |
B610 | μλ£κ΅¬μ‘° | λ°κ΅μ | 3.5 |
B810 | μ΄μ체μ | μ΅κ΅μ | 3.8 |
μμ ν μ΄λΈμ κΈ°λ³Έν€λ (νλ², κ°μ)μ μ±μ μ κ²°μ νκ³ μλ 볡ν©ν€μ΄λ€.
νμ§λ§ μ¬κΈ°μ μ§λκ΅μλ κ°μμ μν΄ κ²°μ λλ€.
κΈ°λ³Έν€(νλ², κ°μ)μ λΆλΆν€μΈ κ°μκ° μ§λ κ΅μλ₯Ό κ²°μ νλ κ²°μ μμ΄λ―λ‘ μ 2 μ κ·νμ μλ°°λλ€.
βμ 2 μ κ·νλ₯Ό λ§μ‘±νλ ν μ΄λΈ
νλ² | κ°μ | μ±μ |
B810 | λ°μ΄ν°λ² μ΄μ€ | 4.0 |
B710 | λ°μ΄ν°λ² μ΄μ€ | 3.5 |
B610 | μλ£κ΅¬μ‘° | 3.5 |
B810 | μ΄μ체μ | 3.8 |
κ°μ | μ§λ κ΅μ |
λ°μ΄ν°λ² μ΄μ€ | μ΄κ΅μ |
λ°μ΄ν°λ² μ΄μ€ | μ΄κ΅μ |
μλ£κ΅¬μ‘° | λ°κ΅μ |
μ΄μ체μ | μ΅κ΅μ |
μ 3 μ κ·ν(3NF)
μ 2 μ κ·νλ₯Ό μ§νν ν μ΄λΈμ λν΄ μ΄νμ μ’ μμ μμ λλ‘ ν μ΄λΈμ λΆν΄νλ κ²
π€μ΄νμ ν¨μ μ’ μμ΄λ?
A -> B, B -> Cκ° μ±λ¦½ν λ A -> Cκ° μ±λ¦½λλ κ²
κ³ κ° ID | λ±κΈ | ν μΈμ¨ |
101 | VIP | 50% |
201 | GOLD | 30% |
301 | SILVER | 20% |
κ³ κ° IDλ₯Ό ν΅ν΄μ λ±κΈμ μ μ μκ³ λ±κΈμ ν΅ν΄μ ν μΈμ¨μ μ μ μλ€.
λ°λΌμ κ³ κ° IDλ₯Ό ν΅ν΄μ ν μΈμ¨μ μ μ μλ€.
βμ 3 μ κ·νλ₯Ό λ§μ‘±νλ ν μ΄λΈ
κ³ κ° ID | λ±κΈ |
101 | VIP |
201 | GOLD |
301 | SILVER |
λ±κΈ | ν μΈμ¨ |
VIP | 50% |
GOLD | 30% |
SILVER | 20% |
BCNF (Boyce-Codd Normal Form)
μ 3 μ κ·νλ₯Ό μ§νν ν μ΄λΈμ λν΄ λͺ¨λ κ²°μ μκ° ν보ν€κ° λλλ‘ ν μ΄λΈμ λΆν΄νλ κ²
(κ΅μλ ν κ°μλ§ λ§‘μ μ μκ³ λ€λ₯Έ κ΅μμμ κ°μ μ€λ³΅μ νμ©νλ€.)
νλ² | κ°μ | μ§λ κ΅μ |
B810 | μλ£κ΅¬μ‘° | λ°κ΅μ |
B710 | μλλ‘μ΄λ κ°λ° | κΉκ΅μ |
B610 | μλ£κ΅¬μ‘° | μ΅κ΅μ |
B810 | μλλ‘μ΄λ κ°λ° | κΉκ΅μ |
ν΄λΉ ν μ΄λΈμ μ΄ν΄λ³΄λ©΄ κΈ°λ³Έν€λ (νλ², κ°μ)μ΄λ€.
νμμ κ°μ μ΄λ¦μ κ°μλ₯Ό μ¬λ¬ λ² λ€μ μ μκΈ° λλ¬Έμ νλ²κ³Ό κ°μκ° μ¬μ© μΈμ΄λ₯Ό κ²°μ νλ€.
μ§λ κ΅μλ μ€λ‘μ§ ν κ°μλ§ λ§‘μ μ μμΌλ―λ‘ μ§λ κ΅μκ° κ°μλ₯Ό κ²°μ νλ€.
μ§λ κ΅μκ° κ°μλ₯Ό κ²°μ νλ κ²°μ μμ΄μ§λ§ ν보ν€λ μλλ€. (μ€λ³΅ κ°λ₯νκΈ° λλ¬Έ)
βBCNF μ κ·νλ₯Ό λ§μ‘±νλ ν μ΄λΈ
νλ² | μ§λ κ΅μ |
B810 | λ°κ΅μ |
B710 | κΉκ΅μ |
B610 | μ΅κ΅μ |
B810 | κΉκ΅μ |
μ§λ κ΅μ | κ°μ |
λ°κ΅μ | μλ£κ΅¬μ‘° |
κΉκ΅μ | μλλ‘μ΄λ κ°λ° |
μ΅κ΅μ | μλ£κ΅¬μ‘° |
κΉκ΅μ | μλλ‘μ΄λ κ°λ° |
ν¨μ μ’ μμ± (Functional Dependency)
ν¨μ μ’ μμ±μ΄λ?
μ΄λ€ μμ± Aμ κ°μ μλ©΄ λ€λ₯Έ μμ± Bμ κ°μ΄ μ μΌνκ² μ ν΄μ§λ κ΄κ³
π‘νκΈ°λ°©λ²
A -> B
- Aλ Bλ₯Ό κ²°μ νλ€. (Bμ κ²°μ μ)
- Bλ Aμ μ’ μλλ€. (Aμ μ’ μμ)
ν¨μ μ’ μμ±μ μ’ λ₯
- μμ ν¨μ μ’ μ: κΈ°λ³Έν€λ₯Ό ꡬμ±νλ λͺ¨λ μμ±μ μ’ μλλ κ²½μ°
- λΆλΆ ν¨μ μ’ μ: κΈ°λ³Έν€λ₯Ό ꡬμ±νλ μμ±μ μΌλΆμ μ’ μλκ±°λ, κΈ°λ³Έν€κ° μλ λ€λ₯Έ μμ±μ μ’ μλλ κ²½μ°
- μ΄νμ ν¨μ μ’ μ: A, B, C μΈ μμ±μ΄ μκ³ , A -> B, B -> C μ’ μ κ΄κ³κ° μμ λ, A -> Cκ° μ±λ¦½νλ κ²½μ°
Reference
[Database] μ κ·ν(Normalization) μ½κ² μ΄ν΄νκΈ°
[DB] μ κ·ν(Normalization)λ? μ κ·ν μμ, 1NF, 2NF, 3NF, BCNF
'π‘CS > Database' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Database] μΈλ±μ€ (Index) (0) | 2023.06.16 |
---|---|
[Database] νΈλμ μ (Transaction) (0) | 2023.06.16 |
컀λ₯μ ν(Connection Pool)μ΄λ? (0) | 2023.04.05 |
λκΈ