πŸ“ŠSQL μ •κ·œν™”(Normalization)

hamsangΒ·2022λ…„ 5μ›” 16일
2

SQLD

λͺ©λ‘ 보기
4/4
post-thumbnail

μ •κ·œν™”(Normalization)

μ •κ·œν™”(Normalization)의 κΈ°λ³Έ λͺ©ν‘œλŠ” ν…Œμ΄λΈ” 간에 μ€‘λ³΅λœ 데이타λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것이닀. μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŒμœΌλ‘œμ¨ 무결성(Integrity)λ₯Ό μœ μ§€ν•  수 있으며, DB의 μ €μž₯ μš©λŸ‰ μ—­μ‹œ 쀄일 수 μžˆλ‹€.


πŸ’» 제 1 μ •κ·œν˜• (1 Normal Form : 1NF)

ν…Œμ΄λΈ”μ˜ 컬럼이 μ›μžκ°’(ν•˜λ‚˜μ˜ κ°’)을 갖도둝 ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•œλ‹€.
μ€‘λ³΅λœ 속성을 μ œκ±°ν•œλ‹€.

  • μ–΄λ–€ λ¦΄λ ˆμ΄μ…˜ R에 μ†ν•œ λͺ¨λ“  속성이 μ›μžκ°’μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€λ©΄ 1NFλ₯Ό λ§Œμ‘±ν•œλ‹€.

πŸ“ 제 1 μ •κ·œν˜• μ˜ˆμ‹œ

β–Ά 제1 μ •κ·œν˜• μœ„λ°˜
μœ„ ν…Œμ΄λΈ”μ—μ„œ μΆ”μ‹ μˆ˜μ™€ λ°•μ„Έλ¦¬λŠ” μ—¬λŸ¬ 개의 μ·¨λ―Έλ₯Ό 가지고 있기 λ•Œλ¬Έμ— 제 1 μ •κ·œν˜•μ„ μœ„λ°˜ν•˜κ³  μžˆλ‹€.

β–Ά 제1 μ •κ·œν˜• 만쑱
제 1 μ •κ·œν™”λ₯Ό μ§„ν–‰ν•œ ν…Œμ΄λΈ”μ΄λ‹€. ν•œ μ»¬λŸΌμ— ν•˜λ‚˜μ˜ κ°’λ§Œ λ“€μ–΄κ°€μžˆλ‹€.


πŸ’» 제 2 μ •κ·œν˜• (2 Normal Form : 2NF)

제1 μ •κ·œν™”λ₯Ό μ§„ν–‰ν•œ ν…Œμ΄λΈ”μ— λŒ€ν•΄ λΆ€λΆ„ν•¨μˆ˜ 쒅속을 μ œκ±°ν•œλ‹€.
= μ™„μ „ ν•¨μˆ˜ 쒅속을 λ§Œμ‘±ν•˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•œλ‹€.


πŸ“ 제 2 μ •κ·œν˜• μ˜ˆμ‹œ

β–Ά 제2 μ •κ·œν˜• μœ„λ°˜
μœ„ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λŠ” (ν•™μƒλ²ˆν˜Έ, κ°•μ’Œμ΄λ¦„)으둜 볡합킀이닀.

볡합 κΈ°λ³Έν‚€ (ν•™μƒλ²ˆν˜Έ, κ°•μ’Œμ΄λ¦„)은 κ°•μ˜μ‹€μ„ κ²°μ •ν•˜κ³  μžˆλ‹€. ν•˜μ§€λ§Œ κ°•μ˜μ‹€μ΄λΌλŠ” μ»¬λŸΌμ€ κΈ°λ³Έν‚€μ˜ 뢀뢄집합인 κ°•μ’Œμ΄λ¦„μ— μ˜ν•΄ κ²°μ •λ˜κ³  μžˆλ‹€.

- λΆ€λΆ„ ν•¨μˆ˜μ  쒅속 : λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ’…μ†μžκ°€ κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λ‹€λ₯Έ 속성에 μ’…μ†λ˜κ±°λ‚˜, κΈ°λ³Έν‚€κ°€ μ—¬λŸ¬ μ†μ„±μœΌλ‘œκ΅¬μ„±λ˜μ–΄ μžˆμ„κ²½μš° κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성 쀑 μΌλΆ€λ§Œ μ’…μ†λœ 경우


β–Ά 제2 μ •κ·œν˜• 만쑱
기쑴의 ν…Œμ΄λΈ”μ—μ„œ κ°•μ˜μ‹€μ„ λΆ„ν•΄ν•˜μ—¬ λ³„λ„μ˜ ν…Œμ΄λΈ”λ‘œ κ΄€λ¦¬ν•˜λ©΄ 제2 μ •κ·œν˜•μ„ λ§Œμ‘±μ‹œν‚¬ 수 μžˆλ‹€.


πŸ’» 제 3 μ •κ·œν˜• (3 Normal Form : 3NF)

