배경지식 : ν•¨μˆ˜ 쒅속

두 νŠœν”Œμ˜ X값이 κ°™λ‹€λ©΄ Y값도 같은 κ²½μš°κ°€ μžˆλ‹€. 즉 X 값에 λ”°λΌμ„œ Y의 값이 κ²°μ •λ˜λŠ” 것인데, X와 Yλ₯Όμ„ ν•¨μˆ˜ 쒅속 관계라고 ν•œλ‹€.

관점에 λ”°λΌμ„œ Xκ°€ Yλ₯Ό ν•¨μˆ˜μ μœΌλ‘œ κ²°μ •ν•œλ‹€. 라고 ν• μˆ˜λ„ 있고 Yκ°€ X에 ν•¨μˆ˜μ μœΌλ‘œ μ˜μ‘΄ν•œλ‹€. λΌκ³  ν‘œν˜„ν•  μˆ˜λ„ μžˆλ‹€.

μ΄λŸ¬ν•œ 관계λ₯Ό ν•¨μˆ˜ 쒅속 ν˜Ήμ€ Funtional Dependency(FD)라고 ν•œλ‹€.

 

예λ₯Ό λ“€μ–΄ μ•„λž˜ ν…Œμ΄λΈ”μ—μ„œλŠ” νšŒμ›μ΄λ¦„κ³Ό ν”„λ‘œκ·Έλž¨μ΄ primary key이며 μ΄λŠ” 가격을 κ²°μ •ν•œλ‹€.

(νšŒμ› λ²ˆν˜Έκ°€ μ’€ 더 μžμ—°μŠ€λŸ½μ§€λ§Œ μ„€λͺ…을 μœ„ν•΄ λ‹€λ₯Έ ν‚€λ₯Ό μ˜ˆμ‹œλ‘œ λ“ λ‹€.)

이 λ‘˜μ„ FD 관계라고 ν•  수 있으며 κΈ°ν˜Έλ‘œλŠ” {νšŒμ›μ΄λ¦„,ν”„λ‘œκ·Έλž¨} -> 가격 으둜 ν‘œμ‹œν•œλ‹€.

νšŒμ›λ²ˆν˜Έ νšŒμ›μ΄λ¦„ ν”„λ‘œκ·Έλž¨ 가격
101 민수 ν…Œλ‹ˆμŠ€ 5000
102 철수 농ꡬ 7000
103 영희 좕ꡬ 4000
103 영희 농ꡬ 7000

 

μ—¬κΈ°μ„œ μ£Όμ˜ν•  점은 FDλ₯Ό νŒŒμ•…ν• λ•ŒλŠ” μŠ€ν‚€λ§ˆμ˜ 의미λ₯Ό 보고 νŒŒμ•…ν•΄μ•Όν•˜λ©° ν…Œμ΄λΈ”μ˜ 데이터듀을 보고 μΆ”λ‘ ν•΄μ„œλŠ” μ•ˆλœλ‹€.

μ™œλƒν•˜λ©΄ νšŒμ› 이름과 가격 데이터가 FD처럼 보인닀고 생각해도 동λͺ…μ΄μΈμ΄λΌλŠ” λ³€μˆ˜κ°€ μžˆμ„ 수 있고 μ—¬λŸ¬ μ˜ˆμ™Έ 상황듀이 있기 λ•Œλ¬Έμ΄λ‹€.

μ΄λ ‡κ²Œ κ΅¬μΆ•ν•˜λ €λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ 속성(μ• νŠΈλ¦¬λ·°νŠΈ)κ°€ κ΄€κ³„μ μœΌλ‘œ μ–΄λ–€ 의미λ₯Ό 지닐지에 λ”°λΌμ„œ FD듀이 달라진닀.

 

λ”°λΌμ„œ 데이터(or state)만 보고 νŒλ‹¨ν•˜κΈ°λ³΄λ‹¨ μŠ€ν‚€λ§ˆλ₯Ό 보고 의미적으둜 μ‘΄μž¬ν•˜λŠ” μ§€ νŒŒμ•…ν•΄μ•Όν•œλ‹€.

 

