관계 대수
관계 대수의 기본 연산자

Selection: 조건에 맞는 튜플(행)만 고르기
Projection: 조건에 맞는 열만 고르기
Cartesian-product: 곱집합 구하기
set-difference: 차집합 구하기 (-)
Union: 합집합 구하기 (or)
Renaming: 속성(필드)의 이름 수정하기
관계 대수의 부가 연산자

Intersection: 교집합 구하기 (and)
Join: 두 개이상의 릴레이션으로부터 정보를 결합 (Cartesian-product+selection)
Division: 이름 찾기
(ex) 모든 배들을 보존하고 있는 항해사의 이름을 찾으시오.
예시 (Projection 연산)

예시 (Selection 연산)

예시 (Selection + Projection 연산)

Union-Compatible이란?
합집합, 교집합, 차집합을 하려면 호환성이 있어야만 한다. 호환성이 있어야 한다는 것은 릴레이션에서 필드의 개수와 타입이 같아야 한다는 것이다.
예시 (Union, Intersection, Set-Difference)

S1 릴레이션과 S2 릴레이션은 Union-compatible하다.
따라서 합집합을 해서 튜플을 늘릴 수도 있고, 교집합을 해서 공통된 튜플만 가질 수도 있고 차집합을 해서 공통된 튜플을 뺄 수도 있는 것이다.
예시 (Cartesian-product)


예시 (Join 연산)

곱집합한 뒤 조건을 만족하는 튜플을 선택한다.
예시 (Equi-Join 연산)

곱집합한 뒤 적힌 속성에 해당하는 중복된 튜플을 선택한다.
예시 (Natural-Join 연산)

곱집합한 뒤 공통된 속성을 확인한다. 이후 중복된 튜플을 선택하는데, 공통된 속성은 하나만 선택해서 출력한다.
Natural-Join 연산의 다른 예제

예시 (Outer-Join 연산)
Right Outer Join: 오른쪽 릴레이션에 있는 튜플들 중 매칭이 안 된 것을 결과에 포함시킴
Left Outer Join: 왼쪽 릴레이션에 있는 튜플들 중 매칭이 안 된 것을 결과에 포함시킴
Full Outer Join: Right Outer Join + Left Outer Join
(매칭이 안 됐다: Natural Join을 한 결과에 해당 튜플이 없다)
예시 (Left-Outer-Join 연산)
일단 Natural Join하고 왼쪽(Offering)에 있는 튜플들 중 매칭이 안 된 것을 결과에 포함시킴

예시 (Right-Outer-Join 연산)
일단 Natural Join하고 오른쪽(Faculty)에 있는 튜플들 중 매칭이 안 된 것을 결과에 포함시킴

예시 (Full-Outer-Join 연산)
일단 Natural Join하고 왼쪽(Offering), 오른쪽(Faculty)에 있는 튜플들 중 매칭이 안 된 것을 결과에 포함시킴

예시 (Division 연산)
S가 P를 공급한다고 할 때 P1과 P2를 모두 공급하는 S는 무엇인가요?

정답: S3
S가 P를 공급한다고 할 때 P1,P2,P3를 모두 공급하는 S는 무엇인가요?

정답: S2
예시 (all disqualified x values 연산)

예시 (assignment 연산)
복잡한 수식을 간단하게 줄일 때 사용함

Disqualified를 temp2에 넣으면서 all disqualified x values 연산을 진행할 수 있음