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

DB

5μž₯ 관계 데이터 λͺ¨λΈ

reference: λ°μ΄ν„°λ² μ΄μŠ€ 개둠 2판


01. 관계 데이터 λͺ¨λΈμ˜ κ°œλ…

κ°œλ…μ  ꡬ쑰λ₯Ό 논리적 ꡬ쑰둜 ν‘œν˜„ν•˜λŠ” 논리적 데이터 λͺ¨λΈ

ν•˜λ‚˜μ˜ κ°œμ²΄μ— λŒ€ν•œ 데이터λ₯Ό ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ— μ €μž₯

01-1. 관계 데이터 λͺ¨λΈμ˜ κΈ°λ³Έ μš©μ–΄

  • λ¦΄λ ˆμ΄μ…˜(relation)
    • ν•˜λ‚˜μ˜ κ°œμ²΄μ— κ΄€ν•œ λ°μ΄ν„°λ₯Ό 2차원 ν…Œμ΄λΈ”μ˜ ꡬ쑰둜 μ €μž₯ν•œ 것
    • 파일 관리 μ‹œμŠ€ν…œ κ΄€μ μ—μ„œ ν•˜λ‚˜μ˜ 파일(file)에 λŒ€μ‘
  • 속성(attribute)
    • λ¦΄λ ˆμ΄μ…˜μ˜ μ—΄, μ• νŠΈλ¦¬λ·°νŠΈ
    • 파일 관리 μ‹œμŠ€ν…œ κ΄€μ μ—μ„œ **ν•„λ“œ(field)**에 λŒ€μ‘
  • νˆ¬ν”Œ(tuple)
    • λ¦΄λ ˆμ΄μ…˜μ˜ ν–‰
    • 파일 관리 μ‹œμŠ€ν…œ κ΄€μ μ—μ„œ **λ ˆμ½”λ“œ(record)**에 λŒ€μ‘
  • 도메인(domain)
    • ν•˜λ‚˜μ˜ 속성이 κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  (μ›μž) κ°’μ˜ 집합 (닀쀑 κ°’ 속성 X)
    • 속성 값을 μž…λ ₯ λ° μˆ˜μ •ν•  λ•Œ μ ν•©μ„± νŒλ‹¨μ˜ 기쀀이 됨 (μž…λ ₯ μ œμ•½)
    • 일반적으둜 μ†μ„±μ˜ νŠΉμ„±μ„ κ³ λ €ν•œ λ°μ΄ν„° νƒ€μž…μœΌλ‘œ μ •μ˜
    • λ‚΄κ°€ 직접 μ •μ˜ν•  수 μžˆλ‹€. ex) grade = {vip, gold, silver, bronze}
  • 널(null)
    • 속성 값을 아직 λͺ¨λ₯΄κ±°λ‚˜ ν•΄λ‹Ήλ˜λŠ” 값이 μ—†μŒμ„ ν‘œν˜„
    • DBλ§ˆλ‹€ ν‘œν˜„λ²•μ΄ 닀름
    • 곡백, 0κ³ΌλŠ” λ‹€λ₯Έ 의미
  • 차수(degree)
    • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ†μ„±μ˜ 전체 개수
    • 정적인 νŠΉμ§•
  • 카디널리티(cardicality)
    • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œμ˜ 전체 개수
    • 동적인 νŠΉμ§•

01-2. λ¦΄λ ˆμ΄μ…˜μ˜ ꡬ성

  • λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ(relation schema)
    • λ¦΄λ ˆμ΄μ…˜μ˜ 논리적 ꡬ쑰
    • λ¦΄λ ˆμ΄μ…˜μ˜ 이름과 λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λœ λͺ¨λ“  속성 μ΄λ¦„μœΌλ‘œ μ •μ˜
    • 예) 고객(고객아이디, 고객이름, λ‚˜μ΄, λ“±κΈ‰, 직업, 적립금)
    • λ¦΄λ ˆμ΄μ…˜ 내포(relation intension)라고도 함
    • DD(definite)L둜 싀행됨.
    • 정적인 νŠΉμ§•μ΄ 있음
  • λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€(relation instance)
    • μ–΄λŠ ν•œ μ‹œμ μ— λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” νˆ¬ν”Œλ“€μ˜ 집합
    • λ¦΄λ ˆμ΄μ…˜ μ™Έμ—°(relation extension)이라고도 함
    • DM(manipulate)L둜 싀행됨.
    • 동적인 νŠΉμ§•μ΄ 있음

