[DB] 관계 대수

정의정·2023년 8월 12일
0

DB

목록 보기
5/9
post-thumbnail

💡 관계 대수(Relation Algebra)

모든 DBMS는 데이터 처리를 위해 하나 이상의 데이터 언어를 제공한다.

Formal query language

👉🏻 수학기호(notation)을 사용하여 데이터 처리를 기술한 언어이다.
👉🏻 새로운 언어의 개념과 유용성을 검증하는 기준이다.
👉🏻 관계 대수(Relation algebra)

Conmmercial language

👉🏻 수학적인 원리를 기반으로 사용하기 쉽게 만들어진 언어
👉🏻 관계 대수로 만들어진 모든 질의가 표현 가능(Relationally conplete)하다.
👉🏻 SQL

🌟 관계 대수 연산자(Relational Algebra Operations)

피연산자는 하나 또는 두 개의 릴레이션(Unary and binary operations)가 된다.
각 연산자의 연산 결과는 새로운 릴레이션이다.
연산의 합성(compose)&체이닝(chaining)이 가능하다.

🌟 관계 대수 연산자 종류

1. select

👉🏻 Notation: σ\sigma
👉🏻 σp(r)={ttrts}\sigma_p(r)=\{t|t\in r\cap t\in s\}
👉🏻 Unary operation: 릴레이션 하나만 가지고 동작하는 연산자이다.
👉🏻 pp (selection predicate): 비교연산자(>,<,,,=,\gt, \lt, \geq, \leq, =, \ne)와 논리연산자(¬,,¬, \cup, \cap)를 이용하여 속성의 값을 비교하는 비교식이다.
👉🏻 튜플 중 pp를 만족하는 튜플만을 포함하는 릴레이션을 반환하는 연산자이다.

2. Project

👉🏻 Notation: π\pi
👉🏻 πa(r)={t.Atr}\pi_a(r)=\{t.A|t\in r\}
👉🏻 Unary operation: 릴레이션 하나만 가지고 동작하는 연산자이다.
👉🏻 AA: 릴레이션의 속성
👉🏻 튜플 중 rr에 포함되는 AA속성을 가지는 릴레이션을 반환하는 연산자이다.

3. Union

👉🏻 Notation: rsr\cup s
👉🏻 rs={ttrts}r\cup s=\{t|t\in r\cup t\in s\}
👉🏻 Binary operation: 릴레이션 두 개를 가지고 동작하는 연산자이다.
👉🏻 Union이 가능한 조건: 두 릴레이션의 속성 개수가 같고, 대응되는 속성의 도메인이 같다.
👉🏻 두 릴레이션을 합쳐 새로운 릴레이션을 반환하는 연산자이다.

4. Difference

👉🏻 Notation: rsr-s
👉🏻 rs={ttrs}r-s=\{t|t\in r\cap \notin s\}
👉🏻 Binary operation: 릴레이션 두 개를 가지고 동작하는 연산자이다.
👉🏻 Difference 가능한 조건: 두 릴레이션의 속성 개수가 같고, 대응되는 속성의 도메인이 같다.
👉🏻 rr에는 포함되지만, ss에는 포함되지 않는 튜플을 가지는 릴레이션을 반환하는 연산자이다.

5. Intersection

👉🏻 Notation: rsr\cap s
👉🏻 rs={ttrts}r\cap s=\{t|t\in r\cap t\in s\}
👉🏻 Binary operation: 릴레이션 두 개를 가지고 동작하는 연산자이다.
👉🏻 Intersection 가능한 조건: 두 릴레이션의 속성 개수가 같고 대응되는 속성의 도메인이 같다.
👉🏻 rr에 포함되면서 ss에도 포함되는 튜플을 가지는 릴레이션을 반환하는 연산자이다.

6. Cartesian product

👉🏻 Notation: r×sr\times s
👉🏻 r×s={a,bar,bs}r\times s=\{a, b|a\in r, b\in s\}
👉🏻 Cartesian product에 조건을 합치면 join operation이다.
👉🏻 rr에 만족하는 aa튜플과, ss에 만족하는 bb튜플을 모두 포함하는 릴레이션을 반환하는 연산자이다.

7. Natural join

👉🏻 Notation: rsr⋈s
👉🏻 X=rsX = r\cap s
👉🏻 s1=srs1 = s-r
👉🏻 rs=πr,s1(σr.x=s.x(r×s))r⋈s=\pi_r, s1(\sigma _{r.x}=_{s.x}(r\times s))
👉🏻 두 릴레이션을 합쳐서 같은 속성 간에 같은 값을 갖고 있는 튜플만을 포함하는 릴레이션을 반환하는 연산자이다.

8. Theta join

👉🏻 Notation: rθsr⋈_\theta s
👉🏻 rθs=σθ(r×s)r⋈_\theta s=\sigma_\theta (r\times s)
👉🏻 Natural join으로 나온 릴레이션 중 조건에 맞는 튜플만을 포함하는 릴레이션을 반환하는 연산자이다.

9. Outer join

👉🏻 Theta join에 의해 사라진 정보를 보전하기 위한 조인 연산자의 확장 버전이다.
👉🏻 조인 결과를 구한 후 한 릴레이션에서 제외된 모든 튜플을 조인 결과 릴레이션에 추가한다.

Left-outer join✔️

👉🏻 Notation: rsr⟕s
👉🏻 왼쪽 릴레이션의 튜플을 추가한다.

Right-outer join✔️

👉🏻 Notation: rsr⟖s
👉🏻 오른쪽 릴레이션의 튜플을 추가한다.

Full-outer join✔️

👉🏻 Notation: rsr⟗s
👉🏻 모든 릴레이션의 튜플을 추가한다.

profile
배움 기록

0개의 댓글