Computer Science/πŸ’Ύ Database

[DB] λ°μ΄ν„°λ² μ΄μŠ€ 기초 μš©μ–΄, ν‚€(Key)의 κ°œλ…κ³Ό μ’…λ₯˜

J1Yun 2023. 3. 23. 16:05
728x90

λ°μ΄ν„°λ² μ΄μŠ€ κΈ°μ΄ˆ μš©μ–΄

  • λ¦΄λ ˆμ΄μ…˜(Relation)
    • κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ—μ„œ ν•˜λ‚˜μ˜ κ°œμ²΄μ— κ΄€ν•œ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ ꡬ쑰 (= ν…Œμ΄λΈ”)
    • μŠ€ν‚€λ§ˆμ™€ μΈμŠ€ν„΄μŠ€λ‘œ 이루어짐
  • μŠ€ν‚€λ§ˆ(Schema)
    • λ¦΄λ ˆμ΄μ…˜μ˜ 이름, 각 μ†μ„±μ˜ 이름, νƒ€μž…, 도메인 등을 μ •μ˜ν•˜λŠ” κ°œλ…
  • μΈμŠ€ν„΄μŠ€(Instance)
    • λ¦΄λ ˆμ΄μ…˜μ— μ €μž₯λ˜λŠ” 데이터(νŠœν”Œ)의 집합
  • 속성(Attribute)
    • λ¦΄λ ˆμ΄μ…˜μ˜ μ—΄(Column)
    • μ„œλ‘œ λ‹€λ₯Έ 이름을 κ°€μ Έμ•Ό 함
  • νŠœν”Œ(Tuple) / λ ˆμ½”λ“œ(Record)
    • λ¦΄λ ˆμ΄μ…˜μ˜ ν–‰(Row)
    • 쀑볡 λΆˆκ°€
  • 차수(Degree)
    • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ†μ„±μ˜ 전체 개수
  • 카디널리티(Cardinality)
    • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ νŠœν”Œμ˜ 전체 개수
  • 도메인(Domain)
    • λ¦΄λ ˆμ΄μ…˜μ˜ 속성이 κ°€μ§ˆ 수 μžˆλŠ” μ›μžκ°’λ“€μ˜ 집합

 

 

ν‚€(Key)

  • λ¦΄λ ˆμ΄μ…˜μ˜ νŠœν”Œμ„ 식별할 수 μžˆλŠ” 단일 속성 ν˜Ήμ€ μ†μ„±λ“€μ˜ 집합
  • μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ— 따라 ν‚€μ˜ μ’…λ₯˜κ°€ 달라짐

μœ μΌμ„±

  • ν•˜λ‚˜μ˜ ν‚€κ°’μœΌλ‘œ νŠœν”Œμ„ μœ μΌν•˜κ²Œ 식별할 수 μžˆλŠ” μ„±μ§ˆ
  • ν˜ˆμ•‘ν˜•, λ‚˜μ΄ (X) | 주민번호, ν•™λ²ˆ (0)

μ΅œμ†Œμ„±

  • ν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성듀 쀑 κ°€μž₯ μ΅œμ†Œλ‘œ ν•„μš”ν•œ μ†μ„±λ“€λ‘œλ§Œ ν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” μ„±μ§ˆ
  • ν‚€λ₯Ό κ΅¬μ„±ν•˜κ³  μžˆλŠ” 속성듀이 각 νŠœν”Œμ„ κ΅¬λΆ„ν•˜λŠ” 데 κΌ­ ν•„μš”ν•œ μ†μ„±λ“€λ‘œλ§Œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”μ§€ 확인
  • [주민번호+λ‚˜μ΄] (X) | [주민번호] (X)
    • λ‚˜μ΄λ₯Ό ν‚€λ‘œ μ„€μ •ν•˜μ§€ μ•Šμ•„λ„ 주민번호 λ§ŒμœΌλ‘œλ„ μœ μΌμ„±μ„ λ§Œμ‘±ν•¨

 

ν‚€ μ’…λ₯˜

슈퍼 ν‚€(Super Key)

  • μŠˆνΌν‚€λŠ” μœ μΌμ„±μ˜ νŠΉμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
  • μ–΄λ–€ 속성을 κ²°ν•©ν•˜λ“  νŠœν”Œμ„ 식별할 수 있으며 쀑볡 νŠœλΈ”μ΄ λ°œμƒν•  수 μ—†λŠ” 경우
  • μ΅œμ†Œμ„±μ€ λ§Œμ‘±ν•˜μ§€ μ•Šμ•„λ„ 됨
  • Ex) [ν•™λ²ˆ], [주민번호], [ν•™λ²ˆ+이름], [주민번호+λ‚˜μ΄] λ“±

 

후보킀(Candidate Key)

  • μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λͺ¨λ‘ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
  • μ΅œμ†Œμ˜ 속성을 κ²°ν•©ν•˜μ—¬ νŠœν”Œμ„ 식별할 수 μžˆμ–΄μ•Ό 함
  • Ex) [ν•™λ²ˆ], [주민번호]

 

κΈ°λ³Έ ν‚€(Primary Key)

  • μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±ν•˜λŠ” 후보 ν‚€ 쀑 λ‹€μŒμ„ κ³ λ €ν•˜μ—¬ ν•˜λ‚˜λ₯Ό μ„ νƒν•œ ν‚€
    • NULL 값을 κ°€μ§ˆ 수 μ—†λŠ” 속성이 ν¬ν•¨λœ 후보 ν‚€
    • 값이 자주 변경될 수 μ—†λŠ” 속성이 ν¬ν•¨λœ 후보 ν‚€
    • λ‹¨μˆœν•œ 후보 ν‚€
  • Ex) [ν•™λ²ˆ]

 

λŒ€μ²΄ ν‚€(Alternate Key)

  • 후보 ν‚€κ°€ λ‘κ°œ 이상일 경우 ν‚€λ³Έν‚€λ‘œ ν•˜λ‚˜λ₯Ό μ§€μ •ν•˜κ³  남은 후보 ν‚€ 집합
  • 보쑰 킀라고도 함
  • Ex) [주민번호]

 

μ™Έλž˜ ν‚€(Foreign Key)

  • λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έ ν‚€λ₯Ό κ·ΈλŒ€λ‘œ μ°Έμ‘°ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
  • λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ 관계λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©
  • μ™Έλž˜ ν‚€μ—λŠ” μ°Έμ‘° ν…Œμ΄λΈ”μ˜ κΈ°λ³Έ 킀에 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 값을 μ°Έμ‘°ν•  수 μ—†μŒ. (μ°Έμ‘° 무결성 쑰건)
    • 데이터 μΆ”κ°€/μ‚­μ œ μ‹œ 항상 μ™Έλž˜ ν‚€κ°€ μ°Έμ‘°ν•œ 값은 μ°Έμ‘° ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜λ„λ‘ κ³ λ €ν•΄μ•Ό 함
  • Ex) μ™Έλž˜ ν‚€: μ£Όλ¬Έ ν…Œμ΄λΈ”μ˜ '주문고객' 속성 | μ°Έμ‘° ν‚€: 고객 ν…Œμ΄λΈ”μ˜ '고객ID'

 

 

⭐️ 참고

728x90