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

DB

6μž₯ 관계 데이터 μ—°μ‚°

 

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


01 관계 데이터 μ—°μ‚°μ˜ κ°œλ…

01-1 데이터 λͺ¨λΈμ˜ ꡬ성

데이터 λͺ¨λΈ = 데이터 ꡬ쑰(data structure) + μ—°μ‚°(operation) + μ œμ•½μ‘°κ±΄ (constraint)

01-2 관계 데이터 μ—°μ‚°(relational data operation)

  • 관계 데이터 λͺ¨λΈμ˜ μ—°μ‚°
  • μ›ν•˜λŠ” 데이터λ₯Ό μ–»κΈ° μœ„ν•΄ λ¦΄λ ˆμ΄μ…˜μ— ν•„μš”ν•œ 처리 μš”κ΅¬λ₯Ό μˆ˜ν–‰ν•˜λŠ” 것
  • 관계 λŒ€μˆ˜μ™€ 관계 해석이 있음
    • κΈ°λŠ₯κ³Ό ν‘œν˜„λ ₯ μΈ‘λ©΄μ—μ„œ λŠ₯λ ₯이 동등함

01-3 관계 λŒ€μˆ˜μ™€ 관계 ν•΄μ„μ˜ μ—­ν• 

  • 데이터 μ–Έμ–΄μ˜ μœ μš©μ„±μ„ κ²€μ¦ν•˜λŠ” κΈ°μ€€
  • 관계 λŒ€μˆ˜λ‚˜ 관계 ν•΄μ„μœΌλ‘œ κΈ°μˆ ν•  수 μžˆλŠ” λͺ¨λ“  질의λ₯Ό κΈ°μˆ ν•  수 μžˆλŠ” 데이터 μ–Έμ–΄λ₯Ό κ΄€κ³„μ μœΌλ‘œ μ™„μ „(relationally complete)ν•˜λ‹€κ³  νŒλ‹¨ν•¨
    • 질의(query) : 데이터에 λŒ€ν•œ 처리 μš”κ΅¬

02 관계 λŒ€μˆ˜

02-1 관계 λŒ€μˆ˜(relational algebra)의 κ°œλ…

  • μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄ λ¦΄λ ˆμ΄μ…˜μ˜ 처리 과정을 μˆœμ„œλŒ€λ‘œ κΈ°μˆ ν•˜λŠ” μ–Έμ–΄
    • 절차 μ–Έμ–΄(procedural language)
  • λ¦΄λ ˆμ΄μ…˜μ„ μ²˜λ¦¬ν•˜λŠ” μ—°μ‚°μžλ“€μ˜ λͺ¨μž„
    • λŒ€ν‘œ μ—°μ‚°μž 8개
    • 일반 집합 μ—°μ‚°μžμ™€ 순수 관계 μ—°μ‚°μžλ‘œ λΆ„λ₯˜λ¨
  • 폐쇄 νŠΉμ„±(closure property)이 μ‘΄μž¬ν•¨
    • ν”Όμ—°μ‚°μžλ„ λ¦΄λ ˆμ΄μ…˜μ΄κ³  μ—°μ‚°μ˜ 결과도 λ¦΄λ ˆμ΄μ…˜μž„

02-2 일반 집합 μ—°μ‚°μžμ™€ 순수 관계 μ—°μ‚°μž

일반 집합 μ—°μ‚°μž(set operation)

  • λ¦΄λ ˆμ΄μ…˜μ΄ νˆ¬ν”Œμ˜ μ§‘ν•©μ΄λΌλŠ” κ°œλ…μ„ μ΄μš©ν•˜λŠ” μ—°μ‚°μž
  • ν”Όμ—°μ‚°μžκ°€ 2개 ν•„μš”ν•¨
    • 2개의 λ¦΄λ ˆμ΄μ…˜μ„ λŒ€μƒμœΌλ‘œ 연산을 μˆ˜ν–‰
  • 합집합, ꡐ집합, 차집합은 ν”Όμ—°μ‚°μžμΈ 두 λ¦΄λ ˆμ΄μ…˜μ΄ 합병 κ°€λŠ₯ν•΄μ•Ό 함
    • 합병 κ°€λŠ₯(union-compatible) μ‘°κ±΄
      • 두 λ¦΄λ ˆμ΄μ…˜μ˜ μ°¨μˆ˜κ°€ κ°™μ•„μ•Ό 함
      • 두 λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ„œλ‘œ λŒ€μ‘λ˜λŠ” μ†μ„±μ˜ λ„메인이 κ°™μ•„μ•Ό 함

