이 연재글은 Relation Algebra(관계대수)의 1번째 글입니다.

Relational Algebra(관계대수)

  • IBM의 에드가 F. Codd에 의해 처음 만들어진 관계형 대수학은 관계형 데이터베이스에 저장된 데이터를 모델링하고 쿼리를 정의하는 데 사용되는 수학적인 기호들로부터 만들어진 프로그래밍 언어의 의미를 형식화하는 접근법이다.
  • 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 언어로서 쿼리 언어에 대한 이론적 기반을 제공하는 것에 목적을 두고 있다.
  • 관계 대수에서 relation은 요소의 집합(tuple) 또는 어트리뷰트의 집합(행)을 가리킨다. 관계 대수는 이러한 relation을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로 피 연산자가 모두 relation이고, 연산 결과도 relation이라는 특성을 가지고 있다.
이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-1.png 입니다.

일반 집합 연산자

수학적 집합 이론에서 사용하는 연산자.

교집합(intersection, ∩)

합병 가능한 두 relation에 존재하는 튜플의 교집합을 구한다.
– R ∩ T = R – ( R -T )

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-2.png 입니다.

합집합(union, ∪)

합병 가능한 두 relation에 존재하는 튜플의 합집합을 구하고, 결과로 생성된 릴레이션에서 중복되는 튜플을 제거한다.
– R ∪ T

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-3.png 입니다.

차집합(Set Difference, -)

합병 가능한 두 relation 간의 차집합을 구하는 연산
– R – T

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-4.png 입니다.

교차곱 (catesian product, ⨯)

다른 연산자들과 달리 두 relation의 구조가 달라도 가능한 연산자로 각 relation의 모든 튜플들의 순서쌍을 구한다.
– R x T

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-5.png 입니다.

순수 관계 연산자

관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자를 말한다.

Selection : σ – sigma

Selection은 relation에 존재하는 tuple 중에서 조건을 만족하는 tuple의 부분집합을 구하여 새로운 relation을 만든다.
가로 행에 해당하는 tuple을 구하는 것이므로 수평 연산자라고도 한다.
σ condition (Relation) – Relation에서 조건(condition)을 만족하는 tuple을 반환

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-6.png 입니다.

projection : π – pie

주어진 relation에서 속성으로 제시된 attribute만을 추출하는 연산이다.
세로 열에 해당하는 attribute를 추출하는 것이므로 수직 연산자라고도 한다.
π comma seperated list of attributes (Relation) – Relation에서 주어진 attribute(컬럼)로만 구성된 tuple 반환

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-7.png 입니다.

Join

공통 속성을 중심으로 2개의 relation을 하나로 합쳐 새로운 relation을 만드는 연산으로
조인(join) 연산은  카티전 곱(cartesian product) + 선택 연산 (select operation)의 형태이다.

선택 연산의 비교 연산자가 = , < , > 등이 사용되는 연산이 theta join(세타조인)이며
세타 조인 중에서 특별히 비교연산자가 = 인 경우 equi join(동등 조인)이다.

동등 조인에서 중복되는 속성이 제거된 것이 natural join(자연조인)이다.

left outer join – 자연조인후 왼쪽 릴레이션의 조인조건에 일치 하지 않는 오른쪽 릴레이션의 행을 합친다.

right outer join – 자연조인후 오른쪽 릴레이션의 조인조건에 일치 하지 않는 왼쪽 릴레이션의 행을 합친다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-8-599x2048.png 입니다.

이외에도 full outer join, left/right semi join 등이 있다.

Division : R ÷ S

기준 릴레이션(R)에서 나누는 릴레이션(S)이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산이다. 특징으로는 Relation R이 Relation S의 모든 attribute(칼럼)을 포함하고 있어야 연산이 가능하다.

이미지에 대체텍스트 속성이 없습니다; 파일명은 ra-9.png 입니다.

기타 연산자

RENAME : ρ, ←

relation의 이름을 변경한다. SQL의 as와 동일.

Relation Rename( ρ )

π PD.maker, PD.model ρ PD Product = SELECT PD.maker, PD.model FROM Product as PD

Attribute Rename( ← )

ρ mk←maker, md←model π maker, model Product = SELECT maker as mk, model as md FROM Product

[참고]

https://en.wikipedia.org/wiki/Relational_algebra
https://www.guru99.com/relational-algebra-dbms.html
http://lig-membres.imag.fr/alemdar/wp-content/uploads/sites/186/2017/03/ra.pdf
https://m.blog.naver.com/bycho211/220965028145
https://dbis-uibk.github.io/relax/landing

연재글 이동
[다음글] Relational algebra – SQL Interpreter by Antlr