또 ν•œκ°€μ§€ μ€‘μš”ν•œ 점은 FDλŠ” 역관계가 μ„±λ¦½ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것이닀.

X -> Y 관계라고 ν•΄μ„œ Y->Xκ°€ μ„±λ¦½ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. 예λ₯Ό 듀어보면 ν”„λ‘œκ·Έλž¨μ΄ 가격을 κ²°μ •μ§“λŠ” λ‹€κ³  ν•΄μ„œ 가격이 ν”„λ‘œκ·Έλž¨μ„ κ²°μ •ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€!

{ν”„λ‘œκ·Έλž¨} -> 가격 (O)
{가격} -> ν”„λ‘œκ·Έλž¨ (X)

 

*{}-> Y λŠ” "Y은 μ–Έμ œλ‚˜ ν•˜λ‚˜μ˜ κ°’λ§Œμ„ κ°€μ§„λ‹€"λŠ” μ˜λ―Έμ΄λ‹€.

 

Trivial Funtional Dependcy

X -> Y의 κ΄€κ³„μ—μ„œ Yκ°€ X의 λΆ€λΆ„ 집합이라면 이 관계λ₯Ό Trivial Funtional Dependcy라고 ν•œλ‹€.

예λ₯Ό λ“€μ–΄, {a,b,c} -> {c} 같이 cκ°€ a,b,c의 뢀뢄집합인 κ²½μš°κ°€ μžˆλ‹€. 

λ°˜λŒ€μ˜ κ²½μš°λ‘œλŠ” λ‹Ήμ—°νžˆ non-Trivial Funtional Dependcy (μ•„μ˜ˆ μ•ˆκ²ΉμΉ˜λ©΄ completely-non) 같은 관계가 μžˆλ‹€.

 

Partial Functional Dependency

X->Y의 κ΄€κ³„μ—μ„œ X의 λΆ€λΆ„μ§‘ν•©(전체λ₯Ό μ œμ™Έν•œ)만으둜 Yλ₯Ό 결정지을 수 μžˆλ‹€λ©΄ 이λ₯Ό Partial Functional Dependency라고 ν•œλ‹€.

예λ₯Ό λ“€μ–΄, {a,b,c} -> {c} μ—μ„œ {a} -> {c}κ°€ μ„±λ¦½ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. λ°˜λŒ€μ˜ κ²½μš°λŠ” Full Funtional Dependcyκ°€ μžˆλ‹€.

 

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

데이터 쀑볡과 insertion , update , deletion anomalyλ₯Ό μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ ν•¨μˆ˜μ˜ 쒅속성을 μ΄μš©ν•΄μ„œ relational DBλ₯Ό κ΅¬μ„±ν•˜λŠ” 과정이닀.

 

μ‚½μž…μ΄μƒ : 자료λ₯Ό μ‚½μž…ν•  λ•Œ μ˜λ„μΉ˜ μ•Šμ€ μžλ£ŒκΉŒμ§€ μ‚½μž…ν•΄μ•Όν•œλ‹€. (ex. null)

갱신이상 : μ€‘λ³΅λœ 데이터 쀑 μΌλΆ€λ§Œ μˆ˜μ •λ˜μ–΄ λͺ¨μˆœμ΄ λ°œμƒν•˜λŠ” 것이닀.

μ‚­μ œμ΄μƒ : μ–΄λ–€ 정보λ₯Ό μ‚­μ œν•˜λ©΄ μ˜λ„μΉ˜ μ•Šμ€ λ‹€λ₯Έ μ •λ³΄κΉŒμ§€ μ‚­μ œλœλ‹€.

 

μ •κ·œν™”λ₯Ό μ§„ν–‰ν•˜κ²Œ 되면 데이터 μˆ˜μ • μ‹œμ— μ—¬λŸ¬ 이상 ν˜„μƒλ“€μ„ 쀄일 수 있고, ν™•μž₯에 μš©μ΄ν•˜μ—¬ 데이터 ꡬ쑰가 λ³€κ²½λ˜μ–΄λ„ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ΅œμ†Œν•œμ˜ 영ν–₯λ§Œμ„ λ―ΈμΉœλ‹€.

 

