μ κ·νμ νμ λ°°κ²½
ν relationμμ μ¬λ¬ entityμ attributeλ€μ νΌν©νκ² λλ©΄ μ λ³΄κ° μ€λ³΅ μ μ₯λλ©° μ μ₯곡κ°μ λλΉνκ² λλ€.
λν μ΄λ° μ€λ³΅λ μ λ³΄λ‘ μΈν΄ κ°±μ μ΄μμ΄ λ°μνκ² λλ€.
λμΌν μ 보λ₯Ό ν relationμλ λ³κ²½νκ³ λλ¨Έμ§ relationμμλ λ³κ²½νμ§ μμ κ²½μ°, μ΄λ κ²μ΄ μ ννμ§ μ μ μκ² λλ κ²μ΄λ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ κ·ν κ³Όμ μ κ±°μΉκ² λλ€.
κ°±μ μ΄μμ΄λ...?
1. μ½μ μ΄μ Insertion anomalies
μνμ§ μλ μλ£κ° μ½μ λλ€λ μ§, μ½μ νλλ° μλ£κ° λΆμ‘±ν΄ μ½μ μ΄ λμ§ μμ λ°μνλ λ¬Έμ μ
2. μμ μ΄μ Deletion anomalies
νλμ μλ£λ§ μμ νκ³ μΆμ§λ§, κ·Έ μλ£κ° ν¬ν¨λ νν μ μ²΄κ° μμ λ¨μΌλ‘ μνμ§ μλ μ 보 μμ€μ΄ λ°μνλ λ¬Έμ μ
3. μμ μ΄μ Modification anomalies
μ ννμ§ μκ±°λ μΌλΆμ ννλ§ κ°±μ λμ΄ μ λ³΄κ° λͺ¨νΈν΄μ§κ±°λ μΌκ΄μ±μ΄ μμ΄μ Έ μ νν μ 보 νμ μ΄ λμ§ μλ λ¬Έμ μ
μ κ·νλ
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ μ€λ³΅μ μ΅μννκΈ° μν΄ λ°μ΄ν°λ₯Ό ꡬ쑰ννλ μμ μ΄λ€. μ’ λ ꡬ체μ μΌλ‘λ λΆλ§μ‘±μ€λ¬μ΄ λμ relationμ attributeλ€μ λλμ΄μ μ’μ μμ relationμΌλ‘ λΆν΄νλ μμ μ λ§νλ€.
λμ relation ?
μν°ν°λ₯Ό ꡬμ±νκ³ μλ μ νΈλ¦¬λ·°νΈ κ°μ ν¨μμ μ’ μμ±(Functional Dependency)μ νλ¨νλλ°, κ°κ°μ μ κ·νλ§λ€ μ΄λ ν ν¨μμ μ’ μμ±μ λ§μ‘±νλμ§μ λ°λΌ μ κ·νμ΄ μ μλκ³ , κ·Έ μ κ·νμ λ§μ‘±νμ§ λͺ»νλ μ κ·νμ λμ 릴λ μ΄μ μΌλ‘ νμ νλ€.
ν¨μμ μ’ μμ±μ..?
μ νΈλ¦¬λ·°νΈ λ°μ΄ν°λ€μ μλ―Έμ μ νΈλ¦¬λ·°νΈλ€ κ°μ μνΈ κ΄κ³λ‘λΆν° μ λλλ μ μ½μ‘°κ±΄μ μΌμ’ μ΄λ€.
μ κ·ν κ³Όμ μ κ±°μΉκ² λλ©΄ μ κ·νμ λ§μ‘±νκ² λλ€. μ κ·νμ΄λ νΉμ 쑰건μ λ§μ‘±νλ 릴λ μ΄μ μ μ€ν€λ§μ ννλ₯Ό λ§νλ©° μ 1 μ κ·ν, μ 2 μ κ·ν, μ 3 μ κ·ν, … λ±μ΄ μ‘΄μ¬νλ€.
μ 1 μ κ·ν
μ νΈλ¦¬λ·°νΈμ λλ©μΈμ΄ μ€μ§ μμκ°λ§μ ν¬ν¨νκ³ , ννμ λͺ¨λ μ νΈλ¦¬λ·°νΈκ° λλ©μΈμ μνλ νλμ κ°μ κ°μ ΈμΌ νλ€. μ¦, λ³΅ν© μ νΈλ¦¬λ·°νΈ, λ€μ€κ° μ νΈλ¦¬λ·°νΈ, μ€μ²© 릴λ μ΄μ λ± λΉ μμμ μΈ μ νΈλ¦¬λ·°νΈλ€μ νμ©νμ§ μλ 릴λ μ΄μ ννλ₯Ό λ§νλ€.
μ 2 μ κ·ν
λͺ¨λ λΉμ£Όμ μ νΈλ¦¬λ·°νΈλ€μ΄ μ£Όμ μ νΈλ¦¬λ·°νΈμ λν΄μ μμ ν¨μμ μ’ μμ΄λ©΄ μ 2 μ κ·νμ λ§μ‘±νλ€κ³ λ³Ό μ μλ€. μμ ν¨μμ μ’ μμ΄λ X -> Y λΌκ³ κ°μ νμ λ, X μ μ΄λ ν μ νΈλ¦¬λ·°νΈλΌλ μ κ±°νλ©΄ λ μ΄μ ν¨μμ μ’ μμ±μ΄ μ±λ¦½νμ§ μλ κ²½μ°λ₯Ό λ§νλ€. μ¦, ν€κ° μλ μ΄λ€μ΄ κ°κ° ν보ν€μ λν΄ κ²°μ λλ 릴λ μ΄μ ννλ₯Ό λ§νλ€.
μ 3 μ κ·ν
μ΄λ ν λΉμ£Όμ μ νΈλ¦¬λ·°νΈλ κΈ°λ³Έν€μ λν΄μ μ΄νμ μΌλ‘ μ’ μλμ§ μμΌλ©΄ μ 3 μ κ·νμ λ§μ‘±νλ€κ³ λ³Ό μ μλ€. μ΄ν ν¨μμ μ’ μμ΄λ X - >Y, Y -> Zμ κ²½μ°μ μν΄μ μΆλ‘ λ μ μλ X -> Zμ μ’ μκ΄κ³λ₯Ό λ§νλ€. μ¦, λΉμ£Όμ μ νΈλ¦¬λ·°νΈκ° λΉμ£Όμ μ νΈλ¦¬λ·°νΈμ μν΄ μ’ μλλ κ²½μ°κ° μλ 릴λ μ΄μ ννλ₯Ό λ§νλ€.
BCNF(Boyce-Codd) μ κ·ν
μ¬λ¬ ν보 ν€κ° μ‘΄μ¬νλ 릴λ μ΄μ μ ν΄λΉνλ μ κ·ν λ΄μ©μ΄λ€. 볡μ‘ν μλ³μ κ΄κ³μ μν΄ λ°μνλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ 3 μ κ·νμ 보μνλλ° μλ―Έκ° μλ€. λΉμ£Όμ μ νΈλ¦¬λ·°νΈκ° ν보ν€μ μΌλΆλ₯Ό κ²°μ νλ λΆν΄νλ κ³Όμ μ λ§νλ€.
κ° μ κ·νμ κ·Έμ μ ν μ κ·νλ³΄λ€ λ μ격ν 쑰건μ κ°λλ€.
- λͺ¨λ μ 2 μ κ·ν 릴λ μ΄μ μ μ 1 μ κ·νμ κ°λλ€.
- λͺ¨λ μ 3 μ κ·ν 릴λ μ΄μ μ μ 2 μ κ·νμ κ°λλ€.
- λͺ¨λ BCNF μ κ·ν 릴λ μ΄μ μ μ 3 μ κ·νμ κ°λλ€.
μλ§μ μ κ·νμ΄ μμ§λ§ κ΄κ³ λ°μ΄ν°λ² μ΄μ€ μ€κ³μ λͺ©νλ κ° λ¦΄λ μ΄μ μ΄ 3NF(or BCNF)λ₯Ό κ°κ² νλ κ²μ΄λ€.
μ κ·νμ μ₯μ
- λ°μ΄ν°λ² μ΄μ€ λ³κ²½ μ μ΄μ νμ(Anomaly) μ κ±° μμμ μΈκΈνλ κ°μ’ μ΄μ νμλ€μ΄ λ°μνλ λ¬Έμ μ μ ν΄κ²°ν μ μλ€.
- λ°μ΄ν°λ² μ΄μ€ ꡬ쑰 νμ₯ μ μ¬ λμμΈ μ΅μν μ κ·νλ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰μμλ μλ‘μ΄ λ°μ΄ν° νμ μΆκ°λ‘ μΈν νμ₯ μ, κ·Έ ꡬ쑰λ₯Ό λ³κ²½νμ§ μμλ λκ±°λ μΌλΆλ§ λ³κ²½ν΄λ λλ€. μ΄λ λ°μ΄ν°λ² μ΄μ€μ μ°λλ μμ© νλ‘κ·Έλ¨μ μ΅μνμ μν₯λ§μ λ―ΈμΉκ² λλ©° μμ©νλ‘κ·Έλ¨μ μλͺ μ μ°μ₯μν¨λ€.
- μ¬μ©μμκ² λ°μ΄ν° λͺ¨λΈμ λμ± μλ―Έμκ² μ 곡 μ κ·νλ ν μ΄λΈλ€κ³Ό μ κ·νλ ν μ΄λΈλ€κ°μ κ΄κ³λ€μ νμ€ μΈκ³μμμ κ°λ λ€κ³Ό κ·Έλ€κ°μ κ΄κ³λ€μ λ°μνλ€.
μ κ·νμ λ¨μ
릴λ μ΄μ μ λΆν΄λ‘ μΈν΄ 릴λ μ΄μ κ°μ μ°μ°(JOIN μ°μ°)μ΄ λ§μμ§λ€.
μ΄λ‘ μΈν΄ μ§μμ λν μλ΅ μκ°μ΄ λλ €μ§ μ μλ€.
μ‘°κΈ λ§λΆμ΄μλ©΄, μ κ·νλ₯Ό μννλ€λ κ²μ λ°μ΄ν°λ₯Ό κ²°μ νλ κ²°μ μμ μν΄ ν¨μμ μ’ μμ κ°μ§κ³ μλ μΌλ° μμ±μ μμ‘΄μλ‘ νμ¬ μ λ ₯/μμ /μμ μ΄μμ μ κ±°νλ κ²μ΄λ€. λ°μ΄ν°μ μ€λ³΅ μμ±μ μ κ±°νκ³ κ²°μ μμ μν΄ λμΌν μλ―Έμ μΌλ° μμ±μ΄ νλμ ν μ΄λΈλ‘ μ§μ½λλ―λ‘ ν ν μ΄λΈμ λ°μ΄ν° μ©λμ΄ μ΅μνλλ ν¨κ³Όκ° μλ€.
λ°λΌμ μ κ·νλ ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ μλκ° λΉ¨λΌμ§ μλ μκ³ λλ €μ§ μλ μλ νΉμ±μ΄ μλ€.
μ΄μ κ°μ λ¨μ μ΄ μλ€λ©΄, μ΄λ€ μν©μμ μ κ·νλ₯Ό μ§νν΄μΌνλκ°?
λ°μ κ·ν(De-normalization, λΉμ κ·ν)
λ°μ κ·νλ μ κ·νλ μν°ν°, μμ±, κ΄κ³λ₯Ό μμ€ν μ μ±λ₯ ν₯μ λ° κ°λ°κ³Ό μ΄μμ λ¨μνλ₯Ό μν΄ μ€λ³΅ ν΅ν©, λΆλ¦¬ λ±μ μννλ λ°μ΄ν° λͺ¨λΈλ§ κΈ°λ² μ€ νλμ΄λ€. λμ€ν¬ I/O λμ΄ λ§μμ μ‘°ν μ μ±λ₯μ΄ μ νλκ±°λ, ν μ΄λΈλΌλ¦¬μ κ²½λ‘κ° λ무 λ©μ΄ μ‘°μΈμΌλ‘ μΈν μ±λ₯ μ νκ° μμλκ±°λ, μΉΌλΌμ κ³μ°νμ¬ μ‘°νν λ μ±λ₯μ΄ μ νλ κ²μ΄ μμλλ κ²½μ° λ°μ κ·νλ₯Ό μννκ² λλ€. μΌλ°μ μΌλ‘ μ‘°νμ λν μ²λ¦¬ μ±λ₯μ΄ μ€μνλ€κ³ νλ¨λ λ λΆλΆμ μΌλ‘ λ°μ κ·νλ₯Ό κ³ λ €νκ² λλ€.
* λ°μ κ·νμ λμ
1. μμ£Ό μ¬μ©λλ ν μ΄λΈμ μ‘μΈμ€νλ νλ‘μΈμ€μ μκ° κ°μ₯ λ§κ³ , νμ μΌμ ν λ²μλ§μ μ‘°ννλ κ²½μ°
2. ν μ΄λΈμ λλ λ°μ΄ν°κ° μκ³ λλμ λ²μλ₯Ό μμ£Ό μ²λ¦¬νλ κ²½μ°
3. μ±λ₯ μ μ΄μκ° μμ κ²½μ°
4. ν μ΄λΈμ μ§λμΉκ² μ‘°μΈμ λ§μ΄ μ¬μ©νκ² λμ΄ λ°μ΄ν°λ₯Ό μ‘°ννλ κ²μ΄ κΈ°μ μ μΌλ‘ μ΄λ €μΈ κ²½μ°
(μ£Όμ, λ°μ κ·νλ₯Ό κ³Όλνκ² μ μ©νλ€ λ³΄λ©΄ λ°μ΄ν°μ 무결μ±μ΄ κΉ¨μ§ μ μλ€. λν μ λ ₯, μμ , μμ μ μ§μλ¬Έμ λν μλ΅ μκ°μ΄ λ¦μ΄μ§ μ μλ€.)
Reference.
'π₯ > Database' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°μ΄ν°λ² μ΄μ€] SQL Injection (0) | 2021.10.13 |
---|---|
[λ°μ΄ν°λ² μ΄μ€] NoSQL (0) | 2021.09.09 |
[λ°μ΄ν°λ² μ΄μ€] νΈλμμ Transaction μ΄λ (0) | 2021.08.25 |
[λ°μ΄ν°λ² μ΄μ€] Indexλ 무μμΈκ° (0) | 2021.08.11 |
[λ°μ΄ν°λ² μ΄μ€] λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ μ΄μ μ μ±λ₯ (0) | 2021.08.04 |