λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

DB

9μž₯ μ •κ·œν™”

 

1 이상 ν˜„μƒ

이상(anomaly) ν˜„μƒμ΄λž€?

λΆˆν•„μš”ν•œ 데이터 μ€‘λ³΅μœΌλ‘œ 인해 λ¦΄λ ˆμ΄μ…˜μ— λŒ€ν•œ 데이터 μ‚½μž…·μˆ˜μ •·μ‚­μ œ 연산을 μˆ˜ν–‰ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” λΆ€μž‘μš©

 

이상 ν˜„μƒμ˜ μ’…λ₯˜

  • μ‚½μž… 이상(insertion anomaly)
    • λ¦΄λ ˆμ΄μ…˜μ— μƒˆ 데이터λ₯Ό μ‚½μž…ν•˜λ €λ©΄ λΆˆν•„μš”ν•œ 데이터도 ν•¨κ»˜ μ‚½μž…ν•΄μ•Ό ν•˜λŠ” λ¬Έμ œ
  • κ°±μ‹  이상(update anomaly)
    • λ¦΄λ ˆμ΄μ…˜μ˜ μ€‘λ³΅λœ νˆ¬ν”Œλ“€ 쀑 μΌλΆ€λ§Œ μˆ˜μ •ν•˜μ—¬ λ°μ΄ν„°κ°€ λΆˆμΌμΉ˜ν•˜κ²Œ λ˜λŠ” λͺ¨μˆœμ΄ λ°œμƒν•˜λŠ” 문제
  • μ‚­μ œ 이상(deletion anomaly)
    • λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œμ„ μ‚­μ œν•˜λ©΄ κΌ­ ν•„μš”ν•œ λ°μ΄ν„°κΉŒμ§€ μ†μ‹€λ˜λŠ” 연쇄 μ‚­μ œ ν˜„μƒμ΄ λ°œμƒν•˜λŠ” 문제

μ˜ˆμ‹œ

λ¦΄λ ˆμ΄μ…˜:

  • μ‚½μž… 이상
    • 아직 μ΄λ²€νŠΈμ— μ°Έμ—¬ν•˜μ§€ μ•Šμ€ 아이디가 “melon”, 이름이 “μ„±μ›μš©”, 등급이 “gold”인 μ‹ κ·œ 고객의 λ°μ΄ν„°λŠ” μ΄λ²€νŠΈμ°Έμ—¬ λ¦΄λ ˆμ΄μ…˜μ— μ‚½μž…ν•  수 μ—†μŒ – μ‚½μž…ν•˜λ €λ©΄ μ‹€μ œλ‘œ μ°Έμ—¬ν•˜μ§€ μ•Šμ€ μž„μ‹œ 이벀트번호λ₯Ό μ‚½μž…ν•΄μ•Ό 함
  • κ°±μ‹  이상
    • 아이디가 “apple”인 고객의 등급이 “gold”μ—μ„œ “vip”둜 λ³€κ²½λ˜μ—ˆλŠ”λ°, 일뢀 νˆ¬ν”Œμ— λŒ€ν•΄μ„œλ§Œ 등급이 μˆ˜μ •λœλ‹€λ©΄ “apple” 고객이 μ„œλ‘œ λ‹€λ₯Έ 등급을 κ°€μ§€λŠ” λͺ¨μˆœμ΄ λ°œμƒ
  • μ‚­μ œ 이상
    • 아이디가 “orange”인 고객이 이벀트 μ°Έμ—¬λ₯Ό μ·¨μ†Œν•΄ κ΄€λ ¨ νˆ¬ν”Œμ„ μ‚­μ œν•˜κ²Œ 되면 이벀트 참여와 관련이 μ—†λŠ” 고객아이디, 고객이름, λ“±κΈ‰ λ°μ΄ν„°κΉŒμ§€ 손싀됨

02 ν•¨μˆ˜ 쒅속

ν•¨μˆ˜ μ’…μ†μ΄λž€?

  • X → Y둜 ν‘œν˜„(XλŠ” κ²°μ •μž, YλŠ” μ’…μ†μž)
  • “Xκ°€ Yλ₯Ό ν•¨μˆ˜μ μœΌλ‘œ κ²°μ •ν•œλ‹€”
  • “Yκ°€ X에 ν•¨μˆ˜μ μœΌλ‘œ μ’…μ†λ˜μ–΄ μžˆλ‹€”와 같은 의미
  • λ¦΄λ ˆμ΄μ…˜ λ‚΄μ˜ λͺ¨λ“  νˆ¬ν”Œμ—μ„œ ν•˜λ‚˜μ˜ X 값에 λŒ€ν•œ Y 값이 항상 ν•˜λ‚˜μž„
  • X와 YλŠ” ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” μ†μ„±λ“€μ˜ λΆ€λΆ„ 집합