μ •κ·œν˜•μ—λŠ” λͺ‡ λ‹¨κ³„μ˜ nf(normal forms)κ°€ μžˆλŠ”λ° 처음 단계뢀터 순차적으둜 μ§„ν–‰ν•˜λ©° μ•ž 단계λ₯Ό λ§Œμ‘±ν•΄μ•Ό λ‹€μŒ 단계λ₯Ό μ§„ν–‰ν•  수 μžˆλ‹€.

보톡 μ‹€λ¬΄μ—μ„œ 3nfκΉŒμ§€ ν•˜λ©΄ μ •κ·œν™”λ˜μ—ˆλ‹€λΌκ³  λ§ν•œλ‹€.

 

제 1 μ •κ·œν˜•(1NF)

λͺ¨λ“  attribute의 valueλŠ” 더 이상 λ‚˜λˆ μ§ˆ 수 μ—†λŠ” κ°’μ΄μ–΄μ•Όν•œλ‹€. -> μ—¬λŸ¬ 값을 κ°€μ§€κ³  있으면 μ•ˆλœλ‹€.

 

νšŒμ›λ²ˆν˜Έ νšŒμ›μ΄λ¦„ ν”„λ‘œκ·Έλž¨
101 민수 ν…Œλ‹ˆμŠ€
102 철수 농ꡬ
103 영희 좕ꡬ,농ꡬ

(μ˜ˆμ‹œ μ°Έκ³ : μ½”λ”©μ• ν”Œ)

 

μ˜ν¬μ— ν•΄λ‹Ήν•˜λŠ” ν”„λ‘œκ·Έλž¨ 데이터가 두 개λ₯Ό κ°€μ§€κ³  μžˆμœΌλ―€λ‘œ μ΄λŠ” 제 1 μ •κ·œν˜•μ„ μœ„λ°˜ν•œλ‹€.

 

제 2 μ •κ·œν˜•(2NF)

λͺ¨λ“  non-prime attributeλŠ” λͺ¨λ“  key에 λŒ€ν•΄ full funtional dependentν•΄μ•Όν•œλ‹€.
(ν˜„μž¬ ν…Œμ΄λΈ”κ³Ό μƒκ΄€μ—†λŠ” μ»¬λŸΌλ“€μ„ λΆ„λ¦¬ν•œλ‹€.)

 

제 1 μ •κ·œν˜•μ„ μ μš©ν•˜μ˜€μœΌλ©΄ 이제 제 2 μ •κ·œν˜•μ„ μ§„ν–‰ν•  차둀이닀.

ν˜„μž¬ ν…Œμ΄λΈ”μ—μ„œλŠ” νšŒμ› 정보와 ν”„λ‘œκ·Έλž¨ 정보가 ν˜Όμž¬ν•΄μžˆλ‹€. μ΄λŸ° ν…Œμ΄λΈ” κ΅¬μ‘°λŠ” 데이터λ₯Ό λ³€κ²½ν•΄μ•Όν•  μ‹œμ— 맀우 번거둜울 수 μžˆλ‹€.

 

νšŒμ›λ²ˆν˜Έ νšŒμ›μ΄λ¦„ ν”„λ‘œκ·Έλž¨ 가격
101 민수 ν…Œλ‹ˆμŠ€ 5000
102 철수 농ꡬ 7000
103 영희 좕ꡬ 4000
103 영희 농ꡬ 7000

(μ˜ˆμ‹œ μ°Έκ³ : μ½”λ”©μ• ν”Œ)

 

μ˜ˆμ‹œμ—μ„œλŠ” 가격 컬럼이 ν”„λ‘œκ·Έλž¨μ— partial funtional dependentν•˜λ‹€.

{νšŒμ›μ΄λ¦„,ν”„λ‘œκ·Έλž¨} -> 가격

{ν”„λ‘œκ·Έλž¨} -> 가격

