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

πŸͺ CS

ERD와 μ •κ·œν™” κ³Όμ •

ERD (Entity Relationship Diagram)


λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ꡬ좕할 λ•Œ κ°€μž₯ 기초적인 λΌˆλŒ€ 역할을 ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ 관계듀을 μ •μ˜ν•œ 것이닀.

1. ERD의 μ€‘μš”μ„±


ERDλŠ” μ‹œμŠ€ν…œμ˜ μš”κ΅¬ 사항을 기반으둜 μž‘μ„±λœλ‹€. 이λ₯Ό 기반으둜 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μΆ•ν•œλ‹€. κ΅¬μΆ•ν•œ 이후에도 디버깅 λ˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€ μž¬μ„€κ³„κ°€ ν•„μš”ν•œ κ²½μš°μ—λ„ 섀계도 역할을 λ‹΄λ‹Ήν•œλ‹€.
ERDλŠ” κ΄€κ³„ν˜• ꡬ쑰둜 ν‘œν˜„ν•  수 μžˆλŠ” 데이터λ₯Ό κ΅¬μ„±ν•˜λŠ” 데 μœ μš©ν•  수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ λΉ„μ •ν˜• 데이터λ₯Ό μΆ©λΆ„νžˆ ν‘œν˜„ν•  수 μ—†λ‹€λŠ” 단점이 μžˆλ‹€.

  • λΉ„μ •ν˜• 데이터 : 비ꡬ쑰화 데이터
    • 미리 μ •μ˜λœ 데이터 λͺ¨λΈμ΄ μ—†κ±°λ‚˜, 미리 μ •μ˜λœ λ°©μ‹μœΌλ‘œ μ •λ¦¬λ˜μ§€ μ•Šμ€ 정보

2. μ •κ·œν™” κ³Όμ •


λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ 잘λͺ»λœ 쒅속 κ΄€κ³„λ‘œ 인해 λ°μ΄ν„°λ² μ΄μŠ€ 이상 ν˜„μƒμ΄ μΌμ–΄λ‚˜μ„œ 이λ₯Ό ν•΄κ²°ν•˜κ±°λ‚˜, μ €μž₯ 곡간을 효율적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ¦΄λ ˆμ΄μ…˜μ„ μ—¬λŸ¬ 개둜 λΆ„λ¦¬ν•˜λŠ” κ³Όμ •

  • μ •κ·œν˜• 원칙을 기반으둜 μ •κ·œν˜•μ„ λ§Œλ“€μ–΄κ°€λŠ” κ³Όμ •
  • μ •κ·œν™”λœ μ •λ³΄λŠ” μ •κ·œν˜•(NF, Normal Form)으둜 ν‘œν˜„

μ’…λ₯˜

  • κΈ°λ³Έ μ •κ·œν˜• : 제1μ •κ·œν˜•, 제2μ •κ·œν˜•,제3μ •κ·œν˜•, 보이슀/μ½”λ“œ μ •κ·œν˜•
  • κ³ κΈ‰ μ •κ·œν˜• : 제4μ •κ·œν˜•, 제5μ •κ·œν˜•

λ°μ΄ν„°λ² μ΄μŠ€ 이상 ν˜„μƒ

: νšŒμ›μ΄ ν•œ 개의 등급을 κ°€μ Έμ•Ό ν•˜λŠ”λ° μ„Έ 개의 등급을 κ°–κ±°λ‚˜ μ‚­μ œν•  λ•Œ ν•„μš”ν•œ 데이터가 같이 μ‚­μ œλ˜κ³ , 데이터λ₯Ό μ‚½μž…ν•΄μ•Ό ν•˜λŠ”λ° ν•˜λ‚˜μ˜ ν•„λ“œ 값이 NULL이 되면 μ•ˆ λ˜μ–΄μ„œ μ‚½μž…ν•˜κΈ° μ–΄λ €μš΄ ν˜„μƒ

μ •κ·œν˜• 원칙

  • 같은 의미λ₯Ό ν‘œν˜„ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ΄μ§€λ§Œ μ’€ 더 쒋은 ꡬ쑰둜 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.
  • 자료의 쀑볡성은 κ°μ†Œν•΄μ•Ό ν•œλ‹€.
  • 독립적인 κ΄€κ³„λŠ” λ³„κ°œμ˜ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ ν‘œν˜„ν•΄μ•Ό ν•œλ‹€.
  • 각각의 λ¦΄λ ˆμ΄μ…˜μ€ 독립적인 ν‘œν˜„μ΄ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