ν•¨μˆ˜ 쒅속 관계 νŒλ‹¨ μ‹œ 유의 사항

  • 속성 자체의 νŠΉμ„±κ³Ό 의미λ₯Ό 기반으둜 ν•¨μˆ˜ 쒅속성을 νŒλ‹¨ν•΄μ•Ό 함
    • 속성 값은 계속 λ³€ν•  수 μžˆμœΌλ―€λ‘œ ν˜„μž¬ λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λœ μ†μ„± κ°’λ§ŒμœΌλ‘œ νŒλ‹¨ν•˜λ©΄ μ•ˆλ¨
  • 일반적으둜 기본킀와 ν›„λ³΄ν‚€λŠ” λ¦΄λ ˆμ΄μ…˜μ˜ λ‹€λ₯Έ λͺ¨λ“  속성듀을 ν•¨μˆ˜μ μœΌλ‘œ 결정함
  • κΈ°λ³Έν‚€λ‚˜ 후보킀가 μ•„λ‹ˆμ–΄λ„ λ‹€λ₯Έ 속성 값을 μœ μΌν•˜κ²Œ κ²°μ •ν•˜λŠ” 속성은 ν•¨μˆ˜ 쒅속 κ΄€κ³„μ—μ„œ κ²°μ •μžκ°€ 될 수 있음
  • κ²°μ •μžμ™€ μ’…μ†μžκ°€ κ°™κ±°λ‚˜, κ²°μ •μžκ°€ μ’…μ†μžλ₯Ό ν¬ν•¨ν•˜λŠ” κ²ƒμ²˜λŸΌ λ‹Ήμ—°ν•œ ν•¨μˆ˜ 쒅속 κ΄€κ³„λŠ” κ³ λ €ν•˜μ§€ μ•ŠμŒ

μ˜ˆμ‹œ

λ¦΄λ ˆμ΄μ…˜:

ν•¨μˆ˜ 쒅속 관계 νŒŒμ•…:

ν•¨μˆ˜ 쒅속 λ‹€μ΄μ–΄κ·Έλž¨(ν•¨μˆ˜ 쒅속 관계λ₯Ό λ„μ‹ν™”ν•˜μ—¬ ν‘œν˜„ν•œ 것) :

 

μ’…λ₯˜

  • μ™„μ „ ν•¨μˆ˜ 쒅속(FFD; Full Functional Dependency)
    • λ¦΄λ ˆμ΄μ…˜μ—μ„œ 속성 집합 Yκ°€ 속성 집합 X에 ν•¨μˆ˜μ μœΌλ‘œ μ’…μ†λ˜μ–΄ μžˆμ§€λ§Œ, 속성 집합 X의 μ „체가 μ•„λ‹Œ μΌλΆ€λΆ„μ—λŠ” μ’…μ†λ˜μ§€ μ•ŠμŒμ„ 의미
    • 일반적으둜 ν•¨μˆ˜ 쒅속은 μ™„μ „ ν•¨μˆ˜ 쒅속을 μ˜λ―Έν•¨
    • 예) λ‹Ήμ²¨μ—¬λΆ€λŠ” {고객아이디, 이벀트번호}에 μ™„μ „ ν•¨μˆ˜ 쒅속됨
  • λΆ€λΆ„ ν•¨μˆ˜ 쒅속(PFD; Partial Functional Dependency)
    • λ¦΄λ ˆμ΄μ…˜μ—μ„œ 속성 집합 Yκ°€ 속성 집합 X의 전체가 μ•„λ‹Œ μΌλΆ€λΆ„에도 ν•¨μˆ˜μ μœΌλ‘œ 쒅속됨을 의미
    • 예) 고객이름은 {고객아이디, 이벀트번호}에 λΆ€λΆ„ ν•¨μˆ˜ 쒅속됨

03 κΈ°λ³Έ μ •κ·œν˜•κ³Ό μ •κ·œν™” κ³Όμ •

