λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ—‚.λŒ€μ™Έν™œλ™/πŸ“.μΉ΄μΉ΄μ˜€ν΄λΌμš°λ“œμŠ€μΏ¨

[DB] μ •κ·œν™”

by πŸ’Ύκ³ κ΅¬λ§ˆλ§›νƒ•λ¨Ήκ³ μ‹Άλ‹€ 2024. 1. 2.
728x90

쀑볡을 μ΅œμ†Œν™”ν•˜κΈ°μœ„ν•΄μ„œ μ •κ·œν™”λ₯Ό ν•œλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ˜ κ°€μž₯ ν° λͺ©μ μ€ μ€‘볡을 μ œκ±°ν•˜λŠ” κ²ƒμ΄λ‹€.

μ™œ? 쀑볡이 있으면 이상 ν˜„μƒμ΄ λ°œμƒν•  수 μžˆλ‹€.

 

🎲  이상 ν˜„μƒ ( Anomaly )

  1. μ‚­μ œμ΄μƒ: 연쇄적 μ‚­μ œ 문제 λ°œμƒ
  2. μ‚½μž…μ΄μƒ: NULL κ°’ 문제 λ°œμƒ
  3. μˆ˜μ •μ΄μƒ: 뢈일치 문제 λ°œμƒ

 

🎲  ν•¨μˆ˜ 쒅속성( Functional Dependency )

μ–΄λ–€ μ†μ„±μ˜ 값을 μ•Œλ©΄ λ‹€λ₯Έ 속성 값이 μœ μΌν•˜κ²Œ μ •ν•΄μ§€λŠ” 의쑴 관계λ₯Ό μ’…μ†ν•œλ‹€κ³  ν•œλ‹€.

ex. 학생 번호λ₯Ό μ•Œλ©΄ 학생이름을 μ•Œ 수 μžˆλ‹€. ν•˜μ§€λ§Œ ν•™μƒλ²ˆν˜Έλ‘œ 학생이 μˆ˜κ°•ν•˜λŠ” κ°•μ’Œμ΄λ¦„μ„ μœ μΌν•˜κ²Œ μ•Œ μˆ˜λŠ” μ—†λ‹€. (μ—¬λŸ¬κ°œλ₯Ό μˆ˜κ°•ν•  수 도 μžˆκΈ°λ•Œλ¬Έμ—)

X 각각의 값이 Y의 κ°’ ν•œ κ°œμ™€ λŒ€μ‘μ΄ 되면 ‘XλŠ” Yλ₯Ό ν•¨μˆ˜μ μœΌλ‘œ κ²°μ •ν•œλ‹€’, X→Y둜 ν‘œκΈ°ν•œλ‹€. Xκ°€ κ²°μ •μžμ΄λ‹€.

* ν•¨μˆ˜ 쒅속성 κ·œμΉ™μ΄ λ§Žλ‹€. 그쀑 이행 κ·œμΉ™μ€ X → Y, Y → Z이면 X → Zκ°€ μ„±λ¦½ν•œλ‹€.

 

πŸ‘‰ μ΄μƒν˜„μƒμ€ ν•œκ°œμ˜ λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”)에 λ‘κ°œ μ΄μƒμ˜ 정보가 ν¬ν•¨λ˜μ–΄μžˆμœΌλ©΄ λ‚˜νƒ€λ‚œλ‹€.

πŸ‘‰ κΈ°λ³Έν‚€κ°€ μ•„λ‹ˆλ©΄μ„œ κ²°μ •μž(ex. X, κ²°μ •κΆŒμž)인 속성이 있으면 λ°œμƒν•œλ‹€.

 

🎲  μ •κ·œν™” ( Normalization )

μ΄μƒν˜„μƒμ΄ λ°œμƒν•˜λŠ” λ¦΄λ ˆμ΄μ…˜(ν…Œμ΄λΈ”)을 λΆ„ν•΄ν•΄ μ΄μƒν˜„μƒμ„ μ—†μ• λŠ” 과정을 λ§ν•œλ‹€.

BCNFκΉŒμ§€ μ§„ν–‰ν•˜λ©΄ λŒ€λ‹€μˆ˜μ˜ μ΄μƒν˜„μƒμ΄ 없어진닀. λ”°λΌμ„œ BCNFκΉŒμ§€ μ •κ·œν™”λ₯Ό μ§„ν–‰ν•˜λ©΄ ν˜„μž₯μ—μ„œ μΆ©λΆ„ν•˜λ‹€κ³  νŒλ‹¨ν•œλ‹€.

 

πŸ”‰ 제 1 μ •κ·œν˜•: λͺ¨λ“  속성값이 μ›μžκ°’(ν•˜λ‚˜μ˜ κ°’)을 κ°€μ§€λŠ” 것이닀. 

πŸ”‰ 제 2 μ •κ·œν˜•: 제 1 μ •κ·œν˜•μ΄λ©°, κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속 관계일 λ•Œλ₯Ό λ§ν•œλ‹€. 

