[ν μ΄νλ‘μ νΈ] DB μ€κ³νκΈ° -1
π μ΄ κΈμ Youtube μλμ΄μ½λ© - '{νμ€ν#22} MySQL - λ°μ΄ν° λͺ¨λΈ μ€κ³, μ€λ¬΄μμλ μ΄λ κ² νλ‘μ νΈ μμκ³Ό μ€κ³λ₯Ό νλ€!' μμμ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€.
λ§ν¬ : https://www.youtube.com/watch?v=GroeyzBNhfU
μμ ν μ΄ νλ‘μ νΈλ₯Ό μ§ν μ€μ΄λ€. DBμ λ°μ΄ν°λ₯Ό λ£κΈ° μ , μμ 'DBλ₯Ό μ€κ³νλ€'λ κ³Όμ μ λν΄ κΈ°μ΄ κ°λ μ μ‘κ³ κ·Έλ₯Ό λ°μνμ¬ νλ‘μ νΈλ₯Ό μ§νν΄λ³΄κΈ° μν΄ ν¬μ€ν μ μμ±νκΈ°λ‘ νλ€.
λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈλ§μ΄ μ€μν μ΄μ λ, κΈ°λ₯ μΆκ°λ μλΉμ€μ κΈ°λ₯ λ³κ²½μ μ΄λ €μμ κ²ͺλ κ²½μ°κ° λλΆλΆμ΄ λ°μ΄ν°λ² μ΄μ€ μ€κ³λ₯Ό μλͺ»ν κ²½μ°κ° λ§κΈ° λλ¬Έμ΄λ€. μ€μ λ‘ μ½λ©μ μνλ μ¬λμ λ§μ§λ§, λ°μ΄ν°λ² μ΄μ€λ₯Ό μνλ μ¬λμ λ§€μ° λ§μ κ²μ μλλ€. λ©μ΄μ νμ¬ κ°μ κ²½μ°λ DBAλΌκ³ ν΄μ λ°μ΄ν°λ² μ΄μ€ μ§λ¬΄κ° λ°λ‘ μλ κ²½μ°κ° μμ§λ§, 보ν΅μ μλ² κ°λ°μκ° DBλ μ€κ³νλ κ²½μ°κ° λ§λ€.
DB μ€κ³λ₯Ό μλͺ»νκ±°λ λ¬Έμ κ° μκΈ°λ κ²½μ°λ, μλΉμ€κ° λͺ νν μ μλμ§ μμ κ²½μ°, νΉμ μλΉμ€κ° λ§μ΄ λ³κ²½λμ΄ μ΅μ΄μ μ‘μλ λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈμ΄ λ§μ§ μλ κ²½μ°κ° μλ€. μ΄λ° κ²½μ°, λ°μ΄ν°λ² μ΄μ€μμ λ§μ λ¬Έμ νΉν λ³λͺ©μ΄ λ°μνλ€. μ΄ κ²½μ° Queryλ‘ μ΄λμ λ μμ΅μ ν μ μμ§λ§ κΆκ·Ήμ μΈ ν΄κ²°μ μλλ€.
λ°μ΄ν°λͺ¨λΈ μ€κ³ κ³Όμ
μꡬμ¬ν λΆμ β‘ UseCase Diagram μμ± β‘ Entities, Functions λμΆ β‘ Relationships - ERD μμ± β‘ μμ± (Pysical Modeling)
UseCase Diagram (μꡬμ¬ν λΆμ)
μ΄ν΄κ΄κ³μλΌκ³ λΆλ₯΄λ userκ° μ‘΄μ¬νλ€. κ²°κ΅ μ΄ μμ€ν μ΄ μ΄λ»κ² μ¬μ©λμ΄μ§λ€λ₯Ό 보μ¬μ£Όλ λ€μ΄μ΄κ·Έλ¨μ΄λ€.
Deployment Diagram
μλ² κ΅¬μ±μ΄ μ΄λ»κ² λμ΄ μλμ§ λ³΄μ¬μ£Όλ λ€μ΄μ΄κ·Έλ¨. μ¬κΈ°μ deviceλΌλ κ²μ 물리μ μΈ λλ°μ΄μ€μ λ Όλ¦¬μ μΈ λλ°μ΄μ€ λ κ°μ§κ° μλ€. κ·Έλμ μλ²κ° μΉ μλ²κ° μκ³ , λ°μ΄ν°λ² μ΄μ€ μλ²κ° μκ³ , μ΄λ»κ² λλμ΄μλμ§ κ΅¬μ±λλ₯Ό 그리λ λ€μ΄μ΄κ·Έλ¨μ λ»νλ€.
Sequence Diagram
π‘ μΈμ€ν΄μ€λ? : ν΄λμ€λ₯Ό λ©λͺ¨λ¦¬μ μ¬λ¦° μν
νλ‘μ°κ° 볡μ‘νκ±°λ, μΈμ€ν΄μ€λ€μ΄ μ΄λ»κ² μ΄μμμ§μ΄λμ§, μΈμ μμ±λμ΄μ μΈμ μλ©Έλλμ§λ₯Ό λνλΈλ€. μ¦, μΈμ€ν΄μ€μ μλͺ μ£ΌκΈ°μ μΈμ€ν΄μ€κ° μ΄λ»κ² μμ§μ΄λμ§, μ΄λ€ λͺ λ Ήλ€μ΄ μλμ§λ₯Ό μ μνλ λ€μ΄μ΄κ·Έλ¨μ΄λ€. λ§μ΄ μ°μ΄μ§λ μμ§λ§, μΈμ€ν΄μ€λ€μ΄ μ΄λ»κ² μμ§μ΄λμ§λ₯Ό μλ €λ©΄ Sequence Diagramμ κ·Έλ €λλ©΄ νΈνλ€. μμλ₯Ό λ€μ΄ μ€λͺ νμλ©΄, κ·Έλ¦Όμ 보μ. μ»΄ν¨ν°κ° μλ²μκ² λ©μΌμ 보λ΄λλ°, μ¬μ©μκ° checkEmailμ νκ³ , κ·Έ λ€μ μλ²μ sendUnsentEmailμ νλ©΄ κ·Έ λ μΈμ€ν΄μ€κ° μκΈ°κ³ , μλ²κ° νμ±νλκ³ , λ€ λ³΄λ΄κ³ λλ©΄ μ’ λ£κ° λλ©° μΈμ€ν΄μ€κ° μ£½κ² λλ€.
Class Diagram
OOP(κ°μ²΄μ§ν₯νλ‘κ·Έλλ°)μ ν λμ κ°μ₯ λ§μ΄ μ°μ΄λ νλ‘κ·Έλ¨. ν΄λμ€λ€μ΄ μ΄λ»κ² ꡬμ±λλμ§, tableλ€μ value objectλΌκ³ ν΄μ λ³΄ν΅ ν΄λμ€λ‘ νλνλ λ¨μ΄μ§κ² λλ€. νμ΄νλ νμ΄νκ° κ°λ¦¬ν€λ κ³³μ μμλ°μμ μλ―Ένλ€. μ¦, λ€μ΄μ΄κ·Έλ¨μ ν΄λμ€λ€μ ꡬμ±μ μλ―Ένλ€. κ·Έλ¦Όμμλ μλ΅λμμ§λ§ λ©€λ² λ³μμ λ©€λ² ν¨μμ Public/Protected/Private λ±μ μ¬νλ ννλκ³ λ νλ€.
State Diagram
μνλ€μ΄μ΄κ·Έλ¨μ΄λ€. λ°μ΄ν°λ λ³μλ , λ°μ΄ν°μ μνκ° μ΄λ»κ² μμ§μ΄λλλ₯Ό 보μ¬μ£Όλ λ€μ΄μ΄κ·Έλ¨μ΄λ€.
- transition : μ ν κ³Όμ
- transition condition : μν μ ννκΈ°
- entry action : μμνλ μμ μ μν
Flow Chart
μμλλΌκ³ λΆλ¦¬λ λ§μ΄ μλ €μ§ λ€μ΄μ΄κ·Έλ¨μ΄λ€. Base Logicμ΄ λ³΅μ‘νλ€ μΆμΌλ©΄ μμλλ₯Ό κ·Έλ €λ³΄λ κ²μ΄ μ’λ€. μ΄λ€ μμλ‘ μ§λκ°λμ§. κ°λ°μ λΏλ§ μλλΌ κΈ°νμλ λ§μ΄ μ¬μ©νλ λ€μ΄μ΄κ·Έλ¨μ΄λ€.
- μν : μμ
- μ¬κ°ν : νλμ task
- λ§λ¦λͺ¨ : 쑰건μ
μ κ·ν(Normal Form, NF)
λ°μ΄ν°λ² μ΄μ€ μ€κ³ μ€ λͺ¨λΈλ§ν λ κ°μ₯ μ€μν κ²μ μ κ·νμ΄λ€. μ 1μ κ·ν, μ 2μ κ·ν λ±μ μ©μ΄λ μ€λ¬΄μμλ μΈμΈ νμλ μκ³ , κ²°κ΅μ μ€λ³΅λ°μ΄ν°λ₯Ό μ΅μννλ κ²μ΄λ€. κ°μ λ°μ΄ν°κ° μ¬λ¬ ν μ΄λΈμ λΆμ°λμ΄μμΌλ©΄ κ΄λ¦¬νκΈ° μ΄λ ΅κΈ° λλ¬Έμ μ€λ³΅λ°μ΄ν°λ₯Ό μμ κ³ κ΄κ³λ₯Ό λ¨μνκ² κ°μ Έκ°λ€.
μ μ κ°λ°μ μμ μλ ν μ΄λΈ νλμ λ°μ΄ν°λ₯Ό λ΄λ κ² λ¨μν κ²μΈ μ€ μλ€. κ·Έλ¬λ λ°μ΄ν° λͺ¨λΈλ§μ νλ€ λ³΄λ©΄, μ±κ²©μ΄ λ€λ₯Έ λ°μ΄ν°λ μλ‘ λΆλ¦¬νλ κ²μ΄ λ§λ€. μ΄λ₯Όν λ©΄ 'νμ', 'μκ°μ μ²' ν μ΄λΈμ νλλ‘ λλ©΄ μ½λ©μ μ½κ² μ§λ§ μ€μ λ‘ λ°μ΄ν°λ² μ΄μ€λ 볡μ‘ν΄μ§λ€. μ΄λ μ€λ¬΄μμ ν΄λ³΄λ€λ³΄λ©΄ μ€μ€λ‘ μκ² λκ³ , λ°λΌμ μ΄ μ κ·ν κ³Όμ μ μ€μ λ‘ ν΄λ³΄λ©΄ λͺΈμ 체λμ΄ λλ€. 무μμΈμ§λ§ μκ³ μμΌλ©΄ μμ°μ€λ½κ² λλ€.
μ 1μ κ·ν(1NF) : μμμ±
λͺ¨λ μμ±μ νλμ κ°(Atomic Value)λ§ κ°λλ€.
μ ν μ΄λΈμ 보면 μΆμ μ, λ°μΈλ¦¬λ μμμ±μ μ€μνμ§ μλ κ²μ νμΈν μ μλ€. μ΄μ 1μ κ·ν κ³Όμ μ κ±°μ³ μμμ±μ κ°λλ‘ λΆν΄ν μ μλ€.
μ 2μ κ·ν(2NF) : μμ ν¨μμ μ’ μ (λΆλΆ μ’ μ μ κ±°)
λͺ¨λ μμ±μ κΈ°λ³Έν€μ μ’ μλμ΄μΌ νλ€. μ¦, tableμ λ°λΌ μ’ μλλ columnλ€λ§ λμλ κ².
μμ κ°μ ν μ΄λΈμμ κΈ°λ³Έν€λ (νμλ²νΈ, κ°μ’μ΄λ¦)μΌλ‘ μ΄λ£¨μ΄μ§ 볡ν©ν€μ΄λ€.
λͺ¨λ ν€λ κΈ°λ³Έν€μ μ’ μλμ΄μΌ νλλ°, κ°λ€μ 보면 'κ°μμ€' μμ±μ κ°λ€μ 'κ°μ’μ΄λ¦'μ μν΄ κ²°μ λ μ μλ€. μ¦, κ°μ’ μ΄λ¦μ κΈ°λ³Έν€(νμλ²νΈ, κ°μ’μ΄λ¦)μ λΆλΆν€μΈλ°, 'κ°μμ€' μμ±μ 'κ°μ’ μ΄λ¦'μ μ’ μλμ΄μλ€λ κ²μ΄λ€. μ΄λ₯Ό λΆλΆ ν¨μμ μ’ μμ΄λΌκ³ νλλ°, μ΄λ₯Ό λΆν΄νλ κ²μ 2μ κ·νλΌκ³ νλ€.
μ 3μ κ·ν(3NF) : μ΄ν μ’ μ μ κ±°
κΈ°λ³Έν€κ° μλ λͺ¨λ μμ± κ°μλ μλ‘ μ’ μλ μ μλ€!
μ κ·νλ μ 4,5,6.. κ³μ μμ§λ§ κ°μ₯ μ£Όμν κ²μ 3κΉμ§. κ·Έλ¬λ μμΌλ‘λ μ κ·νλ νμν λλ§λ€ κΎΈμ€ν ν΄λκ°μΌ νλ€.
μ΄νμ μ’ μμ΄λΌλ κ²μ A → B, B → CμΌ λ A → Cκ° μ±λ¦½λλ κ²μ μλ―Ένλ€. μλ₯Ό λ€λ©΄, μλμ ν μ΄λΈμμλ 'μκ°λ£'κ° 'νμλ²νΈ' μμ±μ μ΄ν μ’ μλμ΄μλ€κ³ λ³Ό μ μλ€.
μ κ·νμμ μ΄νμ μ’ μμ μ κ±°ν΄μΌ νλ μ΄μ λ λ€μκ³Ό κ°μ΄ μκ°ν΄λ³΄λ©΄ μ½λ€. μλ₯Ό λ€μ΄, 402λ² νμμ΄ μλ£κ΅¬μ‘° μμ μΌλ‘ μκ° λ³κ²½μ νκ² λλ©΄ μκ°λ£λ ν¨κ» λ³κ²½ν΄μ£Όμ΄μΌ νλ λ²κ±°λ‘μμ΄ μκΈ΄λ€. μ΄λ¬ν κ²μ λ°©μ§νκΈ° μν΄ μ 3μ κ·νλ₯Ό νλ κ²μ΄λ€.
μ 3μ κ·νλ₯Ό ν΅ν΄ λΆν΄ν κ²°κ³Όλ λ€μκ³Ό κ°λ€.
BCNF(Boyce and Codd Normal Form) μ κ·ν
λͺ¨λ κ²°μ μλ ν보ν€μ μν΄μΌ νλ€.
BCNF μ κ·νλ λͺ¨λ κ²°μ μκ° ν보ν€κ° λλλ‘ ν μ΄λΈμ λΆν΄νλ κ²μ΄λ€.
μ ν μ΄λΈμμ λ¬Έμ λ, 'κ΅μ' μμ±μ νΉκ° μ΄λ¦μ κ²°μ νλ κ²°μ μμμλ ν보ν€κ° μλλΌλ μ μ΄λ€. μ΄λ₯Ό ν보ν€λ‘ λ§λ€μ΄μ£Όλ©΄ κ²°κ³Όλ λ€μκ³Ό κ°λ€.
λ°μ κ·ν (μμ κ·ν)
μ κ·νλ λ°μ΄ν° λͺ¨λΈμ ν΅ν©, μ€λ³΅, λΆλ¦¬νλ κ³Όμ . μλμ μΌλ‘ μ κ·ν μμΉμ μλ°°νλ κ²μ΄λ€.
- ν μ΄λΈ λ°μ κ·ν (μ€λ³΅/ν΅κ³/μ΄λ ₯/λΆλΆ ν μ΄λΈ)
- μ»¬λΌ λ°μ κ·ν (μ€λ³΅/νμ 컬λΌ)
- κ΄κ³ λ°μ κ·ν
β λ°μ΄ν° μ μ§ κ³ν εΏ !!
λ°μ κ·νλ λΉ λ°μ΄ν°λ₯Ό λ€λ£¨λ, λ°μ΄ν°κ° λ°©λν μμ€ν (ex: λ°μ΄ν° μ¨μ΄νμ°μ€)μμλ λ°μ κ·νλ₯Ό λ§μ΄ νλ€. μ±λ₯μ μν΄ λ°μ κ·νλ₯Ό νλ€λ κ²μ΄λ€. λ¨, ν λ°μ΄ν°κ° λ°λμμ λ λ€λ₯Έ λ°μ΄ν°λ₯Ό μ΄λ»κ² λ°κΏ κ²μΈμ§μ λν λ°μ΄ν° μ μ§ κ³νμ΄ νμμ μ΄λ€.
1μ°¨ λ°μ κ·ν
κ³ κ°μ λν μν°ν° νμ μ λ°©λ¬Έμ λ λ²κΉμ§ κ°λ₯νλ€κ³ ν΄λ³΄μ.
μλ κ·Έλ¦Όμ 보면, κ³ κ°λ²νΈ, κ³ κ°λͺ μ΄ μ€λ³΅ μμ± κ°μ κ°κΈ° λλ¬Έμ 1μ°¨ μ κ·νμ λμμ΄ λμ΄ μ€κ°μ μλ κ³ κ°λ°©λ¬Έ μν°ν° νμ μΌλ‘ 1μ°¨ μ κ·νκ° λμλ€. κ·Έλ¬λ μ΅λ 2νκΉμ§ λ°©λ¬Έμ΄ κ°λ₯νλ€λ μ 무 κ·μΉμ μ΄μ©νμ¬ μ±λ₯κ³Ό λ¨μμ±μ κ³ λ €νμ¬ μ€λ₯Έμͺ½μ μλ 1μ°¨ μ κ·νμ λν λ°μ κ·ν μν°ν° νμ μΌλ‘ μ€κ³λ μμ΄λ€.
μ΅λ λ°μνλ κ°μ μ΄μ©ν μ΄μ κ°μ λ°μ κ·νμ μ νμ μ€μ νλ‘μ νΈμμ λΉλ²νκ² μ¬μ©λμ§λ§, μ΅λ λ°μ κ°μ΄ λ³ν μ μλ κ²½μ°λ μ κ·νλ λͺ¨μ΅μΌλ‘ λͺ¨λΈλ§ν΄μΌ νμ₯μ±(flexible)μ΄ λ³΄μ₯λλ€λ κ²μ κΈ°μ΅ν΄μΌ νλ€.
2μ°¨ λ°μ κ·ν
κ·Έλ¦Όμ λͺ¨λΈμ μΌμλ³ λ§€κ° λ¬Όκ±΄ μν°ν° νμ μμ λ§€κ° μΌμκ° κ²°μ μκ° λκ³ , λ§€κ° μ₯μμ λ§€κ° μκ°μ΄ μμ‘΄μκ° λ ν¨μ μ’ μμ±μ΄ μ‘΄μ¬νμ¬ 2μ°¨ μ κ·νλ₯Ό μ μ©νλ€κ° λ€μ μ‘°μΈμ μν μ±λ₯μ ν μλ°©κ³Ό λ¨μμ±μ μν΄ λ€μ μΌμλ³λ§€κ°λ¬Όκ±΄μ΄λΌλ μν°ν° νμ μ λ°μ κ·νλ₯Ό ν κ²½μ°μ΄λ€.
3μ°¨ λ°μ κ·ν
κ·Έλ¦Όμ 보면 μλ©μ΄λΌκ³ νλ μν°ν° νμ μ μμ±κ°μ κ²°μ μ(μλ©νμΈλ²νΈ)μ μμ‘΄μκ° μ‘΄μ¬νλ 3μ°¨ μ κ·νμ λμμ΄ λλ λͺ¨μ΅μ΄λ€. λ°λΌμ μλ©νμΈλ²νΈλ₯Ό κ²°μ μλ‘ νκ³ μλ©νμΈλ°©λ², μλ©νμΈμΌμ, μλ©νμΈμμ¬λ²μ μμ±μΌλ‘ νλ 3μ°¨ μ κ·νλ₯Ό μ μ©νμλ€.
λ°μ κ·νλ₯Ό νλ λμμΌλ‘λ ν μ΄λΈ, μμ±, κ΄κ³μ λν΄ μ μ©ν μ μμΌλ©° κΌ ν μ΄λΈκ³Ό μμ±, κ΄κ³μ λν΄ μ€λ³΅μΌλ‘ κ°μ Έκ°λ λ°©λ²λ§μ΄ λ°μ κ·νκ° μλκ³ ν μ΄λΈ, μμ±, κ΄κ³λ₯Ό μΆκ°ν μλ μκ³ λΆν ν μλ μμΌλ©° μ κ±°ν μλ μλ€. μ κ·νμ μλ°°λλ κ²μ μλμ§λ§ μ±λ₯μ μν΄ μ μ©νλ λ°μ κ·νμ λ°©λ²μΌλ‘λ ν μ΄λΈ ν΅ν©/λΆλ¦¬, μμ± μ€λ³΅, κ΄κ³ μ€λ³΅ λ± μ¬λ¬ κ°μ§κ° μμ μ μλ€.
μ°Έκ³ μλ£
- https://mangkyu.tistory.com/110 [MangKyu's Diary:ν°μ€ν 리]
- http://keiis.co.kr/study0/600.Utility/A100.DB/E010.ERwin/100.normalization.html