μ •κ·œν™”λž€?

  • κ°œλ…
    • ν•¨μˆ˜ 쒅속성을 μ΄μš©ν•΄ λ¦΄λ ˆμ΄μ…˜μ„ 연관성이 μžˆλŠ” μ†μ„±λ“€λ‘œλ§Œ κ΅¬μ„±λ˜λ„λ‘ λΆ„ν•΄(decomposition)ν•΄μ„œ, μ΄μƒ ν˜„μƒμ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ” μ˜¬λ°”λ₯Έ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ§Œλ“€μ–΄ κ°€λŠ” κ³Όμ •
      • κΈ°λ³Έ λͺ©ν‘œ : 관련이 μ—†λŠ” ν•¨μˆ˜ 쒅속성은 λ³„κ°œμ˜ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ ν‘œν˜„
  • 주의 사항
    • μ •κ·œν™”λ₯Ό 톡해 λ¦΄λ ˆμ΄μ…˜μ€ 무손싀 λΆ„ν•΄(nonloss decomposition)λ˜μ–΄μ•Ό 함
      • λ¦΄λ ˆμ΄μ…˜μ΄ μ˜λ―Έμƒ λ™λ“±ν•œ λ¦΄λ ˆμ΄μ…˜λ“€λ‘œ λΆ„ν•΄λ˜μ–΄μ•Ό ν•˜κ³ , λΆ„ν•΄λ‘œ μΈν•œ μ •λ³΄ 손싀이 λ°œμƒν•˜μ§€ μ•Šμ•„μ•Ό 함
      • λΆ„ν•΄λœ λ¦΄λ ˆμ΄μ…˜λ“€μ„ μžμ—° μ‘°μΈν•˜λ©΄ λΆ„ν•΄ μ „μ˜ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ³΅μ› κ°€λŠ₯ν•΄μ•Ό 함

μ •κ·œν˜•(NF; Normal Form)μ΄λž€?

  • λ¦΄λ ˆμ΄μ…˜μ΄ μ •κ·œν™”λœ 정도
  • 각 μ •κ·œν˜•λ§ˆλ‹€ μ œμ•½μ‘°κ±΄μ΄ 쑴재
    • μ •κ·œν˜•μ˜ μ°¨μˆ˜κ°€ λ†’μ•„μ§ˆμˆ˜λ‘ μš”κ΅¬λ˜λŠ” μ œμ•½μ‘°κ±΄μ΄ λ§Žμ•„μ§€κ³  엄격해짐
  • λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±μ„ κ³ λ €ν•΄μ„œ μ ν•©ν•œ μ •κ·œν˜•μ„ 선택

제 1 μ •κ·œν˜•(1NF; First Normal Form)

λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  속성이 λ”λŠ” λΆ„ν•΄λ˜μ§€ μ•ŠλŠ” μ›μž κ°’(atomic value)만 가지면 (닀쀑 κ°’ 속성 X) μ œ 1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•¨

제 1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•΄μ•Ό 관계 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ¦΄λ ˆμ΄μ…˜μ΄ 될 자격이 있음

제 2 μ •κ·œν˜•(2NF; Second Normal Form)

λ¦΄λ ˆμ΄μ…˜μ΄ 제 1 μ •κ·œν˜•μ— μ†ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ μ’…μ†λ˜λ©΄ μ œ 2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•¨

 

Q. 제 1 μ •κ·œν˜•μ— μ†ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ΄ 제 2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ²Œ ν•˜λ €λ©΄?

A. λΆ€λΆ„ ν•¨μˆ˜ 쒅속을 μ œκ±°ν•˜κ³  λͺ¨λ“  속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ μ’…μ†λ˜λ„λ‘ 뢄해해야함.

 

μ˜ˆμ‹œ

제 3 μ •κ·œν˜•(3NF; Third Normal Form)

λ¦΄λ ˆμ΄μ…˜μ΄ 제 2 μ •κ·œν˜•μ— μ†ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  속성이 기본킀에 이행적 ν•¨μˆ˜ 쒅속이 λ˜μ§€ μ•ŠμœΌλ©΄ μ œ 3 μ •κ·œν˜•μ„ λ§Œμ‘±ν•¨

 

Q. 제 2 μ •κ·œν˜•μ— μ†ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ΄ 제 3 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ²Œ ν•˜λ €λ©΄?

