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. 관계해석
이러한 관계대수와 비교되는 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 |