Skip to content

Latest commit

Β 

History

History
369 lines (206 loc) Β· 14.3 KB

Regularization.md

File metadata and controls

369 lines (206 loc) Β· 14.3 KB

μ •κ·œν™”

μ •κ·œν™”
ν•¨μˆ˜ 쒅속성
μ •κ·œν™” 단계
λ°˜μ •κ·œν™”


μ •κ·œν™”

λ°μ΄ν„°λ² μ΄μŠ€ μ •κ·œν™” λŠ” ν•¨μˆ˜ 쒅속성을 μ΄μš©ν•΄ λ¦΄λ ˆμ΄μ…˜μ„ 연관성이 μžˆλŠ” μ†μ„±λ“€λ‘œλ§Œ κ΅¬μ„±λ˜λ„λ‘ λΆ„ν•΄ν•΄μ„œ, 이상 ν˜„μƒμ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ” μ˜¬λ°”λ₯Έ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ§Œλ“€μ–΄ κ°€λŠ” 과정이닀.

  • κΈ°λ³Έ λͺ©ν‘œ : 관련이 μ—†λŠ” ν•¨μˆ˜ 쒅속성은 λ³„κ°œμ˜ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ ν‘œν˜„ν•˜λŠ” 것

μ •κ·œν™”λ₯Ό μ™œ ν• κΉŒ?

λΆˆν•„μš”ν•œ 데이터 μ€‘λ³΅λ¬Έμ œλ₯Ό 없앨 수 있고 μ‚½μž…, μ‚­μ œ, κ°±μ‹  μ‹œ λ°œμƒν•  수 μžˆλŠ” *이상 ν˜„μƒ(Anomaly)*λ₯Ό λ°©μ§€ν•  수 μžˆλ‹€. (큰 이유)

그리고 데이터 ꡬ쑰의 μ•ˆμ •μ„±κ³Ό 무결성을 μœ μ§€ν•  수 있고, 효과적인 검색 μ•Œκ³ λ¦¬μ¦˜μ„ 생성할 수 μžˆλ‹€.


이상 ν˜„μƒμ΄λž€ λ¬΄μ—‡μΌκΉŒ?

μ •κ·œν™”λ₯Ό κ±°μΉ˜μ§€ μ•Šμ•„ λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ˜ 데이터듀이 λΆˆν•„μš”ν•˜κ²Œ μ€‘λ³΅λ˜μ–΄ λ¦΄λ ˆμ΄μ…˜ μ‘°μž‘(μ‚½μž…, μ‚­μ œ, κ°±μ‹ ) μ‹œ μ˜ˆμƒν•˜μ§€ λͺ»ν•˜κ²Œ λ°œμƒν•˜λŠ” ν˜„μƒμ΄λ‹€.


κ°±μ‹  이상 ν˜„μƒμ—λŠ” 무엇이 μžˆμ„κΉŒ?

  1. μ‚½μž… 이상 (Insertion Anomaly)

    μ˜λ„ν•˜μ§€ μ•Šμ€ 데이터가 μ‚½μž…λ˜λŠ” ν˜„μƒ λ˜λŠ” μ‚½μž…μ΄ λ˜μ§€ μ•Šμ•„(μ‚½μž… 쑰건이 λ§žμ§€ μ•Šμ•„) λ°œμƒν•˜λŠ” ν˜„μƒ

  2. μ‚­μ œ 이상 (Deletion Anomaly)

    ν•˜λ‚˜μ˜ 자료만 μ‚­μ œν•˜κ³  μ‹Άμ§€λ§Œ, κ·Έ μžλ£Œκ°€ ν¬ν•¨λœ νŠœν”Œ 전체가 μ‚­μ œλ˜λŠ” ν˜„μƒ (μ›μΉ˜ μ•Šμ€ 정보 손싀 λ°œμƒ)

  3. κ°±μ‹  이상 (Modification Anomaly)

    μΌλΆ€μ˜ νŠœν”Œλ§Œ κ°±μ‹ λ˜μ–΄ 데이터 일관성이 κΉ¨μ§€λŠ” ν˜„μƒ (μ •ν™•ν•œ 정보 νŒŒμ•…μ΄ λ˜μ§€ μ•ŠμŒ)