* μ™„μ „ ν•¨μˆ˜ 쒅속: κΈ°λ³Έν‚€κ°€ μ—¬λŸ¬ μ†μ„±μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ„ λ•Œ κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성쀑 ν•˜λ‚˜κ°€ λ‹€λ₯Έ μ†μ„±μ—κ²Œ μ’…μ†λ˜λ©΄ μ•ˆλœλ‹€. κΈ°λ³Έν‚€(A,B) → Cλ₯Ό 쒅속할 λ•Œ B → Dκ°€ μ„±λ¦½λ˜λ©΄ μ•ˆλœλ‹€. 이런 경우 B,D을 가지고 λ‹€λ₯Έ ν…Œμ΄λΈ”μ„ κ΅¬μ„±ν•΄μ•Όν•œλ‹€. κΈ°λ³Έν‚€λ₯Ό κΈ°μ€€μœΌλ‘œ λ‹€λ₯Έ 속성이 λͺ¨λ‘ 기본킀에 μ’…μ†λ˜μ–΄μ•Όν•œλ‹€.

πŸ”‰ μ œ 3 μ •κ·œν˜•: μ œ 2 μ •κ·œν˜•μ΄λ©°, κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 λΉ„μ΄ν–‰μ μœΌλ‘œ μ’…μ†ν•˜λŠ” 것이닀.

* 이행적 쒅속은 X → Y, Y → Z κ°€ μ„±λ¦½ν•˜λ©΄ X → Zκ°€ 성립

μ•„λž˜ μ˜ˆμ‹œλŠ” 학생이 ν•œ κ°•μ’Œλ§Œ μ‹ μ²­ν•  수 μžˆλ‹€κ³  κ°€μ •ν•œ ν…Œμ΄λΈ”μ΄λ‹€. 이 경우 κ°•μ’Œμ΄λ¦„κ³Ό μˆ˜κ°•λ£Œλ₯Ό λ‹€λ₯Έ ν…Œμ΄λΈ”λ‘œ λΆ„ν•΄ν•΄μ•Όν•œλ‹€.

ν•™μƒλ²ˆν˜Έ κ°•μ’Œμ΄λ¦„ μˆ˜κ°•λ£Œ
101 μ•Œκ³ λ¦¬μ¦˜ 10000
201 μ•Œκ³ λ¦¬μ¦˜ 10000
202 λ°μ΄ν„°λ² μ΄μŠ€ 15000
102 자료ꡬ쑰 20000

 

πŸ”‰ BCNF: ν•¨μˆ˜ 쒅속성 X → Y κ°€ 성립할 λ•Œ λͺ¨λ“  κ²°μ •μžμΈ Xκ°€ 후보킀이면 BCNF μ •κ·œν˜•μ΄λ‹€. 값이 쀑볡될 수 μžˆλŠ” 속성은 κ²°μ •μžκ°€ 되면 μ•ˆλœλ‹€. λ”°λΌμ„œ 보톡 ID값을 주둜 μ‚¬μš©ν•œλ‹€. 즉, κ²°μ •μžκ°€ 되렀면 기본킀와 같은 μ„±ν–₯, ν›„λ³΄ν‚€μ΄μ–΄μ•Όν•œλ‹€.

* ν›„λ³΄ν‚€λŠ” 쀑볡값이 μ—†λŠ” 속성을 λ§ν•œλ‹€.

 

🎲  μ—°μŠ΅ 문제

* λ„μ„œ μ£Όλ¬Έ μ •κ·œν™”

​

제 2 μ •κ·œν˜•

μ£Όλ¬Έ (주문번호, μ£Όλ¬Έλ‚ μ§œ, νšŒμ›λ²ˆν˜Έ, λ„μ„œSNO, μˆ˜λŸ‰)

νšŒμ›μ •λ³΄ (νšŒμ›λ²ˆν˜Έ, νšŒμ›μ΄λ¦„, νšŒμ›μ£Όμ†Œ, μ „ν™”λ²ˆν˜Έ)

λ„μ„œμ •λ³΄ (λ„μ„œSNO, λ„μ„œλͺ…, 단가)

​

↓↓↓↓

​

제 3 μ •κ·œν˜•, BCNF

μ£Όλ¬Έ (주문번호, μ£Όλ¬Έλ‚ μ§œ, νšŒμ›λ²ˆν˜Έ)

주문상세 (주문번호, λ„μ„œSNO, μˆ˜λŸ‰)

νšŒμ›μ •λ³΄ (νšŒμ›λ²ˆν˜Έ, νšŒμ›μ΄λ¦„, νšŒμ›μ£Όμ†Œ, μ „ν™”λ²ˆν˜Έ)

λ„μ„œμ •λ³΄ (λ„μ„œSNO, λ„μ„œλͺ…, 단가)

728x90