Skip to content

Latest commit

Β 

History

History
85 lines (60 loc) Β· 4.15 KB

Normalization.md

File metadata and controls

85 lines (60 loc) Β· 4.15 KB

Normalization (μ •κ·œν™”)

μ •κ·œν™”λž€

  • λ°μ΄ν„°λ² μ΄μŠ€μ˜ μœ μ—°μ„±μ„ 높이고 무결성을 보μž₯ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°μ˜ 쀑볡, 잘λͺ»λœ 쒅속성을 μ œκ±°ν•˜λŠ” μž‘μ—…

쀑볡을 μ œκ±°ν•˜λŠ” 이유

  • ν•˜λ‚˜μ˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 지점이 μ—¬λŸ¬ κ°œκ°€ 되면, κ·Έ 쀑 일뢀 λ°μ΄ν„°λ§Œ μˆ˜μ •λ˜μ–΄ 같은 λ°μ΄ν„°μž„μ—λ„ λ‹€λ₯Έ 값을 κ°–λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 있음

잘λͺ»λœ 쒅속성을 μ œκ±°ν•˜λŠ” 이유

  • 데이터 κ°„ 연결이 잘λͺ» μ„€μ •λ˜μ–΄ 있게 λ˜μ–΄, μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎλŠ” 데에 어렀움을 κ²ͺ을 수 있음
  • λ˜ν•œ 잘λͺ»λœ 쒅속성이 쀑볡을 μ•ΌκΈ°ν•˜κΈ°λ„ 함

제 1 μ •κ·œν™” (1NF)

  • ν•˜λ‚˜μ˜ μ»¬λŸΌμ— 볡수 개의 데이터λ₯Ό μ €μž₯ν•˜μ§€ μ•Šμ•„μ•Ό 함
  • 볡수 개 데이터λ₯Ό μ·¨κΈ‰ν•˜κ²Œ λ˜λŠ” 컬럼이라면, 이λ₯Ό 별도 λ ˆμ½”λ“œλ‘œ λΆ„λ¦¬ν•˜κ±°λ‚˜ 별도 ν…Œμ΄λΈ”λ‘œ λΆ„λ¦¬ν•˜κ³  λ¦΄λ ˆμ΄μ…˜μ„ 맺도둝 ꡬ성해야 함
    • 별도 λ ˆμ½”λ“œλ‘œ λΆ„λ¦¬ν•˜λŠ” 것은 볡수 개의 데이터λ₯Ό κ°–λŠ” 컬럼 μ΄μ™Έμ˜ 컬럼이 μ€‘λ³΅λ˜κ²Œ λ˜λ―€λ‘œ 쒋은 해결법은 μ•„λ‹˜

제 1 μ •κ·œν™”λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ μƒκΈ°λŠ” 문제

μˆ˜κ°•κ³Όλͺ© μˆ˜κ°•μž
μˆ˜ν•™ 홍길동
κ³Όν•™ μž„κΊ½μ •, μ‹ μ‚¬μž„λ‹Ή
μ‚¬νšŒ 홍길동, μž„κΊ½μ •
  • 볡수 컬럼의 일뢀 λ°μ΄ν„°λ§Œμ„ WHERE 쑰건으둜 μ΄μš©ν•  경우 잘λͺ»λœ μ‚­μ œ/μˆ˜μ •μ΄ λ°œμƒν•  수 있음
    • ν™κΈΈλ™μ˜ κ³Όλͺ©μ„ μ‚¬νšŒμ—μ„œ μ—­μ‚¬λ‘œ λ³€κ²½ν•˜λ©΄ μž„κΊ½μ •μ˜ κ³Όλͺ©λ„ ν•¨κ»˜ λ°”λ€œ
    • μž„κΊ½μ •μ΄ μ „ κ³Όλͺ© μˆ˜κ°• μ·¨μ†Œλ₯Ό ν•΄ μž„κΊ½μ •μ΄ ν¬ν•¨λœ μ»¬λŸΌμ„ λͺ¨λ‘ μ§€μš°κ³ μž ν•˜λ©΄ μ‹ μ‚¬μž„λ‹Ή, 홍길동에 λŒ€ν•œ 정보도 ν•¨κ»˜ μ‚­μ œλ¨

제 2 μ •κ·œν™” (2NF)

  • ν…Œμ΄λΈ” λ‚΄ νŠΉμ • μ»¬λŸΌμ€ κΈ°λ³Έ ν‚€ μ΄μ™Έμ˜ μ–΄λ–€ ν•­λͺ©μ—λ„ μ’…μ†λ˜μ–΄μ„œλŠ” μ•ˆ 됨
  • 이 경우 이 쒅속성을 κ°–λŠ” ν…Œμ΄λΈ”μ„ 별도 ν…Œμ΄λΈ”λ‘œ λΆ„λ¦¬ν•˜μ—¬ 제 2 μ •κ·œν˜•μ„ 만쑱
    • PKκ°€ μ•„λ‹Œ X에 λŒ€ν•˜μ—¬ X β†’ Y κ°€ μ‘΄μž¬ν•˜λ©΄, Xκ°€ PK이고 Yλ₯Ό 컬럼으둜 κ°–λŠ” μƒˆ ν…Œμ΄λΈ”μ„ μƒμ„±ν•œ λ’€ κΈ°μ‘΄ ν…Œμ΄λΈ”μ—μ„œλŠ” Yλ₯Ό μ œκ±°ν•΄μ•Ό ν•˜λŠ” 것
  • 이 과정을 뢀뢄적 ν•¨μˆ˜ 쒅속을 μ œκ±°ν•œλ‹€κ³ λ„ 말함