κ°±μ‹  이상 ν˜„μƒ μ˜ˆμ‹œ

Untitled

  1. μ‚½μž… 이상 (Insertion Anomaly)

    Untitled

    아이디가 "melon", 이름이 "μ„±μ›μš©", 등급이 "gold"인 μ‹ κ·œ 고객의 데이터λ₯Ό μ‚½μž…ν•  수 μ—†λ‹€. (μ΄λ²€νŠΈλ²ˆν˜Έκ°€ NULL이 되기 떄문이닀)

    μ΄λ²€νŠΈμ— 아직 μ°Έμ—¬ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ μ‚½μž…ν•˜κΈ° μœ„ν•΄μ„œ 이벀트번호λ₯Ό μΆ”κ°€ν•΄μ€˜μ•Ό ν•œλ‹€.

  2. μ‚­μ œ 이상 (Deletion Anomaly)

    Untitled

    아이디가 ”orange”인 고객이 이벀트 μ°Έμ—¬λ₯Ό μ·¨μ†Œν•΄ κ΄€λ ¨ νˆ¬ν”Œμ„ μ‚­μ œν•˜κ²Œ 되면 이벀트 참여와 관련이 μ—†λŠ” 고객이름, λ“±κΈ‰ λ°μ΄ν„°κΉŒμ§€ μ†μ‹€λœλ‹€.

  3. κ°±μ‹  이상 (Modification Anomaly)

    Untitled

    아이디가 β€œapple”인 고객의 등급을 β€œgold” β†’ β€œvipβ€λ‘œ λ³€κ²½ν•˜λ €λ©΄ β€œapple”을 ν¬ν•¨ν•œ λͺ¨λ“  νŠœν”Œμ„ μˆ˜μ •ν•΄μ•Όν•œλ‹€.

    일뢀 νŠœν”Œμ— λŒ€ν•΄μ„œλ§Œ 등급이 μˆ˜μ •λ˜λ©΄, β€œapple” 고객의 등급이 μƒμ΄ν•˜λ‹€λŠ” λͺ¨μˆœμ΄ λ°œμƒν•œλ‹€.


이상 ν˜„μƒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 연관성이 높은 μ–΄νŠΈλ¦¬λ·°νŠΈλ“€λ‘œλ§Œ λ¦΄λ ˆμ΄μ…˜μ„ κ΅¬μ„±ν•΄μ•Όν•œλ‹€

λ¦΄λ ˆμ΄μ…˜ 속 μ–΄νŠΈλ¦¬λ·°νŠΈλ“€ μ‚¬μ΄μ˜ 연관성을 ν‰κ°€ν•˜κΈ° μœ„ν•œ μ²™λ„μ—λŠ” ν•¨μˆ˜ 쒅속성 이 μžˆλ‹€.



ν•¨μˆ˜ 쒅속성

ν•¨μˆ˜ 쒅속성이 뭘까?

ν•¨μˆ˜ 쒅속성 (FD: Functional Dependency) : 같은 λ¦΄λ ˆμ΄μ…˜ μ†μ˜ μ–΄νŠΈλ¦¬λ·°νŠΈ 값이 ν•¨μˆ˜μ μœΌλ‘œ λ‹€λ₯Έ μ–΄νŠΈλ¦¬λ·°νŠΈ 값을 κ²°μ •ν•˜λŠ” 쒅속 관계λ₯Ό λ§ν•œλ‹€.

Untitled

