DB(Database)/Basic Concept

[DB] 관계 데이터 λͺ¨λΈ

탱저 2021. 4. 25. 02:27

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

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

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

  • κ°œλ…μ  ꡬ쑰λ₯Ό 논리적 ꡬ쑰둜 ν‘œν˜„ν•˜λŠ” λ…Όλ¦¬μ  데이터 λͺ¨λΈ
  • ν•˜λ‚˜μ˜ κ°œμ²΄μ— λŒ€ν•œ 데이터λ₯Ό ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ— μ €μž₯
  • (관계 데이터 λͺ¨λΈμ€ 닀쀑 κ°’ 속성 κ°€μ§ˆ 수 μ—†λ‹€.)

고객 λ¦΄λ ˆμ΄μ…˜μ˜ μ°¨μˆ˜λŠ” 6, μΉ΄λ””λ„λ¦¬ν‹°λŠ” 4



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

  • λ¦΄λ ˆμ΄μ…˜(relation)
    • 2차원 ν…Œμ΄λΈ” ꡬ쑰둜 μ €μž₯ν•œ 것
    • 파일 관리 μ‹œμŠ€ν…œ κ΄€μ μ—μ„œ 파일(file)에 λŒ€μ‘
  • 속성(attribute)
    • λ¦΄λ ˆμ΄μ…˜μ˜ μ—΄ = μ• νŠΈλ¦¬λ·°νŠΈ
    • 파일 관리 μ‹œμŠ€ν…œ κ΄€μ μ—μ„œ ν•„λ“œ(field)에 λŒ€μ‘
  • νˆ¬ν”Œ(tuple)
    • λ¦΄λ ˆμ΄μ…˜μ˜ ν–‰
    • 파일 관리 μ‹œμŠ€ν…œ κ΄€μ μ—μ„œ λ ˆμ½”λ“œ(record)에 λŒ€μ‘
  • 도메인(domain)
    • ν•˜λ‚˜μ˜ 속성이 κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  κ°’μ˜ 집합
    • 속성 값을 μž…λ ₯ 및 μˆ˜μ •ν•  λ•Œ 적합성 νŒλ‹¨μ˜ κΈ°μ€€
    • μ†μ„±μ˜ νŠΉμ„±μ„ κ³ λ €ν•œ μ •μˆ˜, 문자 λ“±μ˜ λ°μ΄ν„° νƒ€μž…μœΌλ‘œ μ •μ˜
  • 널(null)
    • 속성 κ°’ 아직 λͺ¨λ₯΄κ±°λ‚˜ ν•΄λ‹Ήλ˜λŠ” κ°’ μ—†μŒ
  • 차수(degree)
    • 1개의 λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ†μ„±μ˜ 전체 개수 = μ—΄μ˜ 개수
  • 카디널리티(cardinality)
    • 1개의 λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œμ˜ 전체 개수 = ν–‰μ˜ 개수

 

λ¦΄λ ˆμ΄μ…˜μ˜ ꡬ성

  • λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ(보톡 DDL으둜 μž‘μ„± 및 μ‹€ν–‰)
    • λ¦΄λ ˆμ΄μ…˜μ˜ 논리적 ꡬ쑰
    • λ¦΄λ ˆμ΄μ…˜μ˜ 이름과 λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λœ λͺ¨λ“  속성 μ΄λ¦„μœΌλ‘œ μ •μ˜
    • = λ¦΄λ ˆμ΄μ…˜ 내포(relation intension)
    • 정적인 νŠΉμ§•μ΄ 있음 => ν•œ 번 μ •μ˜λ˜λ©΄ κ°’ 잘 λ³€ν•˜μ§€ μ•ŠμŒ.
  • λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€(보톡 DML으둜 μž‘μ„± 및 μ‹€ν–‰)
    • μ–΄λŠ ν•œ μ‹œμ μ— λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” νˆ¬ν”Œλ“€μ˜ 집합
    • = λ¦΄λ ˆμ΄μ…˜ μ™Έμ—°(relation extension)
    • 동적인 νŠΉμ§• 있음 => κ³„속 변함.

β€» 개체 - 관계 λͺ¨λΈ (κ°œλ…μ  데이터 λͺ¨λΈ)μ—μ„œ 개체의 μ •μ˜λŠ” 개체 type, 개체의 ν• λ‹Ήλœ 값은 개체 instance

β€» 관계 데이터 λͺ¨λΈ (논리적 데이터 λͺ¨λΈ)μ—μ„œ λ¦΄λ ˆμ΄μ…˜μ˜ 논리적 ꡬ쑰 schema와 μœ μ‚¬

 

λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ성 (μ—¬λŸ¬ 개의 λ¦΄λ ˆμ΄μ…˜)

  • λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ (Database schema)
    • λ°μ΄ν„°λ² μ΄μŠ€μ˜ 전체 ꡬ쑰
    • λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆμ˜ λͺ¨μŒ
    • ex) 학생 λ¦΄λ ˆμ΄μ…˜ + ꡐ수 λ¦΄λ ˆμ΄μ…˜ + κ³Όλͺ© λ¦΄λ ˆμ΄μ…˜ => 1개의 학ꡐ λ°μ΄ν„°λ² μ΄μŠ€
  • λ°μ΄ν„°λ² μ΄μŠ€ μΈμŠ€ν„΄μŠ€ (Database instance)
    • λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€λ“€μ˜ λͺ¨μŒ

 

λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„± (νˆ¬ν”Œμ˜ νŠΉμ„± + μ†μ„±μ˜ νŠΉμ„±)

  • νˆ¬ν”Œμ˜ μœ μΌμ„±: ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—λŠ” λ™μΌν•œ νˆ¬ν”Œ(ν–‰)이 μ‘΄μž¬ν•  수 μžˆλ‹€. (νˆ¬ν”Œμ˜ μœ μΌμ„± 보μž₯ μœ„ν•΄ key 쑴재)
  • νˆ¬ν”Œμ˜ λ¬΄μˆœμ„œ: ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œ μ‚¬μ΄μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€. (λ‚΄μš©μ΄ μ€‘μš”, μœ„μΉ˜λŠ” μ€‘μš”ν•˜μ§€ μ•ŠμŒ)
  • μ†μ„±μ˜ λ¬΄μˆœμ„œ: ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ 속성 μ‚¬μ΄μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€. (μ†μ„±μ˜ 이름이 μ€‘μš”)
  • μ†μ„±μ˜ μ›μžμ„±: 속성 κ°’μœΌλ‘œ μ›μž κ°’λ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. (μ›μž: λ”λŠ” λΆ„ν•΄ν•  수 μ—†λŠ” μ›μž, λ‹€μ€‘ κ°’ κ°€μ§ˆ 수 μ—†λ‹€.)
    • ex) νšŒμ‚¬μ›μ΄λ©΄μ„œ 학생인 λ°μ΄ν„°λŠ” μ‘΄μž¬ν•  수 μ—†λ‹€.

 

ν‚€(Key)

  • λ¦΄λ ˆμ΄μ…˜μ—μ„œ νˆ¬ν”Œλ“€μ„ μœ μΌν•˜κ²Œ κ΅¬λ³„ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합 -> μ œμ•½ 쑰건을 μœ„ν•΄ 쑴재, νˆ¬ν”Œμ˜ μœ μΌμ„± 보μž₯
  • ν‚€μ˜ νŠΉμ„±
    • μœ μΌμ„±(uniqueness): ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ λͺ¨λ“  νˆ¬ν”Œμ€ μ„œλ‘œ λ‹€λ₯Έ ν‚€ 값을 κ°€μ Έμ•Ό 함
      -> key둜 μ§€μ •λœ 속성 값은 νˆ¬ν”Œλ§ˆλ‹€ μ„œλ‘œ 달라야함
      -> keyκ°’ 같은 νˆ¬ν”Œμ€ 쑴재 x
    • μ΅œμ†Œμ„±(minimality): κΌ­ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ μ†μ„±λ“€λ‘œλ§Œ ν‚€ ꡬ성

 

  • ν‚€μ˜ μ’…λ₯˜
    • μŠˆνΌν‚€ (super key)
      • μœ μΌμ„± λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합 (μ΅œμ†Œμ„±μ€ κ³ λ € X)
      • ex) 고객 λ¦΄λ ˆμ΄μ…˜μ˜ μŠˆνΌν‚€: 고객아이디, (고객아이디, 고객이름), (고객이름, μ£Όμ†Œ) λ“±
      • (고객아이디, 고객이름)은 μœ μΌμ„± 보μž₯ν•˜μ§€λ§Œ μ΅œμ†Œμ„± λ§Œμ‘±ν•˜μ§€ λͺ»ν•΄μ„œ 후보킀 될 수 μ—†μŒ
      • 고객아이디 속성은 μœ μΌν•˜λ‹ˆκΉŒ 고객아이디 μ†μ„±λ§Œ λ“€μ–΄κ°€λ©΄ μŠˆνΌν‚€ 될 수 있음
    • 후보킀 (candidate key)
      • μœ μΌμ„±, μ΅œμ†Œμ„± λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
      • ex) 고객아이디, (고객이름, μ£Όμ†Œ) λ“±
      • (고객이름, μ£Όμ†Œ)μ—μ„œ 고객이름, μ£Όμ†Œ 각 ν•œκ°œμ”©μ€ 후보킀가 될 수 μ—†κ³  쌍으둜만 후보킀 κ°€λŠ₯
      • κΈ°λ³Έν‚€ (primary key)
      • 후보킀 쀑 기본적으둜 μ‚¬μš© μœ„ν•΄ μ„ νƒν•œ ν‚€
      • ex) 고객아이디
    • λŒ€μ²΄ν‚€ (alternate key)
      • κΈ°λ³Έν‚€λ‘œ μ„ νƒλ˜μ§€ λͺ»ν•œ 후보킀
      • ex) (고객이름, μ£Όμ†Œ)
    • μ™Έλž˜ν‚€ (foreign key)
      • λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€λ₯Ό κ·ΈλŒ€λ‘œ μ°Έμ‘°ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
      • = μ–΄λ–€ λ¦΄λ ˆμ΄μ…˜μ— μ†Œμ†λœ 속성 λ˜λŠ” μ†μ„±μ˜ 집합이 λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€κ°€ λ˜λŠ” 것
      • μ°Έμ‘°ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜: μ™Έλž˜ν‚€λ₯Ό 가진 λ¦΄λ ˆμ΄μ…˜
      • μ°Έμ‘°λ˜λŠ” λ¦΄λ ˆμ΄μ…˜: μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜λŠ” κΈ°λ³Έν‚€λ₯Ό 가진 λ¦΄λ ˆμ΄μ…˜

 

