[DB] 3. Relational Algebra

Park Yeongseo·2024년 2월 7일
1

DB

목록 보기
4/9
post-thumbnail

서울대학교 이상구 교수님의 SNUON 강의 데이타베이스: 빅데이터 시대의 필수 정보관리 개론Database System Concepts 7th Edition의 내용을 바탕으로 정리한 내용입니다.

릴레이션 대수는 하나, 혹은 두 릴레이션을 입력으로 가지고 새 릴레이션을 결과로 가지는 연산자들의 집합을 가지고 있다.

1. Select Operation

select 연산은 술부를 만족하는 튜플들을 골라내는 연산으로 다음과 같이 표기한다.

σp(r)\sigma_p(r)

여기서 pp술부(prediate)로, 해당 연산의 결과로 나오는 집합의 원소들이 만족해야 하는 조건을 가리킨다. 즉 다음과 같이 정의할 수 있다.

σp(r)={ttr and p(t)}\sigma_p(r) = \{t | t \in r\ and\ p(t)\}

pp는 참거짓을 가릴 수 있는 명제 계산식으로, \land (and), \lor (or), ¬\neg (not)으로 연결된 항들을 포함한다. 각 항은 애트리뷰트와 애트리뷰트의 연산이거나 애트리뷰트와 상수의 연산이다. 연산에는 다음의 것들이 있다 : =,,>,,<,=, \neq, >, \geq, <, \leq

2. Project Operation

project 연산은 릴레이션에서 특정 애트리뷰트들만 남기는 단항 연산으로, 다음과 같이 표기한다.

attribute1,attribute2,...(r)\prod_{attribute1, attribute2, ...}(r)

attribute1,attribute2,...attribute1, attribute2,...에는 남길 애트리뷰트의 이름을 명시하며, 결과는 릴레이션에서 이와 같이 명시되지 않은 컬럼을 지운 것과 같다.

릴레이션 연산의 결과도 릴레이션이라는 사실을 명심하자. 즉 연산 결과들은 다시 피연산항으로 사용될 수 있다. 이를 통해 기본 연산으로 더 복잡한 연산을 만들 수 있다.

3. Set Operations

Union Operation

union은 집합에서의 합집합 연산이다.

rs={ttr or ts}r \cup s = \{t| t \in r\ or\ t \in s \}

이 연산이 유효한 것이 되려면

  1. r,sr, s는 같은 수의 애트리뷰트를 가져야 하고
  2. r,sr, s의 애트리뷰트 도메인은 서로 호환 가능해야 한다.
    • ii에 대해, 두 피연산 릴레이션의 ii번째 애트리뷰트는 서로 같아야 한다.
    • 애트리뷰트의 이름까지 같을 필요는 없지만, 해당 애트리뷰트의 도메인은 동일해야 한다.

이 조건을 가리켜 호환가능성(union compatibility)이라 말한다. 이때 결과에서 중복은 제거된다.

Set Difference Operation

set difference는 집합에서의 차집합 연산이다.

rs={ttr and t∉s}r - s = \{t | t \in r\ and\ t \not\in s\}

이 연산은 union과 마찬가지로 호환가능성을 만족해야 한다.

Intersection Operation

intersection은 교집합을 구하는 연산이다.

rs={ttr and ts}r \cap s = \{t | t \in r\ and\ t \in s\}

이 또한 호환 가능한 릴레이션 사이에서만 사용되어야 한다.

4. Cartesian Product Operation

Cartesian product 연산은 다음과 같이 정의된다.

r×s={tqtr and qs}r \times s = \{tq | t \in r\ and\ q \in s \}

결과는 두 피연산 릴레이션으로 만들 수 있는 가능한 모든 조합을 행으로 가지는 릴레이션이다. 만약 rrss의 애트리뷰트 집합들이 서로소 집합이 아니라면 중복되는 이름의 애트리뷰트는 재명명할 필요가 있다.

5. Rename Operation

릴레이션 대수 식의 결과를 명명하는 연산으로, 한 릴레이션을 하나 이상의 이름으로 부를 수 있게 한다.

ρN(E)\rho_N(E)

위는 식 EE를 이름 NN으로 바꾼다.

만약 EEnn개의 애트리뷰트를 가지고 있는 경우,

ρN(A1,A2,...,AN)(E)\rho_N(A_1, A_2, ..., A_N) (E)

는 식 EE의 결과의 이름을 NN으로 명명하고, 각 애트리뷰트의 이름을 A1,A2,...,ANA_1, A_2, ..., A_N으로 재명명한다.

6. Natural-Join Operation

natural-Join은 두 스키마가 공유하는 애트리뷰트의 값을 기준으로 조인하는 연산으로, 다음과 같이 표기한다.

rsr \bowtie s

연산의 결과는 스키마 RSR \cup S의 릴레이션으로, 다음과 같은 rr로부터의 trt_r, ss로부터의 tst_s 튜플 쌍을 통해 얻어진다.

  • 만약 trt_rtst_sRSR \cap S의 애트리뷰트에서 같은 값을 가진다면, 튜플 RR에서는 trt_r과, SS에서는 tst_s와 같은 값을 가지는 튜플 tt가 결과에 더해진다.

natural-Join은 기본 연산이 아니라 다른 연산들의 조합으로 표현할 수 있는데, 매우 자주 사용되는 연산이기에 별도의 연산으로 표현한다.

Natural join의 성질

natural-join은 아래의 성질을 가지고 있다.

  • A1,...,Ak(r)A1,...Ak(s)=A1,...,Ak(rs)\prod_{A1, ..., Ak}(r) \cap \prod_{A1,...Ak}(s) = \prod_{A1, ..., Ak}(r \bowtie s)
  • (rs)t=r(st)(r \bowtie s) \bowtie t = r \bowtie (s \bowtie t)
  • 만약 R=SR =S이면 rs=rsr \bowtie s = r \cap s다.
  • 만약 RSR \cap S이면 rs=r×sr \bowtie s = r \times s다.

Theta Join

조인되는 두 릴레이션의 속성을 비교해 조건(θ\theta)을 만족하는 튜플을 반환한다. 다음과 같이 표기한다.

rθs=σθ(r×s)r \bowtie _\theta s = \sigma _\theta(r \times s)

7. Assignment Operation

\leftarrow로 표기되는 assignment 연산은 프로그래밍 언어에서의 할당과 같이 동작한다. 실제로 어떤 연산을 하는 건 아니고, 복잡한 쿼리를 표현하는 간단한 방식을 제공한다.

항상 임시 릴레이션 변수에 대해서만 만들어져야 한다. 오른쪽의 결과가 왼쪽의 릴레이션 변수에 할당되며, 해당 변수는 후속 식들에서 사용될 수 있다.

2개의 댓글

comment-user-thumbnail
2024년 2월 7일

DB편도 자주 연재해주세요

1개의 답글

관련 채용 정보