Relational Algebra
select: σ
project: ∏
Cartesian product: X
union: ∪
set difference: -
rename: ρ
Select -> σp(r)
Select는 r에서 주어진 조건을 만족하는 튜플들을 반환해줍니다.
instructor
테이블에서 소속 학과가 Physics
인 튜플을 모두 선택해주세요
조건에는 비교 및 논리 연산을 섞어 사용할 수 있습니다.
instructor
테이블에서 소속학과가 Physics
이고 연봉이 90000이 넘는 튜플을 모두 선택해주세요조건에 각 attribute들끼리 비교할 수도 있습니다.
department
테이블에서 소속 학과 이름이 건물 이름과 동일한 튜플을 모두 선택해주세요Project -> ∏A1, A2, ..., Ak(r)
Project는 r에서 A1, A2, ..., Ak에 해당하는 attribute들을 반환해줍니다.
instructor
테이블에서 ID, name, salary들만 뽑아서 보여주세요
r에 테이블이 아닌 연산 결과를 넣을 수 있습니다.
instructor
테이블에서 소속 학과가 Physics
인 튜플들의 name만 뽑아서 보여주세요Cartesian Product -> r1 X r2
Cartesian Product는 r1, r2에서 조합 가능한 모든 경우를 합쳐줍니다.
Attribute이름이 r1, r2에서 겹친다면, 구분하여 합쳐줍니다.
instructor의 ID
, teaches의 ID
가 겹칠 때instructor X teaches
-> instructor.ID
, teaches.ID
로 합쳐줍니다.Cartesian Product는 필요한 정보를 가져올 때, 그 양에 비해 생성되는 테이블이 너무 크다는 단점이 있습니다.
이를 보완하기 위해, 기본 연산에는 포함되지 않지만 Join 연산이 등장하였습니다.
Join -> r ⋈θ s ( = σθ(r X s) )
Join은 r X s에서 원하는 정보만 조건으로 선별해 튜플들로 반환합니다.
instructor X teaches
에서 instructor.ID
와 teaches.ID
가 일치하는 튜플을 모두 선택해주세요 라는 의미입니다.Union -> r ∪ s
Union은 두 테이블을 합쳐줍니다.
Union이 가능하려면 다음 두 가지 조건을 갖추어야 합니다.
section
테이블에서 2017년 가을학기의 course_id
와 2018년 봄학기의 course_id
를 합쳐서 보여주세요
Set Difference -> r - s
Set diference는 r에 있는 값들 중 s에 있는 값들을 제거한 결과를 반환합니다.
Set difference는 Union과 연산 가능 조건이 일치합니다.
section
테이블에서 2017년 가을학기의 course_id
중 2018년 봄학기에도 있는 course_id
는 제외하여 보여주세요
Rename -> ρx(E)
Rename은 E의 값들의 이름을 x로 바꾸어줍니다. 이는 모든 Combining시에, 두 테이블의 attribute에서 이름이 같은 값들이 있다면
이름 충돌이 빈번히 일어나므로 Renaming을 사용하여 충돌을 막아줄 수 있기 때문에 사용합니다.
(instructor.ID, name, ..., teaches.ID, course_id, ..., year)
<ID 이름 충돌>(ID, name, dept_name, ..., t_ID, course_id, ..., year)
<이름 충돌 X>etc
위 두 연산의 결과는 같습니다.
절차는 다르지만 결과가 같을 때: equivalent, 절차와 결과가 같을 때: identical 이라 하고,
따라서 위의 수식은 equivalent하지만 identical하지 않습니다.