관계 대수

관계 데이터 모델의 정형적 언어

  • 관계 해석(relational calculus): 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어
  • 관계 대수(relational algebra): 어떻게 질의를 수행할 것인가를 명시하는 절차적 언어
    • 상용 관계 DBMS들에서 널리 사용되는 SQL의 이론적인 기초
    • SQL을 구현하고 최적화하기 위해 DBMS의 내부언어로서도 사용

관계 대수

관계 해석과 함께 릴레이션을 다루는 대표적인 이론적 방법

실렉션 연산자

  • 단항 연산자
  • 한 릴레이션에서 조건에 만족하는 부분집합을 생성한다.

프로젝션 연산자

  • 한 릴레이션의 애트리뷰트들의 부분 집합을 구한다

집합 연산자

  • 이항 연산자
  • 릴레이션이 투플들의 집합이기 때문에 기존의 집합 연산이 릴레이션에 적용된다.
  • 합집합 연산자
    • 두 릴레이션 R과 S의 합집합 R S는 R 또는 S에 있거나 R과 S 모두에 속한 투플들로 이루어진 릴레이션
    • 결과 릴레이션에서 중복된 투플들은 제외된다
    • 결과 릴레이션의 차수는 R 또는 S의 차수와 같으며, 결과 릴레이션의 애트리뷰트 이름들은 R의 애트리뷰트들의 이름과 같거나 S의 애트리뷰트들의 이름과 같다.
  • 교집합 연산자
    • 두 릴레이션 R과 S의 교집합 R S는 R과 S 모두에 속한 투플들로 이루어진 릴레이션
    • 결과 릴레이션의 차수는 R 또는 S의 차수와 같으며, 결과 릴레이션의 애트리뷰트 이름들은 R의 애트리뷰트들의 이름과 같거나 S의 애트리뷰트들의 이름과 같다
  • 차집합 연산자
    • 두 릴레이션 R과 S의 차집합 R - S는 R에는 속하지만 S에는 속하지 않은 투플들로 이루어진 릴레이션
    • 결과 릴레이션의 차수는 R 또는 S의 차수와 같으며, 결과 릴레이션의 애트리뷰트 이름들은 R의 애트리뷰트들의 이름과 같거나 S의 애트리뷰트들의 이름과 같다

카티션 곱 연산자

두 릴레이션의 투플들의 모든 가능한 조합으로 이루어진 릴레이션

조인 연산자

두 개의 릴레이션으로부터 연관된 투플들을 결합하는 연산자

  • 세타 조인(theta join) : 두 릴레이션의 조인 조건을 만족하는 투플들을 합친 릴레이션
  • 동등 조인(equl join) : 세타 조인 중 조인 조건 연산자가 =인 조인
  • 자연 조인(natural join, *) : 동등 조인의 결과 릴레이션에서 조인 애트리뷰트를 제외한 조인
  • 외부 조인(outer join)
  • 세미 조인(semi join)

디비전 연산자

차수가 n+m인 릴레이션 R(A1, A2, …, An, B1, B2, …, Bm)과 차수가 m인 릴레이션 S(B1, B2, …, Bm)의 디비전 R S는 차수가 n이고, S에 속하는 모든 투플 u에 대하여 투플 tu(투플 t와 투플 u을 결합한 것)가 R에 존재하는 투플 t들의 집합

추가된 관계 대수 연산자 - 집단함수

  • SUM
  • AVG
  • MAX
  • MIN
  • COUNT

외부 조인

상대 릴레이션에서 대응되는 투플을 갖지 못하는 투플이나 조인 애트리뷰트에 널값이 들어있는 투플들을 다루기 위해 조인 연산을 확장한 조인.

두 릴레이션에서 대응되는 투플들을 결합하면서, 널값을 갖는 투플도 결과에 포함시킨다.

왼쪽 외부 조인

릴레이션 R과 S의 왼쪽 외부 조인 연산은 R의 모든 투플들을 결과에 포함시키고, 만일 릴레이션 S에 관련된 투플이 없으면 결과 릴레이션에서 릴레이션 S의 애트리뷰트들은 널값으로 채운다

오른쪽 외부 조인

릴레이션 R와 S의 오른쪽 외부 조인 연산은 S의 모든 투플들을 결과에 포함시키고, 만일 릴레이션 R에 관련된 투플이 없으면 결과 릴레이션에서 릴레이션 R의 애트리뷰트들은 널값으로 채움

완전 외부 조인

릴레이션 R와 S의 완전 외부 조인 연산은 R과 S의 모든 투플들을 결과에 포함시키고, 만일 상대 릴레이션에 관련된 투플이 없으면 결과 릴레이션에서 상대 릴레이션의 애트리뷰트들은 널값으로 채움

김땡땡's blog

김땡땡's blog

김땡땡