μ–΄νŠΈλ¦¬λ·°νŠΈ1 β†’ μ–΄νŠΈλ¦¬λ·°νŠΈ2 둜 μ–΄νŠΈλ¦¬λ·°νŠΈ2 의 값이 μ–΄νŠΈλ¦¬λ·°νŠΈ1의 값에 μ˜ν•΄ κ²°μ •λœλ‹€λŠ” 의미의 ν•¨μˆ˜ 쒅속성을 ν‘œν˜„ν•  수 μžˆλ‹€.

  • μ–΄νŠΈλ¦¬λ·°νŠΈ1 = μ–΄νŠΈλ¦¬λ·°νŠΈ2λ₯Ό κ²°μ •ν•˜λŠ” κ²°μ •μž(Determinant)
  • μ–΄νŠΈλ¦¬λ·°νŠΈ2 = μ–΄νŠΈλ¦¬λ·°νŠΈ1에 μ’…μ†λœ μ’…μ†μž(Dependent)

ν•¨μˆ˜ μ’…μ†μ˜ μ˜ˆμ‹œ

Untitled

고객아이디 λΌλŠ” μ–΄νŠΈλ¦¬λ·°νŠΈ 값에 λŒ€μ‘λ˜λŠ” 고객이름, λ“±κΈ‰ μ–΄νŠΈλ¦¬λ·°νŠΈ 값이 μœ μΌν•˜λ‹€. (고객아이디 : 고객이름, λ“±κΈ‰ = 1:1 이닀)

Untitled

κ²°μ •μž, μ’…μ†μžλ₯Ό μ°Ύμ•„λ³΄μž

Untitled

μœ„μ™€ 같은 λ¦΄λ ˆμ΄μ…˜μ΄ μžˆμ„ λ•Œ, ν•¨μˆ˜ 쒅속 λ‹€μ΄μ–΄κ·Έλž¨μ„ μ•„λž˜μ™€ 같이 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

Untitled

ν•™λ²ˆ μ–΄νŠΈλ¦¬λ·°νŠΈμ— λŒ€μ‘λ˜λŠ” 이름, μ£Όμ†Œ, ν•™λ…„, 성별 μ–΄νŠΈλ¦¬λ·°νŠΈ 값듀이 μœ μΌν•˜λ‹€.

κ°€λ§Œνžˆ 보면 κΈ°λ³Έν‚€ , 후보킀 λŠ” 일반적으둜 λ¦΄λ ˆμ΄μ…˜μ˜ λ‹€λ₯Έ μ–΄νŠΈλ¦¬λ·°νŠΈλ“€μ„ ν•¨μˆ˜μ μœΌλ‘œ κ²°μ •ν•œλ‹€. (ν•¨μˆ˜ 쒅속성을 κ°€μ§„λ‹€)

근데 κΈ°λ³Έν‚€, 후보킀가 μ•„λ‹Œ μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ λ‹€λ₯Έ μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό μœ μΌν•˜κ²Œ κ²°μ •ν•˜λŠ” κ²°μ •μž κ°€ 될 수 μžˆλ‹€.


그럼 μ™„μ „ ν•¨μˆ˜ 쒅속과 λΆ€λΆ„ ν•¨μˆ˜ 쒅속이 뭘까?

  1. μ™„μ „ ν•¨μˆ˜ 쒅속 (Full Functional Dependency)
{X, Y}(κ²°μ •μž) -> A(μ’…μ†μž)
X -/-> A
Y -/-> A

νŠΉμ • μ–΄νŠΈλ¦¬λ·°νŠΈ(A)κ°€ λ‘˜ μ΄μƒμ˜ μ–΄νŠΈλ¦¬λ·°νŠΈ μ‘°ν•©({X, Y})의 μ’…μ†μžμ΄μ§€λ§Œ, κ²°μ •μžμ˜ 일뢀 μ–΄νŠΈλ¦¬λ·°νŠΈ(X λ˜λŠ” Y)μ—λŠ” μ’…μ†μžκ°€ μ•„λ‹Œ κ²½μš°μ΄λ‹€.

  • 일반적으둜 μ˜λ―Έν•˜λŠ” ν•¨μˆ˜ 쒅속은 μ™„μ „ ν•¨μˆ˜ 쒅속을 λ§ν•œλ‹€.
  • κ²°μ •μž κ°€ 단일 μ–΄νŠΈλ¦¬λ·°νŠΈμ΄λ©΄ λ‹Ήμ—°νžˆ μ™„μ „ ν•¨μˆ˜ 쒅속이닀.

  1. λΆ€λΆ„ ν•¨μˆ˜ 쒅속 (Partial Functional Dependency)
{X, Y}(κ²°μ •μž) -> A(μ’…μ†μž)
X(κ²°μ •μž) -> A(μ’…μ†μž)
Y(κ²°μ •μž) -> A(μ’…μ†μž)