순수 관계 μ—°μ‚°μž(relational operation)

  • λ¦΄λ ˆμ΄μ…˜μ˜ ꡬ쑰와 νŠΉμ„±μ„ μ΄μš©ν•˜λŠ” μ—°μ‚°μž

02-3 일반 집합 - Union (합집합)

  • 합병 κ°€λŠ₯ν•œ 두 λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 합집합 : R∪S
    • λ¦΄λ ˆμ΄μ…˜ R에 μ†ν•˜κ±°λ‚˜ λ¦΄λ ˆμ΄μ…˜ S에 μ†ν•˜λŠ” λͺ¨λ“  νˆ¬ν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜ ꡬ성
  • κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±
    • μ°¨μˆ˜λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 차수(같은 수의 속성)와 κ°™μŒ
    • μΉ΄λ””λ„λ¦¬ν‹°λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 카디널리티λ₯Ό λ”ν•œ 것과 κ°™κ±°λ‚˜ 적어짐(ꡐ집합이 μžˆλŠ” 경우)
  • κ΅ν™˜μ  νŠΉμ§•μ΄ 있음: R∪S = S∪R
  • 결합적 νŠΉμ§•μ΄ 있음: (R∪S)∪T = R∪(S∪T)

μ˜ˆμ‹œ: to find all courses taught in the Fall 2017 semester, or in the Sp ring 2018 semester, or in both

02-4 일반 집합 - Set-Intersection (ꡐ집합)

  • 합병 κ°€λŠ₯ν•œ 두 λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 ꡐ집합 : R ∩ S The set-intersection operation allows us to find tuples that are in both the in put relations.
    • λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S에 κ³΅ν†΅μœΌλ‘œ μ†ν•˜λŠ” νˆ¬ν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜ ꡬ성
  • κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±
    • μ°¨μˆ˜λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 μ°¨μˆ˜μ™€ κ°™μŒ
    • μΉ΄λ””λ„λ¦¬ν‹°λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 μ–΄λ–€ 카디널리티보닀 κ°™κ±°λ‚˜ μž‘μŒ(크지 μ•ŠμŒ)
  • κ΅ν™˜μ  νŠΉμ§•μ΄ 있음: R ∩ S = S ∩ R
  • 결합적 νŠΉμ§•μ΄ 있음: (R ∩ S) ∩ T = R ∩ (S ∩ T)

μ˜ˆμ‹œ: Find the set of all courses taught in both the Fall 2017 and the Sprin g 2018 semesters

02-5 일반 집합 - Set Difference (차집합)

  • 합병 κ°€λŠ₯ν•œ 두 λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 차집합 : R – S
    • λ¦΄λ ˆμ΄μ…˜ Rμ—λŠ” μ‘΄μž¬ν•˜μ§€λ§Œ λ¦΄λ ˆμ΄μ…˜ Sμ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νˆ¬ν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜ ꡬ성
  • κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±
    • μ°¨μˆ˜λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 μ°¨μˆ˜μ™€ κ°™μŒ
    • R – S의 μΉ΄λ””λ„λ¦¬ν‹°λŠ” λ¦΄λ ˆμ΄μ…˜ R의 카디널리티와 κ°™κ±°λ‚˜ 적음
    • S – R의 μΉ΄λ””λ„λ¦¬ν‹°λŠ” λ¦΄λ ˆμ΄μ…˜ S의 카디널리티와 κ°™κ±°λ‚˜ 적음
  • κ΅ν™˜μ , 결합적 νŠΉμ§•μ΄ μ—†μŒ

μ˜ˆμ‹œ: to find all courses taught in the Fall 2017 semester, but not in the S pring 2018 semester

