Relational Algebra
The relational algebra consists of a set of operations that take one or two relations as input and produce a new relation as their result.
"인풋으로 1 or 2개의 관계를 가지고 새 관계를 생성하는 것"을 관계 대수라고 한다.

사실 DB를 직접적으로 조회/제어함에 있어서 Relational Algebra를 쓸 수 있는건 아니고, 단지 SQL 쿼리를 던지는 데 있어서 Relational Algebra가 폭넓게 사용되는 것 뿐이다. 쨋든 여러가지 Operation과 Relational Algebra에 대해 알아보자.
Select Operation
select operation은 말 그대로 주어진 술어(given predicate)에 대한 튜플을 뱉어낸다. 그리스 소문자 sigma를 사용해 표기하며, 대충 아래와 같이 적을 수 있다.

참고로 Predicate에 들어갈 비교자로는 당연히 =, <, >가 있겠으며, wedge/vee(각각 AND/OR) 등의 비교자도 있다.
Project Operation
대충 어떤 속성만 보고 싶다고 해보자. 그럴 때 사용되는 것이 Project Operation으로, 그리스 소문자 pi를 사용해 표기한다.

Cartesian-Product Operation
통상적으로 cross로 표기되는 cartesian-product는, 두 릴레이션간의 정보를 결합시키는데 사용된다. 물론 집합에서의 카타시안 프로덕트와는 달리 DB는 좀 다르긴 하다. 전자가 (t1, t2)같은 튜플을 뱉어낸다면 - 후자는 단일 튜플을 뱉어내게 된다. 다시 말해서, Cartesian-Product는 두 릴레이션의 모든 튜플 조합을 생성해 낸다.


Join Operation
Cartesian Product에 Select를 갈긴 것

이라고 생각할 수 있고, 실제 표기는 아래와 같이 하게 된다. 대충 릴레이션 r(R) and s(S)가 있다고 해보고 seta를 Predicate라 하면....

Assignment Operation
Set Operation은 굉장히 당연한 소리를 하는 관계로 생략하도록 하자. 쨋든 위에서 짐작할 수 있다 싶이 Operation들로 도배를 하면 식이 난해해 지기 쉬운데, 프로그래밍의 Assignment마냥 operation 결과물을 쳐박을 수 있게 해주는 것이 바로 Assignment Operation이라고 할 수 있겠다.

Rename Operation
데이터베이스에서의 릴레이션과는 다르게, 관계 대수를 통해 튀어나온 결과는 이름 따위를 가지고 있지 않다. 그래서 간혹가다가 이름을 붙여주는 것이 더 나을 경우가 있으며, 그때 사용되는 것이 Rename Operator이다. Rename Operator의 경우 그리스 소문자 rho를 사용하며, 아래와 같이 표기하게 된다.