νŠΉμ • μ–΄νŠΈλ¦¬λ·°νŠΈ(A)κ°€ λ‘˜ μ΄μƒμ˜ μ–΄νŠΈλ¦¬λ·°νŠΈ μ‘°ν•©({X, Y})의 μ’…μ†μžμ΄κ³ , κ²°μ •μžμ˜ 일뢀 μ–΄νŠΈλ¦¬λ·°νŠΈ(X λ˜λŠ” Y)에도 μ’…μ†μžμΈ κ²½μš°μ΄λ‹€.



이게 λ­” μ†Œλ¦¬μΌκΉŒ? μ˜ˆμ‹œλ₯Ό 톡해 μ΄ν•΄ν•΄λ³΄μž

99218599-3ea40a80-281e-11eb-9530-809a68fc0704.png

ν•™λ²ˆ, κ³Όλͺ©λ²ˆν˜Έ λΌλŠ” μ–΄νŠΈλ¦¬λ·°νŠΈ 쑰합은 학점 μ΄λΌλŠ” μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ κ²°μ •μžμ΄λ‹€. ν•˜μ§€λ§Œ ν•™λ²ˆ , κ³Όλͺ©λ²ˆν˜Έ 각각 ν•˜λ‚˜λ§Œ 봀을 λ•Œ, 학점 μ΄λΌλŠ” μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ κ²°μ •μž 역할을 ν•˜μ§€ λͺ»ν•œλ‹€.

β†’ ν•™λ²ˆ, κ³Όλͺ©λ²ˆν˜Έ λΌλŠ” ν•˜λ‚˜μ˜ μ–΄νŠΈλ¦¬λ·°νŠΈ 쑰합이 κ²°μ •μž 역할을 μˆ˜ν–‰ν•œλ‹€. (ν•™λ²ˆ, κ³Όλͺ©λ²ˆν˜Έ 와 학점 μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ μ™„μ „ ν•¨μˆ˜ 쒅속 관계에 μžˆλ‹€κ³  말할 수 μžˆλ‹€.)

ν•™λ²ˆ μ΄λΌλŠ” μ–΄νŠΈλ¦¬λ·°νŠΈλŠ” 성별 μ΄λΌλŠ” μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό κ²°μ •ν•˜λŠ” κ²°μ •μžμ΄λ‹€. λ˜ν•œ κ°•μ˜κ΅μˆ˜ μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ κ²°μ •μžμ΄κΈ°λ„ ν•˜λ‹€.

β†’ ν•™λ²ˆ -> 성별 , ν•™λ²ˆ -> κ°•μ˜κ΅μˆ˜ λŠ” λΆ€λΆ„ ν•¨μˆ˜ 쒅속 관계에 μžˆλ‹€κ³  말할 수 μžˆλ‹€.



μ •κ·œν™” 단계

Untitled

