Relational algebra
algebra는 대수라는 뜻으로 수 대신 문자를 사용하는 학문에서 유래된 말입니다.
Relational algebra는 데이터베이스의 relation 연산에 사용되는 문자 또는 기호를 말합니다.
relation연산은 relation, attribute, tuple의 값을 이용하여 또다른 relation을 만들어 내어 사용자에게 출력하는 연산입니다.

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과 연산하여 의미있는 결과를 도출할 수 있습니다.

'CS > DataBase' 카테고리의 다른 글
| SQL(2) - Null value, Aggregate Function, Nested Sebqueries (0) | 2022.03.31 |
|---|---|
| SQL - join, rename, string, set (0) | 2022.03.31 |
| Relation과 key (0) | 2022.03.28 |
| 데이터베이스 기본? (0) | 2022.03.28 |
| 데이터베이스만 할 수 있는 일 (0) | 2022.03.19 |