제1μ •κ·œν˜•

λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  도메인이 더 이상 뢄해될 수 μ—†λŠ” μ›μž κ°’(atomic value)만으둜 κ΅¬μ„±λ˜μ–΄μ•Ό ν•œλ‹€.
λ¦΄λ ˆμ΄μ…˜μ˜ 속성 κ°’ μ€‘μ—μ„œ ν•œ 개의 기본킀에 λŒ€ν•΄ 두 개 μ΄μƒμ˜ 값을 κ°€μ§€λŠ” 반볡 집합이 μžˆμ–΄μ„œλŠ” μ•ˆ λœλ‹€.
λ§Œμ•½μ— 반볡 집합이 μžˆλ‹€λ©΄ μ œκ±°ν•΄μ•Ό ν•œλ‹€.

제2μ •κ·œν˜•

λ¦΄λ ˆμ΄μ…˜μ΄ 제1μ •κ·œν˜•μ΄λ©°, λΆ€λΆ„ ν•¨μˆ˜μ˜ 쒅속성을 μ œκ±°ν•œ ν˜•νƒœ
λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•  λ•Œ λ™λ“±ν•œ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€.
정보 손싀이 λ°œμƒν•˜μ§€ μ•ŠλŠ” 무손싀 λΆ„ν•΄λ‘œ λΆ„ν•΄λ˜μ–΄μ•Ό ν•œλ‹€.

λΆ€λΆ„ ν•¨μˆ˜μ˜ 쒅속성 제거
: κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속적인 것

제3μ •κ·œν˜•

제2μ •κ·œν˜•μ΄κ³  κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  속성이 이행적 ν•¨μˆ˜ 쒅속을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” μƒνƒœ

이행적 ν•¨μˆ˜ 쒅속 (transitive FD)
: A -> B와 B -> Cκ°€ μ‘΄μž¬ν•˜λ©΄ λ…Όλ¦¬μ μœΌλ‘œ A -> Cκ°€ μ„±λ¦½ν•˜λŠ”λ°, μ΄λ•Œ μ§‘ν•© Cκ°€ μ§‘ν•© A에 μ΄ν–‰μ μœΌλ‘œ ν•¨μˆ˜ 쒅속이 λ˜μ—ˆλ‹€κ³  ν•œλ‹€.

보이슀/μ½”λ“œ μ •κ·œν˜•(BCNF)

제3μ •κ·œν˜•μ΄κ³ , κ²°μ •μžκ°€ 후보킀가 μ•„λ‹Œ ν•¨μˆ˜ 쒅속 관계λ₯Ό μ œκ±°ν•˜μ—¬ λ¦΄λ ˆμ΄μ…˜μ˜ ν•¨μˆ˜ 쒅속 κ΄€κ³„μ—μ„œ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀인 μƒνƒœ

κ²°μ •μž
: ν•¨μˆ˜ 쒅속 κ΄€κ³„μ—μ„œ νŠΉμ • μ’…μ†μž(dependent)λ₯Ό κ²°μ •μ§“λŠ” μš”μ†Œ
'X->Y'일 λ•Œ XλŠ” κ²°μ •μž, YλŠ” μ’…μ†μž

  • μ •κ·œν˜• 과정을 거쳐 ν…Œμ΄λΈ”μ„ λ‚˜λˆˆλ‹€ ν•΄μ„œ μ„±λŠ₯이 100% μ’‹μ•„μ§€λŠ” 것은 μ•„λ‹ˆλ‹€. μ„±λŠ₯이 μ’‹μ•„μ§ˆ μˆ˜λ„ λ‚˜λΉ μ§ˆ μˆ˜λ„ μžˆλ‹€. ν…Œμ΄λΈ”μ„ λ‚˜λˆ„κ²Œ 되면 μ–΄λ– ν•œ μΏΌλ¦¬λŠ” 쑰인을 ν•΄μ•Ό ν•˜λŠ” κ²½μš°λ„ λ°œμƒν•΄μ„œ 였히렀 느렀질 μˆ˜λ„ 있기 λ•Œλ¬Έμ— μ„œλΉ„μŠ€μ— 따라 μ •κ·œν™” λ˜λŠ” λΉ„μ •κ·œν™” 과정을 μ§„ν–‰ν•΄μ•Ό ν•œλ‹€.