제 2 μ •κ·œν™”λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ μƒκΈ°λŠ” 문제

ν•™λ²ˆ 이름 μ†Œμ†ν•™κ³Ό ν•™κ³Όμž₯
1901 홍길동 컴퓨터과 κΉ€κ΅μˆ˜
1845 μž„κΊ½μ • μ „μžκ³Ό λ°•κ΅μˆ˜
1706 μ‹ μ‚¬μž„λ‹Ή 기계과 천ꡐ수
1925 μž₯μ˜μ‹€ 컴퓨터과 κΉ€κ΅μˆ˜
  • PKλŠ” ν•™λ²ˆ
  • ν•˜μ§€λ§Œ μ†Œμ†ν•™κ³Όμ™€ ν•™κ³Όμž₯은 μ„œλ‘œλ₯Ό 결정지을 수 있음
  • 이 경우 (μ†Œμ†ν•™κ³Ό, ν•™κ³Όμž₯)을 별도 ν…Œμ΄λΈ”λ‘œ λΆ„λ¦¬ν•˜μ§€ μ•ŠμœΌλ©΄ λ‹€μŒμ˜ λ¬Έμ œκ°€ λ°œμƒ
    • 학생이 좔가될 λ•Œλ§ˆλ‹€ ν•™κ³Όμž₯ 데이터가 λΆˆν•„μš”ν•˜κ²Œ 쀑볡
    • ν•™κ³Όμž₯이 λ³€κ²½λ˜λ©΄ μ—¬λŸ¬ 개 데이터가 μˆ˜μ •λ˜μ–΄μ•Ό 함
    • 학생 데이터가 제거될 λ•Œ ν•™κ³Όμž₯ 데이터도 μœ μ‹€λ  수 있음

제 3 μ •κ·œν™”

  • Xβ†’Y, Yβ†’Z일 λ•Œ Xβ†’Z인 관계λ₯Ό 제거
  • X,Yλ₯Ό κ°–λŠ” ν…Œμ΄λΈ”, Y,Zλ₯Ό κ°–λŠ” ν…Œμ΄λΈ”λ‘œ λΆ„λ¦¬ν•¨μœΌλ‘œμ¨ 제거
  • 이 과정을 이행적 ν•¨μˆ˜ 쒅속을 μ œκ±°ν•œλ‹€κ³ λ„ 말함
  • 일반적으둜 3μ •κ·œν˜• κΉŒμ§€ 보μž₯ν•˜λ©΄ 쀑볡/μœ νš¨ν•˜μ§€ μ•Šμ€ 쒅속성에 μ˜ν•΄ λ°œμƒν•˜λŠ” 치λͺ…적 λ¬Έμ œλ“€μ„ ν•΄κ²°ν•  수 있음

제 3 μ •κ·œν™”λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ μƒκΈ°λŠ” 문제

ν•™λ²ˆ 이름 μ†Œμ†ν•™κ³Ό λŒ€ν•™
1901 홍길동 컴퓨터과 κ³΅λŒ€
1845 μž„κΊ½μ • μ „μžκ³Ό κ³΅λŒ€
1706 μ‹ μ‚¬μž„λ‹Ή 경제 상경
1925 μž₯μ˜μ‹€ 경영 상경
  • ν•™λ²ˆβ†’μ†Œμ†ν•™κ³Ό, μ†Œμ†ν•™κ³Όβ†’λŒ€ν•™μ΄λ©΄ ν•™λ²ˆβ†’λŒ€ν•™μ΄ κ°€λŠ₯
  • λŒ€ν•™ 정보가 맀우 쀑볡됨
  • νŠΉμ • λŒ€ν•™λͺ…이 λ°”λ€ŒλŠ” 경우 μ—¬λŸ¬ 데이터λ₯Ό μˆ˜μ •ν•΄μ•Ό 함
  • 학생 데이터가 제거될 λ•Œ λŒ€ν•™ 데이터도 μœ μ‹€λ  수 있음

BCNF

  • candidate keyκ°€ μ•„λ‹˜μ—λ„ κ²°μ •μž 역할을 ν•˜λŠ” 것을 제거
  • ν…Œμ΄λΈ” λ‚΄ νŠΉμ • μ»¬λŸΌμ„ κ²°μ •μ§€μŒμ—λ„ λͺ¨λ“  μ»¬λŸΌμ„ 결정지을 수 μžˆλŠ” 컬럼(후보킀)이 μ•„λ‹Œ 경우 이λ₯Ό 별도 ν…Œμ΄λΈ”λ‘œ 뢄리해야 함

4NF

  • λ‹€μΉ˜ 쒅속성을 μ œκ±°ν•΄μ•Ό 함