Relational Algebra

Relational Algebra

Tag
Database
Computer Science Engineering

관계형 데이터베이스 이론의 3단계

  • 관계형 데이터 모델(relational data model)
    • 릴레이션 개념
      • 테이블, 집합, 릴레이션 스키마, 릴레이션 인스탄스, 도메인, 애트리뷰트, 투플 등
    • 키: 기본키, 외래키, 후보키 등
      • 기본키와 외래키를 통한 개체 간의 연결
    • 데이터가 어떻게 모델링되고 구조화되어 있는지
  • 관계 대수(relational algebra)
    • 릴레이션으로 표현된 데이터에 대한 대수적인 연산 체계
    • 릴레이션에 대한 연산자들로 정의됨
    • 데이터를 어떻게 조작할 수 있는 있는지
  • 데이터 언어(Data Language)
    • 사용자가 데이터베이스에 접근하여 실제로 데이터베이스 작업을 할 수 있는 질의언어(Query Language)
    • DDL, DML, DCL 로 구성
    • 스키마정의/검색,삽입,삭제,갱신/백업,복원,접근권한제어등
    • 표준화된 언어: SQL
 

관계 대수(Relational Algebra)

  • 릴레이션 단위로 데이터를 처리, 조작하는 연산의 집합
    • 릴레이션 : 테이블이면서, 투플의 집합
  • 집합연산자
    • 합집합(UNION, ∪)
    • 교집합(INTERSECT, ∩)
    • 차집합(DIFFERENCE, -)
    • 카티션 프로덕트(CARTESIAN PRODUCT, ×)
  • 순수 관계 연산자
    • 실렉트(SELECT, σ)
    • 프로젝트(PROJECT, )
    • 조인(JOIN, ⋈)
    • 디비전(DIVISION, ÷)
  • 폐쇄 성질 (closure property)
    • 피연산자와 연산 결과가 모두 릴레이션
    • 중첩(nested)된 수식의 표현이 가능
    •  

집합 연산자

  • 합집합 (union,∪)
    • R∪S = { t | t∈R V t∈S } |R∪S| ≤ |R| + |S|
  • 교집합 (intersect,∩) R∩S = { t | t∈R ∧ t∈S } |R∩S| ≤ min{ |R|, |S| }
  • 차집합 (difference,-) R-S = { t | t∈R ∧ t ∉ S }
    • |R-S| ≤ |R|
  • 카티션 프로덕트 (Cartesian product,×) R×S = { r·s | r∈R ∧ s∈S }
    • : 투플의 접합(concatenation)
    • |R×S| = |R|×|S| 차수(degree) = R의 차수 + S의 차수
  • 합병가능(union-compatible)한 릴레이션
    • 합집합(∪), 교집합(∩), 차집합(-)의 피연산자들은
      • 차수가 같아야 함
      • 대응 애트리뷰트 쌍 별로 도메인이 같아야 함
  • ∪, ∩, × 연산은 결합적(associative)임
    • R∪S∪T = (R∪S)∪T = R∪(S∪T)
    • R∩S∩T = (R∩S)∩T = R∩(S∩T)
    • R×S×T = (R×S)×T = R×(S×T)
  • ∪, ∩, × 연산은 교환적(commutative)임
    • R∪S = S∪R
    • R∩S = S∩R
    • R×S = S×R
    •  

순수 관계 연산자

  • 릴레이션 (스키마) : R(X) = R(A1, ... , An)
  • 투플 r:<a1,...,an> 릴레이션 R={r | r = <a1, ... , an> }
    • ai : 투플 r에 대한 애트리뷰트 Ai의 값
    • ai = r.Ai = r[Ai]
  • 투플은 다음과 같이 다양한 방식으로 표현 가능 <a1, ... , an> = <r.A1 , r.A2 ,..., r.An > = < r[A1], r[A2], ..., r[An] > = r[A1, A2, ... An] = r[X]
 

실렉트 (SELECT: σ)

  • Select 연산은 unary operator
  • 연산 결과는 릴레이션의 수평적 부분집합 (horizontal subset)
    • 결과: 조건을 만족하는 투플들 만으로 구성된 릴레이션
 

Example

notion image
notion image
 

프로젝트 (PROJECT: ∏)

  • 프로젝트 연산자: unary operator
  • example
    • 학생(학번,이름,학년,학과)에서 이름,학과(학생)
  • 릴레이션의 수직적 부분집합(vertical subset)
  • 결과에 투플이 중복되는 경우에는 제거
    • 결과도 투플의 집합(릴레이션) - 폐쇄성
  • Y(X(R)) = Y(R)
 

Example

notion image
 

세타조인 (JOIN: )

  • R(X),S(Y),A∈X,B∈Y에대하여
    • R⋈AθB S={r·s|r∈R∧s∈S∧(r.Aθs.B)}
      • A, B : 조인 애트리뷰트(join attribute)
      • θ: 비교연산자
      • 결과차수=R의차수+S의차수
      • 조인: binary operator
  • 세타조인의 의미적 해석
    • 두 릴레이션 R과 S의 곱집합에서 θ 조건을 만족하는 투플만 모은 수평적 부분집합.
 