1μ°¨ μ •κ·œν™”μ—μ„œ nμ°¨ μ •κ·œν™”κΉŒμ§€ μ§„ν–‰ν•˜λ©΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ°”λžŒμ§ν•˜μ§€ μ•Šμ€ ꡬ쑰λ₯Ό κ°œμ„ ν•΄ λ‚˜κ°„λ‹€.

  • 보톡 3μ°¨ μ •κ·œν™”κΉŒμ§€λ§Œ 해도 μΆ©λΆ„ν•˜λ‹€κ³  ν•˜λ©°, 싀무에선 λΉ„μš©μ˜ 문제둜 μ •κ·œν™”λ₯Ό μ•ˆν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. (λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ join 연산이 μ¦κ°€ν•˜μ—¬ 질의 응닡 μ‹œκ°„μ΄ λŠ˜μ–΄λ‚  수 있기 λ•Œλ¬Έμ΄λ‹€.)

## 제 1μ°¨ μ •κ·œν™”

ν•œ λ¦΄λ ˆμ΄μ…˜μ΄ 제 1μ •κ·œν˜•μ„ λ§Œμ‘±ν•  ν•„μš”μΆ©λΆ„ 쑰건은

  1. λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ μ›μžκ°’(Atomic)만 κ°€μ Έμ•Ό ν•œλ‹€λŠ” 것이닀.
  2. λͺ¨λ“  μ–΄νŠΈλ¦¬λ·°νŠΈλŠ” λ°˜λ³΅λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€ (λ™μΌν•œ 성격이 μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ μ—¬λŸ¬ 개 있으면 μ•ˆλœλ‹€)

ν•˜λ‚˜μ˜ μ–΄νŠΈλ¦¬λ·°νŠΈμ— μ—¬λŸ¬ 데이터λ₯Ό λ„£μœΌλ©΄ μ•ˆλœλ‹€

Untitled

이벀트 번호 λ˜λŠ” 당첨 μ—¬λΆ€λ₯Ό κΈ°μ€€μœΌλ‘œ κ²€μƒ‰ν•˜κΈ° μ–΄λ ΅λ‹€.


λ™μΌν•œ μ„±κ²©μ˜ μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ μ—¬λŸ¬ 개 μžˆμ–΄λ„ μ•ˆλœλ‹€.

Untitled

μœ„μ™€ 같이 λ™μΌν•œ μ„±κ²©μ˜ 데이터λ₯Ό μ—¬λŸ¬ μ»¬λŸΌμ— μ €μž₯ν•˜λŠ” 것도 제 1 μ •κ·œν™” λŒ€μƒμ΄λ‹€.

Untitled

제 1 μ •κ·œν™”λ₯Ό μ μš©ν•˜λ©΄ μœ„μ™€ κ°™λ‹€. ν•˜μ§€λ§Œ μœ„μ™€ 같은 λ¦΄λ ˆμ΄μ…˜μ—μ„œ 데이터가 μ€‘λ³΅λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•œλ‹€. (1113 읡λͺ…이)

  • μˆ˜κ°•λ²ˆν˜Έκ°€ 1113이고 이름이 읡λͺ…이인 μˆ˜κ°•κ³Όλͺ©μ„ μ˜μ–΄λ‘œ λ³€κ²½ν•  λ•Œ κ°±μ‹  이상 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. (μˆ˜ν•™, κ΅­μ–΄ β†’ μ˜μ–΄)

제 1μ •κ·œν™”λ₯Ό ν–ˆλ”λΌλ„ β†’ μ‚½μž… 이상, μ‚­μ œ 이상, κ°±μ‹  이상이 λ°œμƒν•œλ‹€.

Untitled

μœ„ λ¦΄λ ˆμ΄μ…˜μ€ 제 1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•œλ‹€. ν•˜μ§€λ§Œ μ‚½μž… 이상, μ‚­μ œ 이상, κ°±μ‹  이상이 λ°œμƒν•  수 μžˆλ‹€.

Untitled

기본킀인 고객아이디, 이벀트번호 에 μ™„μ „ ν•¨μˆ˜ μ’…μ†λ˜μ§€ μ•Šκ³ , κ·Έ 일뢀뢄인 고객아이디 μ—λ§Œ μ’…μ†λ˜λŠ” λ“±κΈ‰, ν• μΈμœ¨ μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. (λΆ€λΆ„ ν•¨μˆ˜ 쒅속이 쑴재)

이λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ λΆ€λΆ„ ν•¨μˆ˜ 쒅속을 μ œκ±°ν•˜κΈ° μœ„ν•΄ λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€. λΆ„ν•΄λœ λ¦΄λ ˆμ΄μ…˜μ€ 제 2 μ •κ·œν˜•μ— μ†ν•˜κ²Œ λœλ‹€.


## 제 2 μ •κ·œν™”

제 1 μ •κ·œν˜•μ— μ†ν•˜λ©΄μ„œ κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  μ–΄νŠΈλ¦¬λ·°νŠΈλ“€μ΄ κΈ°λ³Έ 킀에 μ™„μ „ ν•¨μˆ˜ 쒅속 되면 제 2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•œλ‹€κ³  말할 수 μžˆλ‹€.

  • 제 1 μ •κ·œν˜•μ— μ†ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ—μ„œ λΆ€λΆ„ ν•¨μˆ˜ 쒅속을 제거 ν•˜κ³  λͺ¨λ“  μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속 λ˜λ„λ‘ λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜λ©΄ 제 2 μ •κ·œν˜•μ— μ†ν•˜κ²Œ λœλ‹€.

λΆ€λΆ„ ν•¨μˆ˜ 쒅속을 μ œκ±°ν•΄ 보자

Untitled

고객 λ¦΄λ ˆμ΄μ…˜κ³Ό μ΄λ²€νŠΈμ°Έμ—¬ λ¦΄λ ˆμ΄μ…˜μ€ λͺ¨λ‘ 제 2 μ •κ·œν˜•μ— μ†ν•œλ‹€.

Untitled

ν•˜μ§€λ§Œ λ¦΄λ ˆμ΄μ…˜μ„ 뢄해해도 이행적 ν•¨μˆ˜ 쒅속 관계 κ°€ μ‘΄μž¬ν•œλ‹€.


이행적 ν•¨μˆ˜ 쒅속 κ΄€κ³„λŠ” 또 뭘까?

ν•œ λ¦΄λ ˆμ΄μ…˜μ˜ μ–΄νŠΈλ¦¬λ·°νŠΈ A, B, Cκ°€ μžˆμ„ λ•Œ, μ–΄νŠΈλ¦¬λ·°νŠΈ Cκ°€ μ΄ν–‰μ μœΌλ‘œ A에 쒅속(A β†’ C)λœλ‹€λŠ” κ²ƒμ˜ ν•„μš”μΆ©λΆ„ 쑰건은 **Aβ†’B ∩ Bβ†’C κ°€ 성립**ν•˜λŠ” 것이닀.

  • 고객아이디 β†’ λ“±κΈ‰ β†’ ν• μΈμœ¨ : 고객아이디가 등급을 톡해 ν• μΈμœ¨μ„ κ²°μ •ν•˜λŠ” 이행적 ν•¨μˆ˜ 쒅속 관계가 μ‘΄μž¬ν•œλ‹€.

이행적 ν•¨μˆ˜ 쒅속 관계λ₯Ό μ—†μ• κΈ° μœ„ν•΄ 제 3 μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•΄μ•Όν•œλ‹€.


## 제 3 μ •κ·œν™”

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


이행적 ν•¨μˆ˜ 쒅속 관계λ₯Ό μ—†μ• λ €λ©΄?

Untitled

고객아이디가 등급을 톡해 ν• μΈμœ¨μ„ κ²°μ •ν•˜λŠ” 이행적 ν•¨μˆ˜ 쒅속 관계λ₯Ό μ—†μ• κΈ° μœ„ν•΄ μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€.

Untitled


## BCNF(Boyce-Codd) μ •κ·œν™”