제 2 μ •κ·œν™”λ₯Ό μ§„ν–‰ν•œ ν…Œμ΄λΈ”μ— λŒ€ν•΄ 이행적 쒅속을 없애도둝 ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜λŠ” 것

  • 이행적 쒅속 : A -> B, B -> Cκ°€ 성립할 λ•Œ A -> Cκ°€ μ„±λ¦½ν•˜λŠ” 것
  • κΈ°λ³Έν‚€κ°€ μžˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μΌλ°˜μ†μ„±μ΄ μΌλ°˜μ†μ„±μ„ κ²°μ •ν•œλ‹€. (μ΄ν–‰ν•¨μˆ˜ 쒅속) β–Ά 제 3 μ •κ·œν˜• μœ„λ°˜
비이행 > 제 3 μ •κ·œν˜• 만쑱
이행 > 제 3 μ •κ·œν˜• 뢈만쑱

πŸ“ 제 3 μ •κ·œν˜• μ˜ˆμ‹œ

β–Ά 제3 μ •κ·œν˜• 뢈만쑱

  • 기쑴의 ν…Œμ΄λΈ”μ—μ„œ 학생 λ²ˆν˜ΈλŠ” κ°•μ’Œ 이름을 κ²°μ •ν•˜κ³  있고, κ°•μ’Œ 이름은 μˆ˜κ°•λ£Œλ₯Ό κ²°μ •ν•˜κ³  μžˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 이λ₯Ό (학생 번호, κ°•μ’Œ 이름) ν…Œμ΄λΈ”κ³Ό (κ°•μ’Œ 이름, μˆ˜κ°•λ£Œ) ν…Œμ΄λΈ”λ‘œ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€.
  • 이행적 쒅속을 μ œκ±°ν•˜λŠ” μ΄μœ λŠ” 비ꡐ적 κ°„λ‹¨ν•˜λ‹€. 예λ₯Ό λ“€μ–΄ 501번 학생이 μˆ˜κ°•ν•˜λŠ” κ°•μ’Œκ°€ μŠ€ν¬μΈ κ²½μ˜ν•™μœΌλ‘œ λ³€κ²½λ˜μ—ˆλ‹€κ³  ν•˜μž. 이행적 쒅속이 μ‘΄μž¬ν•œλ‹€λ©΄ 501번의 학생은 μŠ€ν¬μΈ κ²½μ˜ν•™μ΄λΌλŠ” μˆ˜μ—…μ„ 20000μ›μ΄λΌλŠ” μˆ˜κ°•λ£Œλ‘œ λ“£κ²Œ λœλ‹€. λ¬Όλ‘  κ°•μ’Œ 이름에 맞게 μˆ˜κ°•λ£Œλ₯Ό λ‹€μ‹œ λ³€κ²½ν•  수 μžˆμ§€λ§Œ, μ΄λŸ¬ν•œ λ²ˆκ±°λ‘œμ›€μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 제3 μ •κ·œν™”λ₯Ό ν•˜λŠ” 것이닀.

β–Ά 제3 μ •κ·œν˜• 만쑱

  • 즉, 학생 번호λ₯Ό 톡해 κ°•μ’Œ 이름을 μ°Έμ‘°ν•˜κ³ , κ°•μ’Œ μ΄λ¦„μœΌλ‘œ μˆ˜κ°•λ£Œλ₯Ό μ°Έμ‘°ν•˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€.

πŸ’» BCNF (Boyce Codd Normal Form)

제3 μ •κ·œν™”λ₯Ό μ§„ν–‰ν•œ ν…Œμ΄λΈ”μ— λŒ€ν•΄ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀가 λ˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜λŠ” 것

  • λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” ν•¨μˆ˜ μ’…μ†μ„±μ—μ„œ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀이면 BCNF μ •κ·œν˜•μ΄λ‹€.

πŸ“ BCNF μ •κ·œν˜• μ˜ˆμ‹œ

β–Ά BCNF μ •κ·œν˜• 뢈만쑱

  • νŠΉκ°•μˆ˜κ°• ν…Œμ΄λΈ”μ—μ„œ κΈ°λ³Έν‚€λŠ” (ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„)이닀. 그리고 κΈ°λ³Έν‚€ (ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„)λŠ” ꡐ수λ₯Ό κ²°μ •ν•˜κ³  μžˆλ‹€. λ˜ν•œ μ—¬κΈ°μ„œ κ΅μˆ˜λŠ” νŠΉκ°•μ΄λ¦„μ„ κ²°μ •ν•˜κ³  μžˆλ‹€.
    그런데 λ¬Έμ œλŠ” κ΅μˆ˜κ°€ νŠΉκ°•μ΄λ¦„μ„ κ²°μ •ν•˜λŠ” κ²°μ •μžμ΄μ§€λ§Œ, 후보킀가 μ•„λ‹ˆλΌλŠ” 점이닀. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— BCNF μ •κ·œν™”λ₯Ό λ§Œμ‘±μ‹œν‚€κΈ° μœ„ν•΄μ„œ μœ„μ˜ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€.

β–Ά BCNF μ •κ·œν˜• 만쑱

  • λ‹€μŒκ³Ό 같이 νŠΉκ°•μ‹ μ²­ ν…Œμ΄λΈ”κ³Ό νŠΉκ°•κ΅μˆ˜ ν…Œμ΄λΈ”λ‘œ λΆ„ν•΄ν•  수 μžˆλ‹€.
profile
햄생

0개의 λŒ“κΈ€