본문 바로가기

Archived(CSE Programming)/Database(Oracle)

관계대수 & 관계해석

Relational Algebra(관계대수)란 관계형 DB에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 언어를 뜻한다.

 

관계대수에는 순수관계 연산자와 일반집합 연산자 두 가지를 들 수 있다.

먼저 순수관계 연산자는 SELECT(σ), PROJECT(π), JOIN(▷◁), DIVISION(÷) 가 있다.

1. 관계대수_순수관계 연산자

1) SELECT(σ) (단항 관계연산)

- Relation R에서 선택조건을 만족하는 Tuple 들을 선택하는 연산

- 결과 Relation은 Relation R과 동일한 Attribute들을 가진다

- 선택조건 비교연산자(=, <, <=, >, >=, ≠), AND, OR, NOT

- 선택률 : 선택된 tuple 수 / 전체 tuple 수

- 교환법칙이 성립한다

σSALARY>30000 (EMP) 
σ(DID=4 AND SALARY>25000) OR DID=5 (EMP)
σ(DID=4 AND SALARY>25000) OR (DID=5 AND SALARY>30000) (EMP)

 

2) PROJECT(π) (단항 관계연산)

- Relation R에서 attribute list L에 명시된 Attribute들만 선택한다

- 결과 Relation은 R의 attribute만 가지고 오므로 수학적으로 set이다(중복 제거).

- 교환법칙이 성립하지 않는다(중복 제거가 되므로).

πENAME,SALARY (EMP)
πSEX,SALARY (EMP)

 

3) JOIN(▷◁) (이항 관계연산)

- 두 개의 Relation들로 부터 관련 있는 tuple들을 묶어서 하나의 tuple들로 합친다

- INNER JOIN , LEFT/RIGHT/FULL OUTER JOIN 중 그냥 JOIN은 INNER JOIN을 뜻한다

- 조인 선택도 : 실제 결과 tuple 수 / 예상 결과 tuple 수

select d.dname, e.ename from DEPT d INNER JOIN EMP e ON (d.mgr_eid = e.eid);
select e.ename, d.dname from EMP e INNER JOIN DEPT d ON (e,did = d.did);

 

3-2) OUTER JOIN(=▷◁=) 

- EQUIJOIN 또는 NATURAL JOIN에서는, R1 또는 R2에서 대응되는 상대방 tuple이 없는 tuple들은 result relation에 나타나지 않는다

- LEFT OUTER JOIN: R1 R2는 R1의 모든 tuple들이 result relation에 나온다
- RIGHT OUTER JOIN: R1 R2는 R2의 모든 tuple들이 result relation에 나온다
- FULL OUTER JOIN: R1 R2는 R1과 R2의 모든 tuple들이 result relation에 나온다

select e.ename, d.dname from EMP e LEFT OUTER JOIN DEPT d ON (e.did = d.did);

Q1-1: ΠENAME,DNAME (σDNO=DNUMBER(EMPLOYEE X DEPARTMENT)) 
tuple e in EMPLOYEE와 tuple d in DEPARTMENT에 대하여 카티션 곱한
(두 개의 Relation으로부터 각 tuple들을 전부 곱하여 묶은) 결과 
relation에서 DNO와 DNUMBER가 같은 tuple들만 선택한 결과에서, 
ENAME과 DNAME attribute들만 선택한다.

Q1-1: ΠENAME,DNAME (EMPLOYEE JOINDNO=DNUMBER DEPARTMENT) 
tuple e in EMPLOYEE와 tuple d in DEPARTMENT에 대해여 
DNO와 DNUMBER가 같은 기준으로 묶은(이너 조인한) 결과 relation에서
ENAME과 DNAME attribute들만 선택한다.

Q1-2: ΠENAME,DNAME (EMPLOYEE LEFT OUTER JOINDNO=DNUMBER DEPARTMENT) 
tuple e in EMPLOYEE와 tuple d in DEPARTMENT에 대해여
DNO와 DNUMBER가 같은 조건에서 
모든 tuple e in EMPLOYEE을 기준으로 묶은(포함한) 결과 relation에서
ENAME과 DNAME attribute들만 선택한다.