->->-> 같은 λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” μ™Έλž˜ν‚€ μ •μ˜: (4μž₯) 관계에 μ°Έμ—¬ν•œ 개체 νƒ€μž…μ˜ μˆ˜μ— 따라 이항관계, 삼항관계, μˆœν™˜κ΄€κ³„λ‘œ λ‚˜λ‰˜μ—ˆλŠ”λ° 이 λ•Œ μˆœν™˜ 관계

 

 

 

1. 후보 ν‚€ 쀑에 값이 자주 변경될 수 μžˆλŠ” 속성 ν¬ν•¨λœ 후보 ν‚€λŠ” κΈ°λ³Έν‚€λ‘œ 뢀적합

2. nullκ°’ κ°€μ§ˆ 수 μžˆλŠ” 속성이 ν¬ν•¨λœ ν›„λ³΄ν‚€λŠ” κΈ°λ³Έν‚€λ‘œ μ„ νƒν•˜λ©΄ μ•ˆ 됨

3. λ‹¨μˆœν•œ 후보킀λ₯Ό κΈ°λ³Έν‚€λ‘œ μ„€μ •

 

 

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

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

  • λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜κ³  μΌκ΄€λœ μƒνƒœλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•œ κ·œμΉ™
  • 무결성: λ°μ΄ν„°μ˜ 결함이 μ—†λŠ” μƒνƒœ, μ •ν™•ν•˜κ³  μœ νš¨ν•˜κ²Œ μœ μ§€ν•˜λŠ” 것
  • 개체 무결성 μ œμ•½μ‘°κ±΄
    • κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  속성은 널 값을 κ°€μ§ˆ 수 μ—†λ‹€. (널 κ°’ 가지면 νˆ¬ν”Œμ˜ μœ μΌμ„± νŒλ‹¨ λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έ)
    • λ§Œμ•½ κΈ°λ³Έν‚€λ‘œ μ„€μ •λœ 속성에 널 κ°’ μ‚½μž…ν•˜λ €λŠ” μ‹œλ„ or μ›λž˜ 있던 값을 null으둜 λ°”κΎΈλ €λŠ” μ‹œλ„ ν•˜λ©΄ DBMSκ°€ λ§‰μ•„μ€Œ
  • μ°Έμ‘° 무결성 μ œμ•½μ‘°κ±΄
    • μ™Έλž˜ν‚€λŠ” μ°Έμ‘°ν•  수 μ—†λŠ” 값을 κ°€μ§ˆ 수 μ—†λ‹€.
    • κ·ΈλŸ¬λ‚˜ μ™Έλž˜ν‚€ 속성이 널 값을 가진닀고 ν•΄μ„œ μ°Έμ‘° 무결성 μ œμ•½ 쑰건을 μœ„λ°˜ν•œ 것은 μ•„λ‹˜.

 

728x90