A. λͺ¨λ“  속성이 기본킀에 μ΄ν–‰μ  ν•¨μˆ˜ 쒅속이 λ˜μ§€ μ•Šλ„λ‘ λΆ„ν•΄

 

이행적 ν•¨μˆ˜ 쒅속(transitive FD)μ΄λž€?

λ¦΄λ ˆμ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” 3개의 속성 집합 X, Y, Z에 λŒ€ν•΄ ν•¨μˆ˜ 쒅속 관계 X → Y와 Y → Zκ°€ μ‘΄μž¬ν•˜λ©΄ λ…Όλ¦¬μ μœΌλ‘œ X → Zκ°€ μ„±λ¦½λ˜λŠ”λ°, μ΄λ•Œ Zκ°€ X에 μ΄ν–‰μ μœΌλ‘œ ν•¨μˆ˜ μ’…μ†λ˜μ—ˆλ‹€κ³  함

 

μ˜ˆμ‹œ

보이슀/μ½”λ“œ μ •κ·œν˜•(BCNF; Boyce/Codd Normal Form)

λ¦΄λ ˆμ΄μ…˜μ˜ ν•¨μˆ˜ 쒅속 κ΄€κ³„μ—μ„œ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀이면 λ³΄μ΄μŠ€/μ½”λ“œ μ •κ·œν˜•μ— μ†ν•œλ‹€.

ν•„μš”μ„±

  • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ— μ—¬λŸ¬ 개의 후보킀가 μ‘΄μž¬ν•˜λŠ” 경우, 제 3 μ •κ·œν˜•κΉŒμ§€ λͺ¨λ‘ λ§Œμ‘±ν•΄λ„ μ΄μƒ ν˜„μƒμ΄ λ°œμƒν•  수 있음

κ°•ν•œ 제 3 μ •κ·œν˜•(strong 3NF)

  • 후보킀λ₯Ό μ—¬λŸ¬ 개 가지고 μžˆλŠ” λ¦΄λ ˆμ΄μ…˜μ— λ°œμƒν•  수 μžˆλŠ” 이상 ν˜„μƒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 제 3 μ •κ·œν˜•λ³΄λ‹€ μ’€ 더 μ—„κ²©ν•œ μ œμ•½μ‘°κ±΄μ„ μ œμ‹œ
  • 보이슀/μ½”λ“œ μ •κ·œν˜•μ— μ†ν•˜λŠ” λͺ¨λ“  λ¦΄λ ˆμ΄μ…˜μ€ 제 3 μ •κ·œν˜•μ— μ†ν•˜μ§€λ§Œ, 제 3 μ •κ·œν˜•μ— μ†ν•˜λŠ” λͺ¨λ“  λ¦΄λ ˆμ΄μ…˜μ΄ 보이슀/μ½”λ“œ μ •κ·œν˜•μ— μ†ν•˜λŠ” 것은 μ•„λ‹˜

μ˜ˆμ‹œ

제 4 μ •κ·œν˜•

λ¦΄λ ˆμ΄μ…˜μ΄ 보이슀/μ½”λ“œ μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ, ν•¨μˆ˜ 쒅속이 μ•„λ‹Œ λ‹€μΉ˜ 쒅속(MVD; Multi Valued Dependency)을 μ œκ±°ν•˜λ©΄ 제 4 μ •κ·œν˜•μ— 속함

제 5 μ •κ·œν˜•

λ¦΄λ ˆμ΄μ…˜μ΄ 제 4 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ, ν›„보킀λ₯Ό ν†΅ν•˜μ§€ μ•ŠλŠ” 쑰인 쒅속 (JD; Join Dependency)을 μ œκ±°ν•˜λ©΄ 제 5 μ •κ·œν˜•μ— 속함

μ •κ·œν™” μ‹œ μ£Όμ˜μ‚¬ν•­

  • λͺ¨λ“  λ¦΄λ ˆμ΄μ…˜μ΄ 제 5 μ •κ·œν˜•μ— μ†ν•΄μ•Όλ§Œ λ°”λžŒμ§ν•œ 것은 μ•„λ‹˜
  • 일반적으둜 제 3 μ •κ·œν˜•μ΄λ‚˜ 보이슀/μ½”λ“œ μ •κ·œν˜•μ— μ†ν•˜λ„λ‘ λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜μ—¬ 데이터 쀑볡을 쀄이고 이상 ν˜„μƒμ„ ν•΄κ²°ν•˜λŠ” κ²½μš°κ°€ 많음