primary keyκ°€ νšŒμ›λ²ˆν˜Έ,ν”„λ‘œκ·Έλž¨μ΄μ§€λ§Œ 가격은 ν”„λ‘œκ·Έλž¨ ν•˜λ‚˜λ§ŒμœΌλ‘œ 결정될 수 μžˆλ‹€. -> ν˜„μž¬ ν…Œμ΄λΈ”μ— 상관 μ—†λŠ” 데이터가 λ“€μ–΄κ°„ 것이닀!

이 μƒν™©μ—μ„œ 가격이 변경됨에 되면 μ»¬λŸΌμ„ 일일이 μˆ˜μ •ν•΄μ£Όμ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 맀우 λΉ„νš¨μœ¨μ μ΄λ‹€. λ”°λΌμ„œ λ‹€μŒκ³Ό 같이 뢄리할 수 μžˆλ‹€.

 

ν”„λ‘œκ·Έλž¨ 가격
ν…Œλ‹ˆμŠ€ 5000
농ꡬ 7000
좕ꡬ 4000

 

이제 가격은 ν”„λ‘œκ·Έλž¨μ— full functional dependencyν•˜λ©° ν”„λ‘œκ·Έλž¨ ν…Œμ΄λΈ”μ— μ—°κ΄€μžˆλŠ” μ»¬λŸΌλ“€λ§Œ λ“€μ–΄κ°€ μžˆλ‹€.

λ§Œμ•½ 가격이 μˆ˜μ •λœλ‹€κ³  ν•˜λ”λΌλ„ 이 ν…Œμ΄λΈ”μ˜ κ°’λ§Œ μˆ˜μ •ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 효율적이라고 ν•  수 μžˆλ‹€.

 

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

λͺ¨λ“  non-prime attribute(ν‚€λ₯Ό μ œμ™Έν•œ)λŠ” μ–΄λ–€ key에도 transitive FD(이행적 ν•¨μˆ˜ 쒅속) ν•˜λ©΄ μ•ˆλœλ‹€.

 

transitive FD(이행적 ν•¨μˆ˜ 쒅속) μ΄λž€, X -> Y 이고 Y -> Z이면 X -> Z 인 κ²½μš°μ΄λ‹€.

ν”„λ‘œκ·Έλž¨ 가격 강사 μ „ν™”λ²ˆν˜Έ
ν…Œλ‹ˆμŠ€ 5000 ν•œμ„μ› 010-xxxx
농ꡬ 7000 μ΄μ§€μ˜ 010-xxxx
좕ꡬ 4000 이λͺ…ν•™ 010-xxxx

 

이 κ²½μš°μ—λŠ” ν”„λ‘œκ·Έλž¨μ„ 톡해 강사가 κ²°μ •λ˜λŠ”λ° λ™μ‹œμ— 강사가 μ „ν™”λ²ˆν˜Έ λ˜ν•œ κ²°μ •ν•  수 μžˆλ‹€.

ν”„λ‘œκ·Έλž¨ -> 강사 

강사  -> μ „ν™”λ²ˆν˜Έ

=> ν”„λ‘œκ·Έλž¨ -> μ „ν™”λ²ˆν˜Έ 같은 이행적 ν•¨μˆ˜ 쒅속이 λ°œμƒν•œλ‹€.

λ‹€μŒκ³Ό 같은 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 강사가 μ—¬λŸ¬ 개의 κ³Όλͺ©μ„ λ‹΄λ‹Ήν•œλ‹€κ³  κ°€μ •ν•˜μ˜€μ„ λ•Œ μ€‘λ³΅λœ κ°•μ‚¬λŠ” μ—¬λŸ¬ 개일 것이닀.

ν”„λ‘œκ·Έλž¨ 가격 강사 μ „ν™”λ²ˆν˜Έ
ν…Œλ‹ˆμŠ€ 5000 ν•œμ„μ› 010-xxxx
ν…Œλ‹ˆμŠ€ μž…λ¬Έ 3000 ν•œμ„μ› 010-xxxx
농ꡬ 7000 μ΄μ§€μ˜ 010-xxxx
좕ꡬ 4000 이λͺ…ν•™ 010-xxxx

 

