3 분 소요

Database System

Relational Algebra

  • Relation database에 대해 질의(query) 처리 연산자들의 모임을 relation algebra라 함
  • Query는 relation에서 원하는 정보를 검색(retrieve)하는 조건을 명시하는 명령문
  • (1 개 혹은 여러 개의) 입력 relation에 대해 질의 연산의 결과인 (1 개의) 출력 relation 이 생성됨
  • 기본적으로 8 개의 검색 연산자 들로 구성됨
  • 이 연산자들은 Query language인 sQL의 검색 연산 과정을 실현하는데 매우 중요함

Relation Data Operation

  • Relation Data Operation
    • 원하는 데이터를 얻기 위해 Relation에 필요한 Query를 수행하는 것으로, Data System의 구성 요소 중 데이터 언어의 역할을 한다
    • 관계 대수/관계 해석으로 나눌 수 있다 (기능과 표현력 측면에서 능력은 동등하다)
      • 관계 대수(Relational Algebra): 절차식 언어, 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술한다
      • 관계 해석(Relational Calculus): 비절차식 언어, 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술한다

image

  • 원하고자 하는 데이터를 쉽고, 빠르고, 정확하게 얻고자 사용한다
  • 새로운 데이터 언어 제안 시, 해당 데이터 언어의 유용성을 검증하는 기준
  • 관계 대수나 해석으로 기술할 수 있는 모든 query를 기술할 수 있으면 데이터 언어를 관계적으로 완전(Relationally Complete)하다고 판단할 수 있다

Relational Algebra

  • Relational Algebra
    • Relation을 다루는 연산으로, 검색 질의를 기술하는데 사용한다
    • 절차식 언어이다 (User가 원하는 결과를 위해 어떤 연산을 수행해야 할 지 system에 알려준다)
    • 간단하며 명시적(Powerful) 표현을 사용한다
    • 폐쇄 특성(Closure Property)을 가진다
    • 대표 연산자는 8개로, 일반 집합 연산자 4개와 순수 관계 연산자 4개로 분류할 수 있다
    • 피연산자의 특성 두가지
      • Variables that stand for relations(relation을 나타내는 변수)
      • Constants which are finite relation(유한한 relation의 상수)

Normal Set Operator

  • 일반 집합 연산자
    • Relation이 Tuple의 set이라는 개념을 이용하며, 수학의 집합 연산자를 차용한다
    • 조건: 피연산자가 두 개이며, 합병가능(Union-compatible)이어야 한다
    • 합병가능(Union-compatible)
      • 필드 수가 같아아 한다 (속성의 개수)
      • 왼쪽에서 부터 오른쪽으로 차례대로 대응하는 필드의 동일한 도메인을 가지고 있어야 한다 (도메인이 같으면 이름은 달라도 됨)


  • Union (R ⋃ S)
    • 릴레이션 R과 S의 합집합 반환
    • R ⋃ S = {t │ t ∈ R ∨ t ∈ S} (∨, OR이다)
  • Intersection (R ⋂ S)
    • 릴레이션 R과 S의 교집합 반환
    • R ⋂ S = {t │ t ∈ R ∧ t ∈ S} (∧, AND이다)
  • Difference (R − S)
    • 릴레이션 R과 S의 차집합 반환
    • R − S = {t │ t ∈ R ∧ t ∉ S}
  • Cartesian Product (R ⨉ S)
    • 릴레이션 R과 S의 각 tuple들을 모두 연결
    • R ⨉ S = {r·S │ t ∈ R ∧ s ∈ S}

UNION

image

  • │R ⋃ S│ ≤ │R│ ÷ │S│
  • 차수: R과 S의 차수와 같다
  • 교환/결합법칙 성립

INTERSECTION

image

  • │R ⋂ S│ ≤ MIN{│R│, │S│}
  • 차수: R과 S의 차수와 같다
  • 교환/결합법칙 성립

DIFFERENCE

image

  • │R − S│ ≤ │R│
  • 차수: R과 S의 차수와 같다
  • 교환/결합법칙 불가

CARTESIAN PRODUCT

image

  • │R ⨉ S│ = │R│ ⨉ │S│
  • R과 S의 차수를 더한 값
  • 교환/결합법칙 성립

💡
Cartesian Product는 두 Relation의 구조가 달라도 가능하다

Pure Relational Operator

  • 순수 관계 연산자
    • Relation의 구조특성을 이용하는 연산자이다


  • Selection(σ)
    • 표현: σ조건(R)
    • 릴레이션 R에서 조건(Predicate)을 만족하는 tuples 반환
  • Projection(π)
    • 표현: π칼럼(R)
    • 릴레이션 R에서 주어진 column으로만 구성된 tuple 반환
  • Join(⨝)
    • 표현: R⨝S
    • 릴레이션 R, S의 특정 column(들)을 비교하여, 조건에 알맞는 컴포넌트가 있다면 그 컴포넌트(들)의 tuples 반환
  • Division(÷)
    • 표현: R÷S
    • 릴레이션 S의 모든 tuple과 관련이 있는 릴레이션 R의 tuples 반환
  • Rename(ρ)
    • 표현: ρ S(x1, x2, …)(R)
    • 릴레이션 R을 S로 개명, 각 attribute를 x1, x2, … 로 개명

SELECTION

image

  • 하나의 Relation에서만 수행되는 연산
  • 조건식(Predicate)에는 비교연산자(>, ≥, =, ≠, ≤, <)와 논리연산자(, ) 이용
  • 수평적 부분 집합 개념

PROJECTION

image

  • 하나의 Relation에서만 수행하는 연산
  • 수직적 부분집합 개념

JOIN

image

  • Join
    • 릴레이션 R 하나로는 원하는 Data를 얻지 못하여 관련있는 여러 Relation들을 함께 사용해야 하는 경우 사용
    • 자연 조인(Natural Join)이라고도함
  • Theta-Join
    • 이러한 조인 연산에, θ(조건; Predicate)을 부여해 조건을 만족하는 tuples를 반환
    • 조건(Predicate)은 비교연산자(>, ≥, =, ≠, ≤, <)을 의미한다
  • Equi-Join
    • θ연산자가 등호(=)일 때의 세타 조인을 말한다

DIVISION

image

  • 릴레이션 R이 릴레이션 S의 모든 column을 포함하고 있어야 연산 가능 (R⊃S)

RENAME

image

  • 각 combining시 Name conflict(이름 충돌)이 그림과 같이 빈번히 일어날 수 있다
    • 이는 User, DBA 모두에게 모호할 수 있어, 명시적으로 이름을 바꾸는 데 사용한다

댓글남기기