02-6 일반 집합 - Cartesian-Product

  • 두 λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 μΉ΄ν‹°μ…˜ ν”„λ‘œλ•νŠΈ : R ⨉ S
  • λ¦΄λ ˆμ΄μ…˜ R에 μ†ν•œ 각 νˆ¬ν”Œκ³Ό λ¦΄λ ˆμ΄μ…˜ S에 μ†ν•œ 각 νˆ¬ν”Œμ„ λͺ¨λ‘ μ—°κ²°ν•˜μ—¬ λ§Œλ“€μ–΄μ§„ μƒˆλ‘œμš΄ νˆ¬ν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
  • κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±
    • μ°¨μˆ˜λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 차수λ₯Ό λ”ν•œ 것과 κ°™μŒ
    • μΉ΄λ””λ„λ¦¬ν‹°λŠ” λ¦΄λ ˆμ΄μ…˜ Rκ³Ό S의 카디널리티λ₯Ό κ³±ν•œ 것과 κ°™μŒ
  • κ΅ν™˜μ  νŠΉμ§•μ΄ 있음
    • R ⨉ S = S ⨉ R
  • 결합적 νŠΉμ§•μ΄ 있음
    • (R ⨉ S) ⨉ T = R ⨉ (S ⨉ T)

μ˜ˆμ‹œ

Since the instructor ID appears in both relations, we distinguish between these attribute by attaching to the attribute the name of the relation from which the attribute originally came. ex) instructor.ID, teaches.ID

02-7 순수 관계 - Select Operation

κ°œλ…

  • λ¦΄λ ˆμ΄μ…˜μ—μ„œ 쑰건을 λ§Œμ‘±ν•˜λŠ” νˆ¬ν”Œλ§Œ μ„ νƒν•˜μ—¬ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성 The select operation selects tuples that satisfy a given predicate.
  • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ„ λŒ€μƒμœΌλ‘œ 연산을 μˆ˜ν–‰
  • μˆ˜ν•™μ  ν‘œν˜„λ²• : 
    , p is called the selection predicate-쑰건식, r: relation
  • 데이터 언어적 ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜ where 쑰건식
  • 쑰건식
    • 비ꡐ식, ν”„λ ˆλ””ν‚·(predicate)이라고도 함
    • 속성과 μƒμˆ˜μ˜ λΉ„κ΅λ‚˜ 속성듀 κ°„μ˜ λΉ„κ΅λ‘œ ν‘œν˜„
    • 비ꡐ μ—°μ‚°μž(>, ≥, <, ≤, =, ≠)와 논리 μ—°μ‚°μž(∧, ∨, ¬)λ₯Ό μ΄μš©ν•΄ μž‘μ„±
  • κ΅ν™˜μ  νŠΉμ§•μ΄ 있음. μ—°μ‚° μˆœμ„œλŠ” μ—°μ‚° 결과에 영ν–₯을 λΌμΉ˜μ§€ μ•ŠμŒ.

μ˜ˆμ‹œ

예제 1: 고객 relationμ—μ„œ 등급이 gold이고, 적립금이 2000 이상인 tuple을 κ²€μƒ‰ν•˜μ‹œμ˜€.

02-8 순수 관계 - Project Operation

κ°œλ…

  • λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ„ νƒν•œ μ†μ„±μ˜ κ°’μœΌλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성 The result is defined as the relation of k columns obtained by erasing the columns that are not listed
  • ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ„ λŒ€μƒμœΌλ‘œ 연산을 μˆ˜ν–‰
  • Duplicate rows removed from result, since relations are sets
    • κ°œλ…μ  (이둠적) μ–Έμ–΄μ˜ νŠΉμ§•μœΌλ‘œ, μ‹€μ œμ™€λŠ” 쑰금 닀름
  • μˆ˜ν•™μ  ν‘œν˜„λ²• : 
    , A 듀은 속성 리슀트
  • 데이터 언어적 ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜[μ†μ„±λ¦¬μŠ€νŠΈ]

μ˜ˆμ‹œ

예제 1: 고객 relationμ—μ„œ 고객이름, λ“±κΈ‰, μ λ¦½κΈˆμ„ κ²€μƒ‰ν•˜μ‹œμ˜€.