3μ°¨ μ •κ·œν˜•μ„ 쑰금 더 κ°•ν™”ν•œ λ²„μ „μœΌλ‘œ 3μ°¨ μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀 집합에 μ†ν•œ μ •κ·œν˜• 이닀.

  • λ³΅μž‘ν•œ μ‹λ³„μž 관계에 μ˜ν•΄ λ°œμƒν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 제 3 μ •κ·œν˜•μ„ λ³΄μ™„ν•˜λŠ”λ° μ˜λ―Έκ°€ μžˆλ‹€
  • 3μ°¨ μ •κ·œν˜•μœΌλ‘œ ν•΄κ²°ν•  수 μ—†λŠ” μ΄μƒν˜„μƒμ„ ν•΄κ²°ν•  수 μžˆλ‹€.

3μ°¨ μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ BCNFλŠ” λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” 경우? β†’ 일반 μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ 후보킀λ₯Ό κ²°μ •ν•˜λŠ” κ²½μš°μ΄λ‹€.

Untitled

이 λ¦΄λ ˆμ΄μ…˜μ—λŠ” ν•œλͺ…μ˜ κ΅μˆ˜λŠ” ν•œ κ°•μ˜λ§Œ λ‹΄λ‹Ήν•  수 μžˆλ‹€λŠ” μ œμ•½μ‘°κ±΄μ΄ μžˆλ‹€.

ν•΄λ‹Ή λ¦΄λ ˆμ΄μ…˜μ—μ„œ ν›„λ³΄ν‚€λŠ” 학생, κ³Όλͺ© μ–΄νŠΈλ¦¬λ·°νŠΈμ΄λ‹€. (학생, κ³Όλͺ© μ–΄νŠΈλ¦¬λ·°νŠΈλ‘œ νŠœν”Œμ„ μœ μΌν•˜κ²Œ ꡬ뢄할 수 μžˆλ‹€)

μ—¬κΈ°μ„œ ꡐ수 μ–΄νŠΈλ¦¬λ·°νŠΈλŠ” 후보킀가 μ•„λ‹˜μ—λ„ μ œμ•½μ‘°κ±΄μ— μ˜ν•΄ κ³Όλͺ© μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ κ²°μ •μž 역할을 ν•˜κ³  μžˆλ‹€. (후보킀가 μ•„λ‹Œ 일반 μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ κ²°μ •μž 역할을 ν•˜κ³  μžˆλŠ”κ²Œ λ¬Έμ œμ΄λ‹€)

μ΄λŸ¬ν•  경우 μ‚½μž… 이상, κ°±μ‹  이상, μ‚­μ œ 이상이 λ°œμƒν•  수 μžˆλ‹€. Mr.Sim의 κ³Όλͺ©λͺ…을 λ³€κ²½ν•  경우, 두 개의 νŠœν”Œμ΄ κ°±μ‹ λœλ‹€.


BCNF μ •κ·œν™”λ₯Ό ν•΄λ³΄μž

Untitled

ꡐ수, κ³Όλͺ© κ³Ό 학생, κ³Όλͺ©, 학점 으둜 λ¦΄λ ˆμ΄μ…˜μ„ λΆ„λ¦¬ν•˜λŠ”κ²Œ BCNF이닀.


λ°˜μ •κ·œν™”

μ •κ·œν™”μ˜ 단점 β†’ JOIN μ—°μ‚°!

μ •κ·œν™”λ₯Ό ν•˜λ©΄ λ¦΄λ ˆμ΄μ…˜ λΆ„λ¦¬λ‘œ 인해 λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ JOIN 연산이 λ§Žμ•„μ Έμ„œ μ§ˆμ˜μ— λŒ€ν•œ 응닡 μ‹œκ°„μ΄ λŠλ €μ§€λŠ” λ¬Έμ œκ°€ μžˆλ‹€.

