본문 바로가기

Database

Database 8장

relational algebra 릴레이션을 조작하기 위한 연산들의 집합

-검색 요구를 명세하는데 주로 사용된다
-질의 결과는 relation 형태로 표현된다
-어떤 질의의 결과가 relation이기 때문에 또 다른 relational algebra를 적용할 수 있는 성질이 있다.
-결과와 타입이 같은경우 닫혀있다고 얘기한다.

관계 대수 연산의 종류
x,y에 모두 대응되는 연산을 찾는것을 DIVISION 연산이라고 한다.

SELECT

-SELECT는 시그마로 표시한다. 선택조건을 만족하는 relation에서의 튜플들의 부분집합
-조건c는 boolean 연산이며 여러비교 연산자를 쓰며, 복합조건도 표현 가능하다.
-결과 relation은 원래 relation R과 동일한 attribute로 구성된다.

c에 조건이 들어가있는 모습, 쿼리문과 그림이 동일한 의미를 갖는다

-선택률 = dbms가 질의처리를 할때 어떤 조건을 먼저 처리할지 선택할 수 있는 정보(system-catalog에 저장된다)
-교환법칙 갖음
-select연산이 연속해서 적용되면 AND로 연결한것과 동일한 결과를 가진다.

 

프로젝트 연산자 파이 주어진 relation R에서 명세된 attribute list L을 뽑아낸다. 결과는 R에서 L에 명시된 attribute만 포함된다.
예시 2번째의 경우 relation은 튜플의 중복이 허용이 되지 않아서 하나가 제거된 모습이 보인다.
5번 부서에서 일하는 직원들의 이름과 급여 검색
attribute이름들을 renaming 해줄 수 있다.
relation,attribute이름을 바꿔줄 수 있다, 여러가지 바꾸는 예시
집합의 4가지 연산


결합가능

-합집합,교집합,차집합은 이름은 다르지만 attribute갯수가 같고, 대조적으로 같은 domain을 가져야 한다.
-결과 relation은 앞에 나오는 relation의 이름을 따르는 것을 편의상 정해 놓는다.

순서에 따라 attribute이름이 다르게 나온다

 
CARTESIAN PRODUCT

 

 

1차r+1차r=2차 relation , 튜플은 3*2로 6개 -CARTESIAN PRODUCT자체는 별로 의미가 없으나, Select문이 있으면 JOIN연산과 비슷한 기능을 한다.

 

여직원들의 부양가족 이름리스트를 구하는 과정

 

Join연산

-CP를 한후에 SELECT를 한것과 동일한 결과를 가진다
-Join condition c를 나비넥타이 모양 옆에 넣어준다

 

-조건 c 는 AND관계로 형성된다.
세타관계, 관계연산자를 의미한다.

 

Join condition 중 equality comparisons( = ) 의 경우 EQUIJOIN이라고 한다. join에 참가하는 attribute를 join attribute라고 부른다.
부서이름과 매니저이름 검색의 과정 앞에서 했던 연산, CP이후 select하는걸 Join으로 한꺼번에 처리한다

NATURAL JOIN

-EQUIJOIN과 달리 중복되는것이 반복적으로 나오지 않는다.
-두 relation이 동일한 attribute이름과 구조이어야 하고, 그렇지 않으면 renaming을 먼저 해주어야한다.

 

 

natural join의 두가지 표시방법, attribute이름이 같은것들끼리 같이 같아야 한다.

 

join selectivity : R과S를 join했을때 튜플수 / R튜플수 * S 튜플수, join은 다중 join이 가능하다

 

어떤 언어가 위의 5가지 연산을 제공한다면 그 언어는 관계적으로 완전하다.
DIVISION연산을 수행하려면 나누어지는 relation은 나누는 attribute를 포함하고 있어야하고, 연산 결과는 나누어지는 relation에서 나누는 attribute를 제외하고 구성되어야 한다.
나누기 연산의 다른 표현방식
기호요약

질의 트리

-트리구조를 가지는 relational algerbra 표현
-stafford에 위치하는 모든 프로젝트의 번호, 담당부서 번호, 부서 매니저의 last name,주소, 생일 검색

 

관계대수식을 트리구조로 표현
Outer Join의 기호 표시
outer join, natural join 예시

 

OUTER union


외부합집합은 union compatible하지 않은 두 relation들의 튜플들을 합집합한다.
-결과는 union compatible하지 않은 양 relation의 모든 속성이 유지된다
-자기 속성에 없는것들은 null값으로 포함된다

 

예시

SEMIJOIN

R과 S를 EQUIJOIN한 결과에서 X를 project한 결과를 갖는다
relation R에있는 튜플중 S와 JOIN에 참가한 튜플들만 뽑아내는 연산이다
-교환법칙이 성립하지 않는다
-Natural join을 semijoin으로 표현한 모습

 

참가하지 못하는 a3,b1,c2튜플이 빠지게 되는 모습

관계해석

-비절차적인 특성을 가진다
-검색요구를 선언적인 형태로 한다
-쿼리를 평가하는것에 대해서 기술하지 않는다
relation algebra : 절차적언어
연산의 순서를 명시를 해야한다

-tuple calculus ,domain calculus 두 가지 타입 존재.

 

sql, 관계대수 , 관계해석식(tuple calculus) 3가지 방식의 예시
관계 해석이나 관계 대수로 표현된 어떤 쿼리라도 주어진 쿼리 언어 L로 표현 가능하다면 , 그 쿼리 언어 L을 관계적으로 완전하다고 한다.(두 언어의 표현력이 같다는 뜻)

'Database' 카테고리의 다른 글

Database 14장  (0) 2020.10.22
DATABASE 3장  (0) 2020.10.10
Database 7장-2  (0) 2020.10.02
DATABASE 7장  (0) 2020.09.26
Database 6장-2  (0) 2020.09.19