예제 2: 고객 relationμ—μ„œ 등급을 κ²€μƒ‰ν•˜μ‹œμ˜€.

γ…‘> κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ—μ„œ λ™μΌν•œ νˆ¬ν”Œμ€ μ€‘λ³΅λ˜μ§€ μ•Šκ³  ν•œ 번만 λ‚˜νƒ€λ‚¨

02-9 순수 관계 - Join Operation

  • 쑰인 속성을 μ΄μš©ν•΄ 두 λ¦΄λ ˆμ΄μ…˜μ„ μ‘°ν•©ν•˜μ—¬ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
    • 쑰인 μ†μ„±μ˜ 값이 같은 νˆ¬ν”Œλ§Œ μ—°κ²°ν•˜μ—¬ μƒμ„±λœ νˆ¬ν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— 포함
    • 쑰인 속성 : 두 λ¦΄λ ˆμ΄μ…˜μ΄ κ³΅ν†΅μœΌλ‘œ 가지고 μžˆλŠ” 속성
  • ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜1 β‹ˆ λ¦΄λ ˆμ΄μ…˜2 
  • μžμ—° 쑰인(natural join)이라고도 함
    • ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜1 
      λ¦΄λ ˆμ΄μ…˜2

μ˜ˆμ‹œ

쑰인 속성: 고객 λ¦΄λ ˆμ΄μ…˜μ˜ 고객아이디, μ£Όλ¬Έ λ¦΄λ ˆμ΄μ…˜μ˜ 주문고객

세타 쑰인(theta join, 𝜽-join)

  • μžμ—° 쑰인에 λΉ„ν•΄ λ” μΌλ°˜ν™”λœ 쑰인
  • 주어진 쑰인 쑰건을 λ§Œμ‘±ν•˜λŠ” 두 λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  νˆ¬ν”Œμ„ μ—°κ²°ν•˜μ—¬ μƒμ„±λœ μƒˆλ‘œμš΄ νˆ¬ν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
  • κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ˜ μ°¨μˆ˜λŠ” 두 λ¦΄λ ˆμ΄μ…˜μ˜ 차수λ₯Ό λ”ν•œ 것과 κ°™μŒ
  • ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜1 
    λ¦΄λ ˆμ΄μ…˜2
    • πœ½λŠ” 비ꡐ μ—°μ‚°μž(>, ≥, <, ≤, =, ≠)λ₯Ό 의미

동일 쑰인(equi-join)

  • 𝜽 μ—°μ‚°μžκ°€ “=”인 세타 쑰인을 의미
  • μ˜ˆμ‹œ

02-10 순수 관계 - Division

  • ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜1 ÷ λ¦΄λ ˆμ΄μ…˜2
  • λ¦΄λ ˆμ΄μ…˜2의 λͺ¨λ“  νˆ¬ν”Œκ³Ό 관련이 μžˆλŠ” λ¦΄λ ˆμ΄μ…˜1의 νˆ¬ν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
    • 단, λ¦΄λ ˆμ΄μ…˜1이 λ¦΄λ ˆμ΄μ…˜2의 λͺ¨λ“  속성을 ν¬ν•¨ν•˜κ³  μžˆμ–΄μ•Ό 연산이 κ°€λŠ₯함
      • 도메인이 κ°™μ•„μ•Ό ν•œλ‹€λŠ” μ˜λ―Έμž„

μ˜ˆμ‹œ

μ˜ˆμ‹œ1) 고객 ÷ μš°μˆ˜λ“±κΈ‰

μ˜ˆμ‹œ2)

μ£Όλ¬Έλ‚΄μ—­ ÷ μ œν’ˆ1: μ§„μ§œμš°λ™κ³Ό κ·ΈλŒ€λ‘œλ§Œλ‘λ₯Ό λ‹€ μ‚° μ‚¬λžŒμ˜ 정보 쀑 μ œν’ˆ 이름 μ œμ™Έ

μ£Όλ¬Έλ‚΄μ—­ ÷ μ œν’ˆ2

