만족
[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 |
'DataBase > 이론' 카테고리의 다른 글
[Database] Data Modeling (Crow Foot Notation) (0) | 2021.06.11 |
---|---|
[Database] Data Modeling (Concept & ER Modeling) (0) | 2021.06.11 |
[Database] 관계대수(Relational Algebra): 셀렉트(SELECT), 프로젝션(PROJECTION), 디비전(DIVISION) (0) | 2021.04.25 |
[Database] 관계 대수(Relational Algebra): 집합 연산 (0) | 2021.04.25 |
[Database] 관계형 데이터베이스 용어 정리 (0) | 2021.04.25 |