진박사의 일상

[데베시] 7강 - Relational Algebra 본문

프로그래밍/공부

[데베시] 7강 - Relational Algebra

진박사. 2021. 10. 25. 04:26

Relational Algebra

- relational model에서 검색 요청(retrieval requests)를 구체화하기 위해 위해 사용되는 operations의 집합

- retrieval의 결과는 새로운 relation으로 표현됨

Types - SELECT, PROJECT, Set operations, JOIN, DIVISION ...

 

SELECT Operation : σ<selection condition>(R)

- relation R로부터 selection condition c를 만족하는 tuple의 일부 집합을 골라내는 연산

- Selection condition c = Boolean Expression (<속성명><비교연산><값> or <속성명1><비교연산><속성명2>)

- c를 만족하는 r(R)의 tuple들로만 구성된 relation이 최종 결과물

- Ex) σ<Dno=4>(EMPLOYEE), σ<Salary>30000>(EMPLOYEE)

 

PROJECT Operation : π<attribute list>(R)

- relation R로부터 attribute list L에 나타나는 columns를 선택(그 외에는 제거)

- attribute list L에 속하는 attribute만 포함하는 tuple로 구성된 reltion이 최종 결과물

- PROJECT 연산의 결과는 distinct tuple의 set (중복 x)

- EX) π<Sex, Salary>(EMPLOYEE) - 만약 {"M", 30000}에 해당하는 tuple이 2개 이상이라면 하나만 표시

- 다른 이름으로 할당하면 rename으로 사용할 수 있음.

 

Relational Algebra Expressions

- Relational Algebra Operations의 나열로 표현 가능

- 이유 : relational algebra expression의 결과도 relation이므로 (닫혀있음)

- 이를 사용하여 복잡한 쿼리를 표현 가능

- 바로 이어서 사용할수도 있고 다른 relation에 할당해서 이어 사용할 수도 있음.

 

Set Operations

- UNION operation : R1 ∪ R2

- INTERSECTION operation : R1 ∩ R2

- SET DIFFERENCE (MINUS) operation : R1 - R2

- CARTESIAN PRODUCT (CROSS PRODUCT) operation : R1 x R2

- Union compatibility (type compatibility)호환성

  - 두 relations은 반드시 같은 타입의 tuple을 가져야 한다. (만약 그렇지 않다면 의미 없는 결과)

  - ∪,∩, - 연산에 대해 (1) 같은 수의 Attribute가 있어야 한다. (2) 각 Attribute의 domain이 같거나 비슷해야 한다.( dom(A) = dom(B) )

  - ex) STUDENT(Fn, Ln) 과 INSTRUCTOR(Fname, Lname)의 ∪,∩, - 연산이 유효한가? -> 둘 다 attribute 수가 같고 각 attribute의 domain이 VARCHAR로 같기 때문에 유효함

 

Catersian product Operation

- R(A1, A2, ..., An) x S(B1, B2, ..., Bm) -> nxm tuple을 가진 relation

- R의 모든 튜플과 S의 모든 튜플의 가능한 모든 조합을 모은 relation이 결과물

- selection과 함께 쓰여야 일반적으로 유용한 결과를 얻을 수 있음.

- Ex) 여성 사원의 부양가족의 이름을 검색하시오

Cartesian product ->select 로 조건에 맞는 경우만 골라내기

 

JOIN Operation

- 필요성 : 서로 다른 relation에 저장된 tuple간의 관계를 나타내기 위해 사용

- Cartesian product를 사용하여 x 한번 select 한번 사용해서 나타낼 수 있음.

- ex) ALL_PRODUCT <- DEPARTMENT x EMPLOYEE / DEPT_MGR <- select<Mgr_ssn=Ssn> ALL_PRODUCT / RESULT <- project<Dname, Lname, Fname>(DEPT_MGR

 

THETA JOIN Operation

- R⋈<join condition>S 로 표현

- 한 relation과 다른 relation에서 join condition을 만족하는 tuple의 조합을 새로운 relation으로 반환

- θ = {=, <, <=, >, >=, !=} 일 때 <condition> = Ai θ Bj, join condition c = <condition>의 AND 조합

- CARTESIAN PRODUCT -> SELECT 와 동일하게 동작

 

EQUIJOIN Operation

- θ = '=' 일 때의 JOIN

- 문제점 : 동일한 값을 갖는 Attribute의 pair가 같은 tuple이 join 결과에 항상 생김.

- ex) DEPARTMENT⋈<Dnumber=Dno>EMPLOYEE 일때 Dnumber와 Dno가 동일한 값을 가지는데 중복되게 출력

-> Natural JOIN (R*S)으로 해결

 

NATURAL JOIN Operation

- θ = '=' 인 JOIN을 할 때 중복된 2번째 Attribute를 최종 결과에서 제거해주는 연산

- NATURAL JOIN을 하기 전에는 각각의 relation의 좌우변에 해당하는 attribute 이름이 같게 설정해줘야 함.

- Attribute 이름이 같은 것을 기준으로 JOIN

- 조인하는 relation의 쌍이 각각 같아도 조인의 대상이 되는 attribute에 따라 의미가 다름.

- 서로 같은 relation끼리 JOIN연산을 하는 것도 가능.(각각 서로 다른 copy라고 간주), renaming할 때 유용

 

Complete Set of Relational Algebra Operations

- Complete set : 어떠한 relational algebra operation도 이 set의 operation의 sequence로 표현 가능 = {SELECT, PROJECT, UNION, DIFFERENCE, CARTESIAN PRODUCT}

- JOIN은 SELECT와 CARTEIAN PRODUCT로 표현 가능, INTERSECTION은 A - (A ∪ B - B)로 표현 가능, DIVISION도 표현 가능.

- Relationally complete languages : 새로운 Query language가 Relational Algebra Operations의 complete set을 만족한다면 Relationally complete하다.

'프로그래밍 > 공부' 카테고리의 다른 글

[컴보] 8장 IDS  (0) 2021.11.03
[컴보] 7장 DoS  (0) 2021.11.01
[데베시] 6강  (0) 2021.10.18
[컴보] 6강 악성 소프트웨어  (0) 2021.10.17
[데베시] 5강 - Relational Data Model  (0) 2021.10.14