Q2-1: ΠDNAME,ENAME (σMGRSSN=SSN(DEPARTMENT X EMPLOYEE)) 
tuple d in DEPARTMENT와 tuple e in EMPLOYEE에 대하여 카티션 곱한
(두 개의 Relation으로부터 각 tuple들을 전부 곱하여 묶은) 결과 relation에서
MGRSSN과 SSN이 같은 tuple들만 선택한 결과에서, 
DNAME과 ENAME attribute들만 선택한다.

Q2-1: ΠDNAME,ENAME (DEPARTMENT JOINMGRSSN=SSN EMPLOYEE) 
tuple d in DEPARTMENT와 tuple e in EMPLOYEE에 대해여 
MGRSSN과 SSN이 같은 기준으로 묶은(이너 조인한) 결과 relation에서 
DNAME과 ENAME attribute들만 선택한다.


Q2-2: ΠDNAME,ENAME (DEPARTMENT LEFT OUTER JOINMGRSSN=SSN EMPLOYEE) 
tuple d in DEPARTMENT와 tuple e in EMPLOYEE에 대해여 
MGRSSN과 SSN이 같은 조건에서 
모든 tuple d in DEPARTMENT을 기준으로 묶은(포함한) 결과 relation에서
DNAME과 ENAME attribute들만 선택한다.

 

 

4) DIVISION(÷) 

- 두 개의 Relation들에 모두 존재하는 attribute를 가진 tuple에서 오른쪽 Relation에 있는 attribute만 구하는 연산

2. 관계대수_일반집합 연산자

1) UNION: R1∪R2 

2) INTERSECTION: R1 ∩ R2
3) SET DIFFERENCE(MINUS): R1 - R2
4) CARTESIAN PRODUCT(CROSS PRODUCT, CROSS JOIN): R1× R2

3. 관계해석

https://raisonde.tistory.com/entry/%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EA%B4%80%EA%B3%84%ED%95%B4%EC%84%9D%EC%8B%9D-%ED%91%9C%ED%98%84%EB%B2%95%EA%B3%BC-%EC%98%88%EC%A0%9C?category=494112

 

여러가지 관계해석식 표현법과 예제

*관계 대수와의 비교 관계 대수식은 절차적(procedural)인 반면에 관계 해석식은 비절차적이다. 그러나 두 언어의 표현력(expresive power)은 동등하다. 튜플 관계 해석식 셀렉트 연산 : { t | EMPLOYEE(t) and t...

raisonde.tistory.com

이러한 관계대수와 비교되는 Relational Calculus(관계해석)도 있다. 관계해석은 원하는 정보가 무엇인지에 대해 정의하는 비절차적 언어를 뜻한다.

 

1) Tuple Relational Calculus

{t | COND(t)} 필요한 것 t와 이에 대한 조건 COND(t)로 구성

필요한 Tuple에 대한 서술을 하는 것을 말한다.

universal quantifier (∀) and the existential quantifier (∃)

 

2) Domain Relational Calculus

필요한 Domain에 대한 서술을 하는 것을 말한다.

질의 0: 이름이 ‘John B. Smith’인 사원의 생일과 주소를 검색하라. 
Q0: {uv | (∃q) (∃r) (∃s) (EMP(qrstuvwxyz) and q = ‘John’ and r = ‘B’ and s = ‘Smith’)}

질의 1: ‘Research’ 부서에서 일하는 모든 사원들의 이름과 주소를 검색하라. 
Q1: {qsv | (∃z) (EMP(qrstuvwxyz) and (∃l) (∃m) (DEPT(lmno) and l = ‘Research’ and m = z))} 
(m = z)는 조인 조건 (l = ‘Research’)는 선택 조건

질의 2: ‘Stafford’에 위치한 모든 프로젝트에 대해서 프로젝트 번호와 부서 번호, 
그리고 부서 관리자의 성, 생일, 주소를 나열하라. 
Q2: {iksuv | (∃j) (PROJ(hijk) and (∃t) (EMP(qrstuvwxyz) and (∃m) 
	(∃n) (DEPT(lmno) and k = m and n = t and j = ‘Stafford’)))}

 

'Archived(CSE Programming) > Database(Oracle)' 카테고리의 다른 글

B+ Tree의 삽입  (0) 2019.10.16
Oracle Table Index  (0) 2019.10.16
ER 다이어그램(ER Diagram)  (0) 2019.10.14
System Catalog 대상 SQL문  (0) 2019.09.20
Oracle 연동 및 접속하기  (0) 2019.09.19