코딩공작소

형식 DB언어 본문

어플리케이션개발/DB

형식 DB언어

안잡아모찌 2018. 11. 21. 15:15


<Relational algebra and relational calculus>


 - Relational algebra 

 : 절차적인 쿼리 언어를 위한 형식 언어

 : 관계 모델을 위한 작동의 기본 셋


 - Relational algebra expression

 : Relational algebra 작동의 순서


 - Relational calculus

 : 비절자 쿼리 언어를 위한 형식 언어

 : relational 쿼리를 명시화 하기위한 하이 레벨 선언 언어


***

SQL명령어를 Query 로 Algebra로 서로 변환가능해야함.



****

튜플들의 속성의 개수 :  degree ==> deg(R)

튜플들의 개수 : Cardinality ==> |R| or |r|



[1] SELECT <-- 수평으로 쪼갠다. input 테이블 1개.

선택 조건을 만족하는 관계들중에서 튜플들의 서브 셋.



<선택 조건> 은 boolean이다.



deg(Re) = deg(R) 

0 <= |Re| <= |R|

0 <= Selectivity <= 1 --> 선택조건에 의해 선택되는 튜플의 비율. 0에 가까울수록 선호된다. Selectivity = |Re| / |R|



[2]PROJECT <-- 수직으로 쪼갠다.


속성 리스트안에 있는 테이블의 명시된 칼럼들을 선택하고 나머지 칼럼은 버린다.



프로젝트와 결과는 중복을 제거한 것들의 집합이다.


deg(Re) = deg(attribute list) <= deg(R)

|Re| <= |R| (중복이 있는 경우 뺀다.)




소속번호 5번인 직원의 이름과 연봉 구하기.

임시 테이블을 이용한 작업.



<UNION, INTERSECTION , MINUS>


다양한 방법안에서 두개의 집합의 원소를 합치는 방법.

Binary operations.

관계들은 반드시 같은 튜플의 타입을 가져야한다. --> Union compatible



[3]Union


Re <- R U S

deg(Re) = deg(R) = deg(S)

|Re| <= |R| + |S|  --> 중복의 개수만큼 차이가 있다.



[4]Intersection


deg(Re) = deg(R) = deg(S)

|Re| <= min(|R| , |S|)



[5]Minus

R-S

순서가 중요하다. (교환법칙 X)


deg(Re) = deg(R) = deg(S)

|Re| <= |R| (교집합이 없는경우 =)



[6]Cartesian ( 보통 독립적으로 사용하지 않고 조인연산과 같이 쓰인다.)


CROSS PRODUCT OR CROSS JOIN이라고 부른다

R X S  --> select * from R,S

deg(Re) = deg(R) + deg(S)

|Re| = |R| * |S|



[7]Join


deg(Re) = deg(R) + deg(S)

0 <= |Re| <= |R|*|S|

join selectivity ==> |Re| / (|R| * |S|)


:일반적으로 카디션곱과 선택조건을 같이 사용하는 것이 조인연산이다.





[8]EQUI JOIN ( 세타 조인의 한 종류 = 인경우)


세타가 등호인 경우이다.

일반적인 deg, |Re|은 같지만 세타보다 일반적으로 |Re|가 작아야 한다.

항상 모든 튜플안에서 동일한 값을 갖는 속성의 쌍이 한개 이상 존재해야 한다.



[9]Natural join --> 중복 속성 제거


Equi join에서 같은 속성을 하나만 남긴다.

상대 릴레이션 간 대응되는 튜플들의 조합에서 중복 속성들을 없앤 것. 

<--> outer join : 두 릴레이션 간 대응 되는 튜플 조합 외에도 본래 릴레이션에 있던 튜플들도 결과에 포함하는 것

deg(Re) = deg(R) + deg(S) - K ( K는 같은 속성의 갯수, AND 연산을 하는 만큼 k개가 생긴다. )

 


Join selectivity : 최대 사이즈는 nr * ns 로 기대된다.

Inner joins : match and combine 작동의 유형, 일반적으로 카디션 곱과 선택의 조합으로 정의 된다.





[10]DIVISION

Re <- R%S

한 테이블에 관련된 다른 테이블의 연관된 것들을 구할때 사용한다.

ex ) 이름이 존인 사람이 일하는 모든 프로젝트들에 대해서 일하는 모든 사원의 이름을 구해라.



R={A,B}   S(B)             -->R%S-->   Re(A) 

a1 | b1     b1                                            a1

a1 | b2     b2

a1 | b3     b3

a2 | b1

a2 | b2     b1                                            a1

a3 | b3                                                      a2







<Query tree>

 - 트리의 리프 노드로써 쿼리의 인풋 관계를 나타낸다.

 - 내부 노드로써 algebra operations을 나타낸다.

 - 루트노드로써 마지막 결과를 나타낸다.





<쿼리 트리>



*질의 최적화 기능*


카디션곱 + select ==> 하나의 조인.

DBMS마다 각각 쿼리를 처리하는 방법은 다르다.

아래의 트리가 실행시간이 효율적이다

**Select , project 연산들을 아래서 실행하는 것이 더 좋다 중간 테이블의 크기가 작아진다.



<Additional Relational Operations>


 - Generalized projection : 속성의 functions들을 프로젝션 리스트안에 포함되는 것을 허락한다. 


- Aggregate functions and grouping : numeric values의 집합. common functions에 적용된다.


 - Group tuples bu value of some of the grouping attributes.





[11]OUTER JOIN

 - 매칭되는게 없어도 결과 테이블에 포함시킴.

 - Type : left , right, full outer join.




*Union Compatible : degree , domain이 일치해야 한다.

 - Partially compatible (부분적으로만 가능한 경우) : 양쪽의 관계로부터의 모든 튜플을 결과에 포함시킨다. 같은 값은 한번만 포함시킨다.



--> select name,address
                from Employee, Department

                                         where Dno=Dnumber AND Dname = 'research'







'어플리케이션개발 > DB' 카테고리의 다른 글

함수적 종속성(FD)와 정규화  (2) 2018.11.28
DB application programming  (0) 2018.11.21
SQL DML  (0) 2018.11.15
기본 SQL  (0) 2018.11.09
데이터베이스물리설계  (0) 2018.11.07