02-11 Assignment Operation (ν• λ‹Ή μ—°μ‚°)

  • The assignment operation is denoted by ← and works like assignment in a p rogramming language
  • λ³΅μž‘ν•˜κ²Œ ν‘œν˜„λ  μ§ˆμ˜λ“€μ„ κ°„λž΅ν•˜κ²Œ ν‘œν˜„ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©λ¨.
  • μΌμ‹œμ μΈ(temporary) λ³€μˆ˜λ‘œ, 관계 λŒ€μˆ˜ 연산에 μžˆμ–΄μ„œ assignment 연산을 μΆ”κ°€μ μœΌλ‘œ κ΅¬ν˜„ν•˜λŠ” 것이 μ•„λ‹˜.

μ˜ˆμ‹œ: Find all instructor in the "Physics" and "Music" department

 

02-12 Rename Operation

  • 관계 λŒ€μˆ˜ μ‹μ˜ 결과에 이름을 μ£ΌλŠ” μ—­ν• λ‘œ μ‚¬μš©ν•¨.
  • 둜우라고 읽음.
  • ν‘œν˜„: 
    , E ν‘œν˜„μ‹μ˜ κ²°κ³Όλ₯Ό xλΌλŠ” μ΄λ¦„μœΌλ‘œ.

μ˜ˆμ‹œ: λŒ€ν•™ λ‚΄μ—μ„œ κ°€μž₯ 높은 κΈ‰μ—¬λ₯Ό 찾아라.

02-13 ν™•μž₯된 관계 λŒ€μˆ˜ μ—°μ‚°μž - μ„Έλ―Έ 쑰인(semi-join)

  • 쑰인 μ†μ„±μœΌλ‘œ ν”„λ‘œμ νŠΈ 연산을 μˆ˜ν–‰ν•œ λ¦΄λ ˆμ΄μ…˜μ„ μ΄μš©ν•˜λŠ” 쑰인
  • ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜1 ⋉ λ¦΄λ ˆμ΄μ…˜2
  • λ¦΄λ ˆμ΄μ…˜2λ₯Ό 쑰인 μ†μ„±μœΌλ‘œ ν”„λ‘œμ νŠΈ μ—°μ‚°ν•œ ν›„, λ¦΄λ ˆμ΄μ…˜1에 μžμ—° μ‘°μΈν•˜μ—¬ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
  • λΆˆν•„μš”ν•œ 속성을 미리 μ œκ±°ν•˜μ—¬ 쑰인 μ—°μ‚° λΉ„μš©μ„ μ€„μ΄λŠ” μž₯점이 있음
  • κ΅ν™˜μ  νŠΉμ§•μ΄ μ—†μŒ: R ⋉ S ≠ S ⋉ R

μ˜ˆμ‹œ

μ£Όλ¬Έ λ¦΄λ ˆμ΄μ…˜μ—μ„œ 쑰인 속성인 μ£Όλ¬Έ 고객 μ†μ„±λ§Œ 남은 λ¦΄λ ˆμ΄μ…˜κ³Ό κ³ κ° λ¦΄λ ˆμ΄μ…˜μ„ μžμ—° μ‘°μΈν•œ 것이닀.

μžμ—° 쑰인과 비ꡐ해보면 μ£Όλ¬Έλ²ˆν˜Έμ™€ μ£Όλ¬Έμ œν’ˆ 속성은 λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ” 것을 λ³Ό 수 μžˆλ‹€.

02-14 ν™•μž₯된 관계 λŒ€μˆ˜ μ—°μ‚°μž – μ™ΈλΆ€ 쑰인(outer-join)

  • μžμ—° 쑰인 μ—°μ‚°μ—μ„œ μ œμ™Έλ˜λŠ” νˆ¬ν”Œλ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨μ‹œν‚€λŠ” 쑰인
    • 두 λ¦΄λ ˆμ΄μ…˜μ— μžˆλŠ” λͺ¨λ“  νˆ¬ν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨μ‹œν‚΄
  • ν‘œν˜„λ²• : λ¦΄λ ˆμ΄μ…˜1 β‹ˆ+ λ¦΄λ ˆμ΄μ…˜2 (쒌츑, 우츑 μ™„μ „ μ™ΈλΆ€ 쑰인)

μ˜ˆμ‹œ

μ—¬κΈ°μ„  쒌츑 μ™ΈλΆ€ 쑰인과 같은 결과이닀.