CS/DataBase

Relational algebra

reko_ 2022. 3. 31. 20:32

Relational algebra

 

 

algebra는 대수라는 뜻으로 수 대신 문자를 사용하는 학문에서 유래된 말입니다.

Relational algebra는 데이터베이스의 relation 연산에 사용되는 문자 또는 기호를 말합니다. 

relation연산은 relation, attribute, tuple의 값을 이용하여 또다른 relation을 만들어 내어 사용자에게 출력하는 연산입니다.

출처 - A Quick Guide to Relational Algebra Operators in DBMS(Vijini Mallawaarachchi)

 

 

 

Declarative vs Dunctional language

Relational algebra는 기본적으로 functional language입니다. 

functional language란 declarative language와 같이 A = B + C 정의 하는 언어가 아니라 모두 함수 식으로 작동되는 언어입니다.

위 식을 functional language로 표현하면 Assign(Add(B+C), A) 정도가 될겁니다.

 

 

이제 relation algebra의 표현식들을 하나하나 살펴보겠습니다.

 

 


 

 

Select

select는 조건에 맞는 tuple을 조회하며, σ으로 표시합니다.

밑 그림의 relation의 이름이 r이라고 할 때

 

 

 

 

 

 

 

σ 뒤에 가져올 tuple의 조건을 적어주고 그 뒤에 relation을 적으면 그 결과가 또하나의 다른 relation으로 나타납니다. 

SQL문에서는 where절의 역할을 한다고 볼 수 있습니다. sql의 select절과 헷갈릴 수 있습니다..

 

 

Project

Project 특정 칼럼을 조회할 때 쓰이며 π로 표시합니다.

π 뒤에 조회할 attribute를 적고 그 attribute가 존재하는 relation을 적으면 조건에 맞는 relation을 나타내는데 relation특성상 tuple의 중복을 알아서  제거합니다. 

 

 

Natural Join

 

natural join은 두 relation의 카티시안 곱에서 중복을 제거한 relation을 반환하며 다음과 같이 표기합니다.

 

위 그림에서 r X s (카타시안 곱)을 수행하면 튜플의 수에서 2 x 4를 한 8개의 tuple이 나옵니다.

 

 

또 아래 그림의 relation 들에 natural join을 수행하면,

 

r X s에서 tuple의 중복을 제거한 relation으로 결과가 나오는 것을 볼 수 있습니다.

Theta join

Theta join은 natural join에서 사용자가 지정한 조건에 맞는 relation을 결과로 나타냅니다.

 

Union

 

union 연산은 합집합이라고 생각하면 되겠습니다. 두 relation의 합집합에 해당하는 relation 나타냅니다.

Set difference

 

두 relation의 차집합입니다.

Rename

 

relation에 이름을 부여하고 사용할 수 있습니다.

연산 중간에 껴서 새로운 relation을 만들고 그것을 다른 relation과 연산하여 의미있는 결과를 도출할 수 있습니다.