κ·Έλ ‡λ‹€λ©΄ λ§Œμ•½ ν•΄λ‹Ή 강사가 μ „ν™”λ²ˆν˜Έλ₯Ό λ³€κ²½ν•˜μ˜€μ„ 경우 일일이 λ³€κ²½ν•΄μ£Όμ–΄μ•Ό ν•˜λ©° μ΄λŠ” κ°±μ‹  이상이 λ°œμƒν•  수 μžˆλ‹€.

λ”°λΌμ„œ λ‹€μŒκ³Ό 같이 ν•΄λ‹Ή μ»¬λŸΌμ„ λΆ„λ¦¬ν•΄μ€ŒμœΌλ‘œμ¨ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€.

강사 μ „ν™”λ²ˆν˜Έ
ν•œμ„μ› 010-xxxx
μ΄μ§€μ˜ 010-xxxx
이λͺ…ν•™ 010-xxxx

 

보톡 μ—¬κΈ°κΉŒμ§€ 였면 μ •κ·œν™” λ˜μ—ˆλ‹€κ³  말할 수 μžˆμ§€λ§Œ BCNFκΉŒμ§€λ§Œ 더 μ•Œμ•„λ³΄λ €κ³  ν•œλ‹€.

 

BCNF

λͺ¨λ“  μœ νš¨ν•œ non-trivial FD X -> Y λŠ” Xκ°€ μŠˆνΌν‚€μ—¬μ•Όν•œλ‹€.

 

λ§Œμ•½ ν…Œμ΄λΈ”μ— κ°•μ˜μ‹€ μ •λ³΄κΉŒμ§€ μΆ”κ°€λ˜μ—ˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž 

ν”„λ‘œκ·Έλž¨ 가격 강사 κ°•μ˜μ‹€
ν…Œλ‹ˆμŠ€ 5000 ν•œμ„μ› 207호
ν…Œλ‹ˆμŠ€ μž…λ¬Έ 3000 ν•œμ„μ› 207호
농ꡬ 7000 μ΄μ§€μ˜ 211호
좕ꡬ 4000 이λͺ…ν•™ 213호

 

이제 κ°•μ˜μ‹€μ„ 톡해 ν•΄λ‹Ή κ°•μ‚¬μ˜ 정보λ₯Ό μ•Œ 수 μžˆλ‹€. ν•˜μ§€λ§Œ ꡳ이 μ€‘λ³΅λœ κ°•μ‚¬μ˜ 데이터듀을 κ°€μ§€κ³  μžˆμ–΄μ•Όν• κΉŒ? λΌλŠ” 의문이 λ“œλŠ”λ° 이와 κ΄€λ ¨λœ κ°œλ…μ΄ BCNF이닀.

 

ν…Œμ΄λΈ”μ„ 보면 κ°•μ˜μ‹€μ„ 톡해 ν˜„μž¬ μ–΄λ–€ 강사가 λ°°μ •λ˜μ—ˆλŠ” μ§€ μ•Œ 수 μžˆμœΌλ―€λ‘œ κ°•μ˜μ‹€ -> κ°•μ‚¬λŠ” non-trivial FD 라고 ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ κ°•μ˜μ‹€μ€ μŠˆνΌν‚€κ°€ μ•„λ‹ˆλ―€λ‘œ BCNFλ₯Ό μœ„λ°˜ν•œλ‹€.

κ°•μ˜μ‹€ 강사
207호 ν•œμ„μ›
2011호 μ΄μ§€μ˜
213호 이λͺ…ν•™

 

ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•œ κ²°κ³Ό κ°•μ˜μ‹€μ€ μŠˆνΌν‚€κ°€ λ˜μ—ˆκ³  더 이상 μ›λž˜ ν…Œμ΄λΈ”μ— μ€‘λ³΅λœ 강사 데이터λ₯Ό λ„£μ§€ μ•Šμ•„λ„ λœλ‹€.

μ΄λ ‡κ²Œ 해두면 BCNFλ₯Ό μ§€ν‚€λ©΄μ„œ μ€‘λ³΅λœ 데이터듀을 μ΅œμ†Œν™” ν•  수 μžˆλ‹€.

 

 

+ Recent posts