만족

[Database] 관계대수 (Relational Algebra): 조인(JOIN), 외부 합집합(OUTER UNION) 본문

[Database] 관계대수 (Relational Algebra): 조인(JOIN), 외부 합집합(OUTER UNION)

DataBase/이론 Satisfaction 2021. 4. 7. 20:00

세타조인, 동일조인, 자연조인, 세미조인, 외부조인에 대해 알아보자.

조인은 기본적으로 두 개의 릴레이션에 대해 진행하는 연산으로 이항 연산자이며,
양쪽 외부 조인을 제외한 모든 조인은 두 개의 릴레이션에서 공통된 애트리뷰트가 하나 이상 존재해야 한다.

조인은 두 릴레이션에 대해 먼저 곱연산을 진행하고 난 다음의 릴레이션에 대해
열이나 행을 필터링하는 과정을 하나의 연산으로 묶은 것이라 보면 되겠다.

세타조인(Theta Join; ⋈AΘB)

T= R⋈(AΘB) S라는 식이 있다고 해보자.

이는 R과 S 릴레이션을 조인하되,
R의 속성 A와 S의 속성 B가 세타 관계가 성립하는 새로운 T 릴레이션을 생성한다.

세타에는 =, < 등 비교연산자가 포함될 수 있다.


Relation R

A AA
1 안녕
1 하세요

Relation S

B BB
1 반갑
3 습니다

가령 T= R⋈(A>=B) S 일 경우에는
R과 S릴레이션을 조인하되,
R의 속성 A가 S의 속성 B보다 크거나 같은 튜플들을 가진 새로운 T릴레이션을 생성한다는 의미이다.

이 경우 R.A와 S.B가 같은 튜플은
R에서는 {1, 안녕}, {1, 하세요} 이고, S에서는 {1, 반갑} 이므로
결과 T는 다음과 같다.

Relation T

A AA B BB
1 안녕 1 반갑
1 하세요 1 반갑


S의 {3, 습니다}는 일치하는 R의 튜플이 없으므로 버려진다.

동일조인(Equi Join; ⋈A=B)

동일 조인은 세타 조인에서 세타가 =인 세타 조인을 말한다.

예제 생략

자연 조인(Natural Join; ⋈N)

자연 조인은 동일 조인의 결과에서 중복되는 속성(Attribute; column)을 제거한 릴레이션이다.

Relation R

A AA
1 안녕
1 하세요

Relation S

A AAA
1 반갑
3 습니다

T1= R⋈(A=A) S의 결과는

Relation T1

A AA A AAA
1 안녕 1 반갑
1 하세요 1 반갑

이 되는데 동일한 속성 A가 두번 출력되고 있다.

여기서 A를 한 번만 출력하려면
T2= R⋈N S 처럼 사용하면 된다

Relation T2

A AA AAA
1 안녕 반갑
1 하세요 반갑

세미조인(Semi Join; ⋉)

세미조인은 자연조인이 가능한 튜플들로 이루어진 릴레이션을 반환한다.

Relation R

A AA
1 안녕
2 하세요

Relation S

A AAA
1 반갑
3 습니다

T= R⋉S 일때,
R과 S를 자연조인할 때 가능한 R의 튜플들의 집합은

{1, 안녕} 이므로 T는 다음과 같다.

Relation T

A AA
1 안녕

외부조인 (Outer Join)

외부조인은 왼쪽 외부 조인, 오른쪽 외부 조인, 양쪽 외부 조인으로 세 가지의 외부 조인이 있다.

외부조인은 자연조인 시 조건을 만족하지 못하는 튜플들을 남은 애트리뷰트에 NULL값을 주고 결과값에 포함시키는 연산이다.

왼쪽 외부 조인(Left Outer Join; ⟕)

자연조인이 불가능한 왼쪽 릴레이션의 튜플들에 결과값의 나머지 애트리뷰트 부분에 NULL값을 주어 조인한다.

Relation R

A AA
1 안녕
2 하세요

Relation S

A AAA
1 반갑
3 습니다

T= R⟕S 일 때,
자연조인 불가능한 R의 튜플인 {2, 하세요}에 결과값에 부족한 애트리뷰트인 AAA에 NULL을 주어
{2, 하세요, NULL} 로 만들고 결과값에 포함시킨다.

Relation T

A AA AAA
1 안녕 반갑
2 하세요 NULL

릴레이션 T에는 왼쪽 릴레이션인 R의 모든 튜플들이 포함된다.

오른쪽 외부 조인(Right Outer Join; ⟖,)

왼쪽 외부 조인이 자연조인이 불가능한 왼쪽 릴레이션(R)에 대해 보충해줬다면,
오른쪽 외부 조인은 자연조인이 불가능한 오른쪽 릴레이션(S)에 대해 보충한다.

T= R⟖S
Relation T

A AA AAA
1 안녕 반갑
3 NULL 습니다

릴레이션 T에는 오른쪽 릴레이션인 S의 모든 튜플들이 포함된다.

양쪽 외부 조인 (Full Outer Join; ⟗)

양쪽 외부 조인은 자연조인 시 왼쪽과 오른쪽 모두에 부족한 애트리뷰트 값에 NULL을 보충해준다.

T= R⟗S

Relation T

A AA AAA
1 안녕 반갑
2 하세요 NULL
3 NULL 습니다

외부 합집합 (Outer Union)

합병 가능하지 않은 릴레이션에 대해 진행하는 합집합.

두 릴레이션 R과 S가 애트리뷰트의 수가 다르거나, 도메인이 다를 때도 수행할 수 있다.
=> 어떤 두 릴레이션에 관해서도 진행할 수 있는 연산이다

T= R U+ S처럼 표기하며,
결과값 T는 R와 S의 애트리뷰트 모두를 포함하고,
차수(애트리뷰트 갯수)는 R의 차수+S의 차수와 같거나 작고,
카디널리티(튜플 갯수)는 R의 카디널리티+S의 카디널리티와 같다.

결과값 T에서
R의 튜플값들에 만약 R에는 존재하지 않는 S의 애트리뷰트에는 그 값을 NULL로 처리하고
S의 튜플값들에 만약 S에는 존재하지 않는 R의 애트리뷰트에는 그 값을 NULL로 처리한다.

Relation R

A B
1 2
3 4

Relation S

C D
5 6
7 8


Relation T (T= R U+ S)

A B C D
1 2 NULL NULL
3 4 NULL NULL
NULL NULL 5 6
NULL NULL 7 8



Comments