01-3. λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ성

  • λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ(database schema)
    • λ°μ΄ν„°λ² μ΄μŠ€μ˜ 전체 ꡬ쑰
    • λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆμ˜ λͺ¨μŒ
  • λ°μ΄ν„°λ² μ΄μŠ€ μΈμŠ€ν„΄μŠ€(database instance)
    • λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€μ˜ λͺ¨μŒ

01-4. λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±

βœ“ μˆ˜ν•™μ˜ 집합과 μ•„μ£Ό λΉ„μŠ·ν•˜λ‹€.

  • νˆ¬ν”Œμ˜ μœ μΌμ„±: ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—λŠ” λ™μΌν•œ νˆ¬ν”Œμ΄ μ‘΄μž¬ν•  수 μ—†λ‹€. key 속성을 톡해 κ΅¬λ³„ν•œλ‹€.
  • νˆ¬ν”Œμ˜ λ¬΄μˆœμ„œ: ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œ μ‚¬μ΄μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€. κ·Έλƒ₯ insert 된 μˆœμ„œλ‘œ 보일 뿐이닀.
  • μ†μ„±μ˜ λ¬΄μˆœμ„œ: ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ†μ„± μ‚¬μ΄μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€. 속성 값에 μ ‘κ·Όν•  λ•Œ μ†μ„œμœΌμ΄ μœ„μΉ˜λ‘œ μ ‘κ·Όν•˜μ§€ μ•Šκ³  μ†μ„±μ˜ μ΄λ¦„μœΌλ‘œ μ ‘κ·Όν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
  • μ†μ„±μ˜ μ›μžμ„±: 속성 κ°’μœΌλ‘œ μ›μž κ°’λ§Œ μ‚¬μš©ν•  수 μžˆλ‹€.
    • 더 λΆ„ν•΄ν•  수 μ—†μŒ
    • 닀쀑값을 μ‚¬μš©ν•  수 μ—†μŒ.

01-5. ν‚€

λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œλ“€μ„ μœ μΌν•˜κ²Œ κ΅¬λ³„ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합

  • ν‚€μ˜ νŠΉμ„±
    • μœ μΌμ„±(uniqueness): ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ λͺ¨λ“  νˆ¬ν”Œμ€ μ„œλ‘œ λ‹€λ₯Έ ν‚€ 값을 κ°€μ Έμ•Ό 함
    • μ΅œμ†Œμ„±(minimality): κΌ­ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ μ†μ„±λ“€λ‘œλ§Œ ν‚€λ₯Ό ꡬ성
  • ν‚€μ˜ μ’…λ₯˜
    • μŠˆνΌν‚€(super key)
      • μœ μΌμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
      • 예) 고객 λ¦΄λ ˆμ΄μ…˜μ˜ μŠˆνΌν‚€ : 고객아이디, (고객아이디, 고객이름), (고객이름, μ£Όμ†Œ) λ“±
    • 후보킀(candidate key)
      • μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
      • 예) 고객 λ¦΄λ ˆμ΄μ…˜μ˜ 후보킀 : 고객아이디, (고객이름, μ£Όμ†Œ) λ“±
    • κΈ°λ³Έν‚€(primary key)
      • 후보킀 μ€‘μ—μ„œ 기본적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ„ νƒν•œ ν‚€
      • 예) 고객 λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€ : 고객아이디
    • λŒ€μ²΄ν‚€(alternate key)
      • κΈ°λ³Έν‚€λ‘œ μ„ νƒλ˜μ§€ λͺ»ν•œ 후보킀
      • 예) 고객 λ¦΄λ ˆμ΄μ…˜μ˜ λŒ€μ²΄ν‚€ : (고객이름, μ£Όμ†Œ)
    • μ™Έλž˜ν‚€(foreign key)
      • λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€(λŒ€μ²΄ν‚€)λ₯Ό μ°Έμ‘°ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
      • λ¦΄λ ˆμ΄μ…˜λ“€ κ°„μ˜ 관계λ₯Ό ν‘œν˜„
        • μ°Έμ‘°ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ : μ™Έλž˜ν‚€λ₯Ό 가진 λ¦΄λ ˆμ΄μ…˜
        • μ°Έμ‘°λ˜λŠ” λ¦΄λ ˆμ΄μ…˜ : μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜λŠ” κΈ°λ³Έν‚€λ₯Ό 가진 λ¦΄λ ˆμ΄μ…˜
      • μ™Έλž˜ν‚€ 속성과 그것이 μ°Έμ‘°ν•˜λŠ” κΈ°λ³Έν‚€ μ†μ„±μ˜ 이름은 달라도 λ˜μ§€λ§Œ 도메인은 κ°™μ•„μ•Ό ν•œλ‹€.
      • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—λŠ” μ™Έλž˜ν‚€κ°€ μ—¬λŸ¬ 개 μ‘΄μž¬ν•  μˆ˜λ„ 있고 μ™Έλž˜ν‚€λ₯Ό κΈ°λ³Έν‚€λ‘œ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. λ˜ν•œ μ™Έλž˜ν‚€λ₯Ό ν¬ν•¨ν•˜μ—¬ κΈ°λ³Έν‚€λ₯Ό ꡬ성할 μˆ˜λ„ μžˆλ‹€.
      • 같은 λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” μ™Έλž˜ν‚€λ„ μ •μ˜ν•  수 μžˆλ‹€. (μˆœν™˜ 관계)
      • μ™Έλž˜ν‚€ 속성은 널 값을 κ°€μ§ˆ μˆ˜λ„ μžˆλ‹€.

정리


02. 관계 데이터 λͺ¨λΈμ˜ μ œμ•½

무결성 μ œμ•½μ‘°κ±΄(integrity constraint)

  • λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜κ³  μΌκ΄€λœ μƒνƒœλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•œ κ·œμΉ™
  • 무결성: 데이터λ₯Ό 결함이 μ—†λŠ” μƒνƒœ, 즉 μ •ν™•ν•˜κ³  μœ νš¨ν•˜κ²Œ μœ μ§€ν•˜λŠ” 것

  • 개체 무결성 μ œμ•½μ‘°κ±΄(entity integrity constraint)
    • κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  속성은 λ„ 값을 κ°€μ§ˆ 수 μ—†λŠ” κ·œμΉ™
    • DBMSλŠ” κΈ°λ³Έν‚€ 지정을 ν•œ 속성에 널 값을 λ„£μœΌλ € ν•˜λ©΄ μ—λŸ¬κ°€ λ‚œλ‹€.
  • μ°Έμ‘° 무결성 μ œμ•½μ‘°κ±΄(referential integrity constraint)
    • μ™Έλž˜ν‚€λŠ” μ°Έμ‘°ν•  수 μ—†λŠ” 값을 κ°€μ§ˆ 수 μ—†λŠ” κ·œμΉ™
    • ex)고객 λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 고객이 주문함 γ…‘> DBMSκ°€ μ°Έμ‘°λ₯Ό λ§‰μŒ
    •  
    • ν•˜μ§€λ§Œ μ™Έλž˜ν‚€ 속성이 null 값을 가진닀고 ν•΄μ„œ μ°Έμ‘° 무결성 μ œμ•½μ‘°κ±΄μ„ μœ„λ°˜ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. 고개 λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 고객이 μ£Όλ¬Έν–ˆλ‹€κ³  νŒλ‹¨ν•˜κΈ°μ—” 어렀움이 μžˆλ‹€. κ·Έμ € 속성 값이 λˆ„κ΅°μ§€ λͺ¨λ₯Ό 뿐이닀.