일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 생일문제
- 직박구리과
- 비둘기과
- python3
- 계수정렬
- 흰날개해오라기
- django
- 한국의 새
- Birthday paradox
- 딥러닝공부
- ADsP
- 기러기목
- AI역량평가
- Python
- 비둘기목
- 가마우지과
- 참새목
- 오리과
- 맑은소리 스피치학원
- 백로과
- SimpleCraft
- 딱다구리과
- 참새과
- keras
- 딥러닝 공부
- 솔딱새과
- AI전략게임
- 한국의새
- structured_array
- IBK기업은행 인턴
- Today
- Total
진박사의 일상
[데베시] 7강 - Relational Algebra 본문
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) 여성 사원의 부양가족의 이름을 검색하시오
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 |