관계 대수 : 순수 관계 연산자

조창훈·2023년 9월 20일

데이터베이스-SQL,DB

목록 보기
6/10

릴레이션의 수학적 표현

릴레이션 R

  • R(A1,A2,...,An)
  • R(X), X={A1,A2,...,An}
    단, Ai 에는 대응하는 도메인 Di 가 있음

셀렉트(Select,시그마로 부호표현,𝜎 sigma)

  • 처음 부호보고 당황함

일반 형식

  • R의 속성 A와 B 에 대해(A,B ∈X)
    SELECT FROM '테이블명' WHERE A = 상수 또는 B
    𝜎Aθv(R) 또는 𝜎AθB(R) - 솔직히 뭔지 바로 보고는 이해못함
    -Aθv 또는 AθB를 투플 조건식이라고 함

  • 위 계산으로 나오는 것은 튜플조건식을 만족하는 튜플로 구성된 릴레이션(테이블)이 생성됨.

  • 교환적 특성을 가져서, 조건1을 가지고 먼저 계산하나, 조건2를 먼저 계산하나, 조건들을 and로 묶어서 계산하나 같은 결과가 나오게됨

프로젝트(Project, 𝚷 PI)

일반 형식

  • 릴레이션 R에서 Y⊆X를 만족하는 속성 집합 Y에대해,
    𝚷y(R)
  • Y는 타겟 속성 리스트(target attribute list)

결과

  • 타겟 속성 리스트 Y만으로 구성된 릴레이션을 생성한다.
    릴레이션(테이블)을 Y리스트에 속한 속성인 부분과 아닌부분으로 나눠놓고,
    Y리스트에 속한 속성인 부분만 빼서 새로운 릴레이션을 만든다.

  • Z가 Y의 부분집합인경우, 𝚷z(𝚷y(R)) == 𝚷z(R)과 같다.

  • 위는 당연한 소리 ㅋㅋ

    노란부분만 새롭게 테이블이 된다고 생각하면됨

결과에서 중복된 투플은 제거해야함

  • 타겟 리스트에 PK가 포함되면 중복이 발생하지 않음
  • PK가 포함되지 않는 경우, 중복이 발생할 수 있음 : 이 경우에 제거해야 함

문제

  • 학생 테이블에서 CS학과 3학년의 학번과 이름을 검색하라
  1. 학생테이블에서 CS학과이고, 3학년인 투플을 검색
  2. 투플에서 학번과 이름만 빼서 새로운 릴레이션을 생성
  3. 결과 완성

조인(JOIN, ⋈ BOWTIE)

  • 카티션프로덕트에 기반한 연산
  • 종류
    • 세타조인(theta-join)
    • 등가조인(equi-join)
    • 자연조인(natural join)
  • 일반적으로 조인은 자연조인을 의미함
  • Binary operator

카티션 프로덕트

일반 형식
  • R x S
결과
  • 두 테이블에 속한 모든 투플을 각각 접속시킨 투플로 이루어진 테이블
    A가 5개 투플, B가 6개투플을 가지고 있다면
    결과로 30개의 투플을 가진 새로운 테이블이 생성됨

세타조인(Theta-Join)

일반형식

  • 릴레이션 R(X)의 속성 A, 릴레이션 S(Y)의 속성 B에 대하여
    R과 S를 A,B를 비교연산자로 비교한 것으로 카티션프로덕트를 셀렉트한것과 같음
  • 즉, 카티션프로덕트 결과를 A,B속성을 비교한 값으로 가져온 것
  • A와 B는 조인속성
  • AθB는 조인 조건식

결과

  • 카티션 프로덕트 결과에 투플조건식을 적용해 셀렉트연산을 실행한 결과

전제 조건

  • 피연산자인 양쪽 릴레이션(테이블)에 도메인이 같은(타입이 같은) 공통속성이 존재해야함.
  • 카티션 프로덕트는 피연산자인 두 릴레이션에 공통 속성이 없어도 연산이 실행됨

등가조인(Equi-join)

세타조인에서 조건식이 '='인경우임

  • 세타조인은 등가조인과 비등가조인으로 구분함

일반 형식

  • 릴레이션 R(X)의 속성 A, 릴레이션 S(Y)의 속성 B에 대해서
    A==B인경우를 뽑아 새로운 릴레이션을 만듬

결과

  • 릴레이션에 조인속성이 두 개 (A와 B)가 포함됨
  • 각 투플마다, A와 B에 있는 값은 동일함
  • 같은 값을 가진 조인 속성 중 하나는 제거해도 무방함.

자연조인(Natural Join)

정의

  1. 조인 속성을 명시하지 않고, 양쪽 릴레이션에 공통으로 있는 모든 속성을 조인 속성으로 등가 조인함(A==B의 조건으로 조인)
  2. 각각의 조인 속성에 대해서 등가 조인 결과에서 중복된 조인 속성 중 하나를 제거함.

일반 형식

  • 릴레이션 R(X),S(Y)의 조인속성을 Z라고 하면
    R⋈nS = 𝚷x∪y(R⋈z=zS)

조인 연산이 필요한 이유

최종적인 데이터테이블의 목적

  • 필요한 데이터를 하나의 데이터테이블로 모아서 보는 것이 목적임
  • 부모, 자식관계에 있는 테이블을 PK와 FK를 통해 가져와서 최종적으로 필요한 테이블을 만들 필요가 있음
  • 그 테이블을 조인 연산을 통해 만들어나가는 것
profile
초전도-개발자의 길

0개의 댓글