본문 바로가기

전공/데이터베이스

[데이터베이스] 관계형 모델 - (4)

관계 대수(Relational Algebra) - 추가 연산자(additional operations)


 

1. 교집합 연산(set-intersection operation):

 

호환 가능(compatible)한 두 개의 입력 릴레이션에 모두 출현하는 튜플을 찾는 연산이다.

 

표기법(notation): $ r \cap s $

 

예시)

 

$ r \cap s $ : r과 s에 동시에 출현하는 튜플을 포함하는 릴레이션을 반환한다.

 

 

 

 

 

2. 자연 조인 연산(natural-join operation):

 

선택 연산(select operation)과 카티션 곱 연산(cartesian-product operation)을 하나로 합친 연산이다.

 

두 개의 입력 릴레이션이 중복된 attribute가 존재하지 않는다면, 자연 조인 연산의 결과는 카티션 곱 연산의 결과와 동일하다. ($ r \Join s $ = $ r \times s $)

 

자연 조인 연산은 결합 법칙교환 법칙이 성립한다.

 

표기법(notation): $ r \Join s $

 

예시)

 

$ r \Join s $ : $ \prod _{r.A, r.B, r.C, r.D, s.E}(\sigma _{(r.B = s.B) \wedge (r.D = s.D)}(r \times s)) $

 

 

 

 

 

3. 배정 연산(assignment operation):

 

프로그래밍 언어의 배정(assignment)과 비슷하다.

 

배정 연상을 이용함으로써 질의는 일련의 배정 연산으로 구성된 순차 프로그램으로 작성될 수 있다.

 

표기법(notation):

 

예시) 2017년 가을에도 개설되고 2018년 봄에도 개설된 수업을 찾는 질의

 

$ courses.fall.2017 \leftarrow \prod _{course.id}(\sigma _{semester = "Fall" \wedge year=2017}(section)) $

$ courses.spring.2018 \leftarrow \prod_{course.id}(\sigma_{semester = "Spring" \wedge year=2018}(section)) $

$ courses.fall.2017 \cup courses.spring.2018 $

 

 

 

 

4. 외부 조인(outer join):

 

조인 연산의 결과 한 릴레이션의 튜플이 다른 릴레이션과 매치되지 않더라도(조건문을 만족하지 않더라도) 출력 릴레이션에 포함시키는 연산이다.

 

null 값을 사용한다.

이때, null 값은 해당하는 값을 알 수 없거나 존재하지 않는다는 것을 의미힌다.

또한 null을 포함한 비교(comparison)는 정의상 false이다.

 

 

- 외부 조인의 종류

 

1) 왼쪽 외부 조인(left outer join):

왼쪽 릴레이션의 튜플은 조건을 만족하지 않더라도 모두 결합된다.

표기법(notation): r s 

 

2) 오른쪽 외부 조인(right outer join):

오른쪽 릴레이션의 튜플은 조건을 만족하지 않더라도 모두 결합된다.

표기법(notation): r ⟖ s

 

3) 완전 외부 조인(full outer join):

양쪽 릴레이션의 튜플 모두 조건을 만족하지 않더라도 결합된다.

표기법(notation): r ⟗ s

 

 

예시)

 

 

 

1) 왼쪽 외부 조인:

 

2) 오른쪽 외부 조인:

 

3) 완전 외부 조인:

 

 

 

 

관계 대수(Relational Algebra)의 확장(Extension)


 

1. 일반화된 추출 연산(generalized projection operation):

 

추출 리스트(projection list)에서 산술 함수(arithmetic functions)를 사용할 수 있도록 확장한 연산이다.

 

표기법(notation): $ \prod_{F_{1}, F_{2}, ..., F_{n}}(E) $

 

E는 관계 대수식이고,

F1, F2, ..., Fn 각각은 E의 스키마의 속성(attributes)과 상수(constants)를 포함하는 산술 연산이다.

 

예시) $ \prod_{ID, name, dept_name, salary/12}(instructor) $

 

 

 

 

2. 그룹 연산(aggregate operation):

 

- 그룹 함수(aggregate functions)

: 값의 collection을 받아서 결과로 하나의 값을 반환하는 함수이다.

 

예시)

 

avg: average value

min: minimum value

max: maximum value

sum: sum of values

count: number of values

 

 

- 그룹 연산(aggregate functions)

 

표기법(notation): $ _{G_{1}, G_{2}, ..., G_{n}} \mathcal{G} _{F_{1}(A)_{1}, F_{2}(A_{2}, ..., F_{n}(A_{n}))}(E) $

 

G1, G2, ..., Gn은 그룹화할 속성(attribute)의 리스트이다.

$ F_{i} $는 그룹 함수이다.

$ A_{i} $는 속성 이름이다.

 

예시)

 

$ \mathcal{G} _{sum(c)}(r) $ :