[DB] Relational Algebra

G·2023년 3월 13일
0

DB

목록 보기
4/11

Relation algebra란 함수형 언어로 사용되며, 하나 또는 두 개의 피연산자가 필요하며 결과값은 항상 하나의 relation이다.

basic operations

  • Select σ\sigma: 튜플을 선택
  • Project Π\Pi: 열을 선택
  • Union \cup:
  • Set difference -
  • Cartesian product ×\times
  • Rename ρ\rho

Examples

relation rr

σA=BandD>5(r)\sigma_{A =B and D>5}(r)

relation rr

σsalary85000(instructor)\sigma_{salary\geq 85000}(instructor)

relation rr

ΠA,C(r)\Pi_{A,C}(r)

두 가지를 조합하면 아래와 같다.
ΠID,Salary(σsalary85000(instructor))\Pi_{ID,Salary}(\sigma_{salary\geq 85000}(instructor)) or σsalary85000(ΠID,Salary(instructor))\sigma_{salary\geq 85000}(\Pi_{ID,Salary}(instructor))

둘 중 하나를 선택하는 조건은 중간 결과값이 작은 것을 먼저 처리하는 것이 좋다.

r×sr \times s

Natural Join(⋈)

r과 s를 schema R, S의 relation으로 가정하자.

R={A,B,C},S={B,D,E}R = \{A, B, C\}, S=\{B, D, E\}
RS={A,B,C,D,E}R \cup S=\{A,B,C,D,E\}
RS={B}R \cap S=\{B\}

RS={B}R \cap 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))\Pi_{ID, name, salary, instructor.dept\_name, building, budget}(\sigma_{instructor.dept\_name = department.dept\_name}(instructor\times department))

theta join

theta join은 아래와 같다.

rθs=σθ(r×s)r⋈_\theta s = \sigma_\theta(r \times s)

rsr\cup s

r과 s의 모든 tuple을 한 테이블로 생성한다.
(schema가 다르다면 union 연산을 절대 할 수 없다.)

rsr-s

relation r에 rsr\cap s부분을 제거한다.

ρx(E)\rho_x(E)

relation E의 이름을 재정의한다.

ρxA1,A2,...,An(E){\rho_x}_{A_1, A_2, ..., A_n}(E)

relation x의 attribute의 이름을 재정의한다.

profile
열심히 안 사는 사람

0개의 댓글