Example

notion image

동일 조인 (equijoin)

  • 세타조인에서 θ가 "="인 경우
R ⋈ A=BS = { r·s | r∈R ∧ s∈S ∧ ( r.A=s.B ) }
 

자연조인(natural join: N)

R(X), S(Y)의 조인 애트리뷰트를 Z(=X∩Y)라 하면
R ⋈ NS = {<r · s>[X∪Y] | r∈R ∧ s∈S ∧ r[Z]=s[Z] }
= ∏ X∪Y(σ Z=Z(R×S)) = ∏ X∪Y(R⋈ Z=ZS)
  • 즉, 동일 조인의 결과에서 중복되는 애트리뷰트를 제거
  • 자연조인의 조인 애트리뷰트 Z는 일반적으로 R의 기본키(즉, S의 외래키) 로 구성됨
  • 두 테이블의 투플 들 간의 “관계”는 기본키와 외래키로 표현되며, 조인 연산을 통해서 해당 투플들을 연결하는 연산을 하게 됨.
  • 연결된 데이터를 두 테이블로 분리하여 데이터의 중복성을 피하고, 필요할 때에만 연결하는 원리
 

릴레이션 학생과 등록의 자연 조인 예

notion image
 

디비전(DIVISON: ÷)

R÷S= { t | t∈ ∏D(R) ∧ t·s ∈ R for all s∈S }
즉, {t[a1,...,an]|t ∈ ∏D(R) ∧ ∀s∈S (t[a1,...,an] ∪ s) ∈ R) }
  • S에 속하는 모든 투플 s에 대해서 쌍을 이루는 값(t·s)들이 R에 존재할 때의 t 투플의 집합
 
  • 디비전의 의미적 해석: 디비전은 “S에 있는 모든 투플과 쌍을 이루는 R의 투플을 구하라”의 의미
 

기본 연산과 복합 연산

  • 기본 연산 (primitive operations)
    • 다른 연산으로 대체할 수 없는 하나의 논리적 기능을 수행하는 연산
      • 합집합(∪) , 차집합(-) , 곱집합(×), 프로젝트(∏), 실렉트(σ)
  • 복합 연산 (composite operations)
    • 기본 연산의 조합으로 대체할 수 있는 연산
      • 교집합(∩), 조인(⋈), 디비전(÷)
      •  

세미조인(semijoin: )

  • R(X), S(Y)의 조인 애트리뷰트를 Z(=X∩Y)라 하면
    • R⋉S: S와 자연 조인이 가능한 R의 투플의 집합
      • R⋉S = {r | r∈R ∧ s∈S ∧ r[Z]=s[Z] }
      •  

외부 조인 (outerjoin, ⋈+)

  • 한 릴레이션에 있는 투플이 조인할 상대 릴레이션에 대응되는 투플이 없을 경우, 상대를 널(null) 투플로 만들어 결과 릴레이션에 포함
  • 누락 정보를 처리하기 위한 조인의 확장
  • 두 조인 릴레이션의 투플들이 전부 결과 릴레이션에 포함됨
  • 왼쪽 외부조인(left outer join): 왼쪽의 릴레이션의 투플들만 추가
  • 오른쪽 외부조인(right outer join): 오른쪽의 릴레이션의 투플들만 추가
notion image
 

외부 합집합 (outer-union, ∪+)

  • 합병 가능하지 않은(not union-compatible) 릴레이션간의 합집합
    • 애트리뷰트 수가 다르거나, 대응하는 애트리뷰트의 도메인이 다른 두 릴레이션
    • 두 릴레이션의 모든 애트리뷰트를 포함하는 확장된 릴레이션으로 만듦
  • 확장된 릴레이션에 해당하는 애트리뷰트 값이 없을 때는 널(Null) 값으로 채움
notion image
 

집계 (aggregation) 연산

  • 집계연산: 릴레이션의 특정 애트리뷰트의 집계 값을 계산
  • 그룹연산: 릴레이션의 특정 애트리뷰트로 투플들을 그룹화
  • 집계연산만 적용할 수도 있고, 그룹연산 이후 집계연산을 동시에 적용할 수 있음
  • AVG성적(등록)
    • 등록 릴레이션의 성적 애트리뷰트 값들에 대해 평균값 계산
  • GROUP학년(학생)
    • 학생 릴레이션의 투플들을 학년 값에 따라 그룹을 만듦
  • GROUP과목번호AVG성적(등록)
    • 등록 릴레이션에서 과목별 그룹에 대한 평균성적
    • 실행 순서는 GROUP, AVG 순서임
  • 일반 형식 : GROUPA FUNCTIONB (E)
    •  E:릴레이션혹은관계대수식
    • FUNCTION : 집계 함수 ( SUM, AVG, MAX, MIN, COUNT)
    • B:집계함수의적용대상애트리뷰트
    • GROUP : 그룹 함수
    • A:그룹함수가적용할애트리뷰트
    •