Relation algebra란 함수형 언어로 사용되며, 하나 또는 두 개의 피연산자가 필요하며 결과값은 항상 하나의 relation이다.
basic operations
- Select σ: 튜플을 선택
- Project Π: 열을 선택
- Union ∪:
- Set difference −
- Cartesian product ×
- Rename ρ
Examples
relation r
σA=BandD>5(r)
relation r
σsalary≥85000(instructor)
relation r
ΠA,C(r)
두 가지를 조합하면 아래와 같다.
ΠID,Salary(σsalary≥85000(instructor)) or σsalary≥85000(ΠID,Salary(instructor))
둘 중 하나를 선택하는 조건은 중간 결과값이 작은 것을 먼저 처리하는 것이 좋다.
r×s
Natural Join(⋈)
r과 s를 schema R, S의 relation으로 가정하자.
R={A,B,C},S={B,D,E}
R∪S={A,B,C,D,E}
R∩S={B}
R∩S={B}을 충족하는 tuple들의 카테시안 프로젝트를 한 relation을 반환한다.
(Natural join은 중복되는 속성이 두 개 이상일 경우 모두 같아야 한다.)
(카테시안 프로젝트와 다른 점은 중복되는 속성은 한 번만 표현한다.)
위의 natural join은 basic operation이 아니다, basic operation으로 수행하면 다음과 같다.
ΠID,name,salary,instructor.dept_name,building,budget(σinstructor.dept_name=department.dept_name(instructor×department))
theta join
theta join은 아래와 같다.
r⋈θs=σθ(r×s)
r∪s
r과 s의 모든 tuple을 한 테이블로 생성한다.
(schema가 다르다면 union 연산을 절대 할 수 없다.)
r−s
relation r에 r∩s부분을 제거한다.
ρx(E)
relation E의 이름을 재정의한다.
ρxA1,A2,...,An(E)
relation x의 attribute의 이름을 재정의한다.