서울대학교 이상구 교수님의 SNUON 강의 데이타베이스: 빅데이터 시대의 필수 정보관리 개론와 Database System Concepts 7th Edition의 내용을 바탕으로 정리한 내용입니다.
릴레이션 대수는 하나, 혹은 두 릴레이션을 입력으로 가지고 새 릴레이션을 결과로 가지는 연산자들의 집합을 가지고 있다.
1. Select Operation
select 연산은 술부를 만족하는 튜플들을 골라내는 연산으로 다음과 같이 표기한다.
여기서 p는 술부(prediate)로, 해당 연산의 결과로 나오는 집합의 원소들이 만족해야 하는 조건을 가리킨다. 즉 다음과 같이 정의할 수 있다.
σp(r)={t∣t∈r and p(t)}
p는 참거짓을 가릴 수 있는 명제 계산식으로, ∧ (and), ∨ (or), ¬ (not)으로 연결된 항들을 포함한다. 각 항은 애트리뷰트와 애트리뷰트의 연산이거나 애트리뷰트와 상수의 연산이다. 연산에는 다음의 것들이 있다 : =,=,>,≥,<,≤
2. Project Operation
project 연산은 릴레이션에서 특정 애트리뷰트들만 남기는 단항 연산으로, 다음과 같이 표기한다.
attribute1,attribute2,...∏(r)
attribute1,attribute2,...에는 남길 애트리뷰트의 이름을 명시하며, 결과는 릴레이션에서 이와 같이 명시되지 않은 컬럼을 지운 것과 같다.
릴레이션 연산의 결과도 릴레이션이라는 사실을 명심하자. 즉 연산 결과들은 다시 피연산항으로 사용될 수 있다. 이를 통해 기본 연산으로 더 복잡한 연산을 만들 수 있다.
3. Set Operations
Union Operation
union은 집합에서의 합집합 연산이다.
r∪s={t∣t∈r or t∈s}
이 연산이 유효한 것이 되려면
- r,s는 같은 수의 애트리뷰트를 가져야 하고
- r,s의 애트리뷰트 도메인은 서로 호환 가능해야 한다.
- 각 i에 대해, 두 피연산 릴레이션의 i번째 애트리뷰트는 서로 같아야 한다.
- 애트리뷰트의 이름까지 같을 필요는 없지만, 해당 애트리뷰트의 도메인은 동일해야 한다.
이 조건을 가리켜 호환가능성(union compatibility)이라 말한다. 이때 결과에서 중복은 제거된다.
Set Difference Operation
set difference는 집합에서의 차집합 연산이다.
r−s={t∣t∈r and t∈s}
이 연산은 union과 마찬가지로 호환가능성을 만족해야 한다.
Intersection Operation
intersection은 교집합을 구하는 연산이다.
r∩s={t∣t∈r and t∈s}
이 또한 호환 가능한 릴레이션 사이에서만 사용되어야 한다.
4. Cartesian Product Operation
Cartesian product 연산은 다음과 같이 정의된다.
r×s={tq∣t∈r and q∈s}
결과는 두 피연산 릴레이션으로 만들 수 있는 가능한 모든 조합을 행으로 가지는 릴레이션이다. 만약 r과 s의 애트리뷰트 집합들이 서로소 집합이 아니라면 중복되는 이름의 애트리뷰트는 재명명할 필요가 있다.
5. Rename Operation
릴레이션 대수 식의 결과를 명명하는 연산으로, 한 릴레이션을 하나 이상의 이름으로 부를 수 있게 한다.
위는 식 E를 이름 N으로 바꾼다.
만약 E가 n개의 애트리뷰트를 가지고 있는 경우,
ρN(A1,A2,...,AN)(E)
는 식 E의 결과의 이름을 N으로 명명하고, 각 애트리뷰트의 이름을 A1,A2,...,AN으로 재명명한다.
6. Natural-Join Operation
natural-Join은 두 스키마가 공유하는 애트리뷰트의 값을 기준으로 조인하는 연산으로, 다음과 같이 표기한다.
연산의 결과는 스키마 R∪S의 릴레이션으로, 다음과 같은 r로부터의 tr, s로부터의 ts 튜플 쌍을 통해 얻어진다.
- 만약 tr과 ts가 R∩S의 애트리뷰트에서 같은 값을 가진다면, 튜플 R에서는 tr과, S에서는 ts와 같은 값을 가지는 튜플 t가 결과에 더해진다.
natural-Join은 기본 연산이 아니라 다른 연산들의 조합으로 표현할 수 있는데, 매우 자주 사용되는 연산이기에 별도의 연산으로 표현한다.
Natural join의 성질
natural-join은 아래의 성질을 가지고 있다.
- ∏A1,...,Ak(r)∩∏A1,...Ak(s)=∏A1,...,Ak(r⋈s)
- (r⋈s)⋈t=r⋈(s⋈t)
- 만약 R=S이면 r⋈s=r∩s다.
- 만약 R∩S이면 r⋈s=r×s다.
Theta Join
조인되는 두 릴레이션의 속성을 비교해 조건(θ)을 만족하는 튜플을 반환한다. 다음과 같이 표기한다.
r⋈θs=σθ(r×s)
7. Assignment Operation
←로 표기되는 assignment 연산은 프로그래밍 언어에서의 할당과 같이 동작한다. 실제로 어떤 연산을 하는 건 아니고, 복잡한 쿼리를 표현하는 간단한 방식을 제공한다.
항상 임시 릴레이션 변수에 대해서만 만들어져야 한다. 오른쪽의 결과가 왼쪽의 릴레이션 변수에 할당되며, 해당 변수는 후속 식들에서 사용될 수 있다.
DB편도 자주 연재해주세요