μ •κ·œν™”λ₯Ό μ§„ν–‰μ‹œν‚€μ§€ μ•Šμ€ λͺ¨λΈμ„ μ˜λ―Έν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ •κ·œν™”λ₯Ό μ§„ν–‰ν•œ λ‹€μŒμ—, ν•„μš”μ— μ˜ν•΄ λ‹€μ‹œ λ¦΄λ ˆμ΄μ…˜μ„ ν•©μΉ˜λŠ” λ“± 데이터λ₯Ό μ€‘λ³΅μ‹œν‚€λŠ” μž‘μ—…μ„ μ˜λ―Έν•œλ‹€. 보톡 데이터 쀑볡을 ν—ˆμš©ν•˜λ―€λ‘œμ¨ JOIN 연산을 쀄이기 μœ„ν•΄ μ‚¬μš©ν•œλ‹€.


λΉ„μ •κ·œν™”κ°€ ν•„μš”ν•œ 경우

  • 데이터λ₯Ό μ‘°νšŒν•˜λŠ”λ° μ§€λ‚˜μΉ˜κ²Œ JOIN 연산이 많이 ν•„μš”ν•  경우
  • νŠΉμ • 데이터λ₯Ό μ‘°νšŒν•˜λŠ” νšŸμˆ˜κ°€ 많고 νŠΉμ • λ²”μœ„λ§Œ μ‘°νšŒν•  경우
  • μ •κ·œν™”μ— μΆ©μ‹€ν•˜μ—¬ 쒅속성, ν™œμš©μ„±μ€ ν–₯μƒλ˜μ—ˆμ§€λ§Œ, μˆ˜ν–‰μ†λ„κ°€ λŠλ €μ§„ 경우
  • μš”μ•½/집계 정보가 자주 μš”κ΅¬λ˜λŠ” 경우

μ •κ·œν™”μ™€ λ°˜μ •κ·œν™”λŠ” Trade off 관계

μ •κ·œν™”λ₯Ό ν•˜λ©΄ μ •ν•©μ„±κ³Ό 데이터무결성이 보μž₯λœλ‹€. 반면, ν…Œμ΄λΈ”μ΄ λ³΅μž‘ν•΄μ§€κ³  μ„±λŠ₯이 λ–¨μ–΄μ§ˆ 수 μžˆλ‹€. 그에 따라 μž…λ ₯(Create), μˆ˜μ •(Update), μ‚­μ œ(Delete)의 μ„±λŠ₯은 ν–₯μƒλ˜κ³  쑰회(Read)의 경우 λ‚˜λΉ μ§ˆμˆ˜λ„ 있고 μ’‹μ•„μ§ˆ μˆ˜λ„ μžˆλ‹€.

λ°˜μ •κ·œν™”λ₯Ό ν•˜λ©΄ ν…Œμ΄λΈ”μ΄ λ‹¨μˆœν™” λ˜μ–΄ 쿼리 μ„±λŠ₯이 ν–₯μƒλ˜λŠ” 반면, μ •ν•©μ„±κ³Ό 데이터 무결성을 깨뜨리기 λ•Œλ¬Έμ— μ΄μƒν˜„μƒμ„ μΌμœΌν‚¬ 수 μžˆλ‹€.


μ°Έκ³ 

μ •κ·œν™”.md#2-ν•¨μˆ˜-쒅속성

μ •κ·œν™”(Normalization).md

μ •κ·œν™”μ—-λŒ€ν•΄μ„œ

λ©΄μ ‘ μ˜ˆμƒ 질문

μ •κ·œν™”λ₯Ό μ™œ ν•˜λ‚˜μš”? (갱신이상)

ν•¨μˆ˜ 쒅속성이 λ¬΄μ—‡μΈκ°€μš”? (λΆ€λΆ„/μ™„μ „/이행적 ν•¨μˆ˜ 쒅속성)

μ˜ˆμ‹œλ₯Ό λ“€μ–΄ 1,2,3μ°¨ μ •κ·œν™”μ— λŒ€ν•΄μ„œ μ„€λͺ…ν•΄μ£Όμ„Έμš”

λ°˜μ •κ·œν™”λ₯Ό μ™œ ν• κΉŒμš”? (μž₯단점)