조인join

조인join (rev. 1.8)

조인 join 연산
기호 ⨝

관계대수relational_algebra 연산 중 하나?

대충, 테이블table/릴레이션relation이 여러 개 있을 때
여러 테이블에 흩어져 있는 정보 중에서
사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들어서 결과를 보여주는?

nested query를 single block query로 바꾸면, 거의 대부분 join 연산을 쓰게 된다.[1]

이건 연산 두 개로 분해 가능?
cartesian_product를 하고, 실렉트select를 한 것.[2]
R⨝CS = σC(R×S)


아래 분류 sections 여러곳을 참고하여서 체계적이지 않음, and 겹치는 것도 존재, 나중에 다시 tree 구조로 체계적으로 분류

1. 내부조인 inner join

내부조인inner_join

2. 외부조인 outer join

외부조인outer_join

left outer join
left_outer_join
right outer join
right_outer_join
full outer join
full_outer_join

equijoin과 natural_join은, 다른 릴레이션relation에 matching하지 않는 튜플tuple들은 제외하는데,
outer join은...

3. 상호조인 cross join

상호조인 cross join

4. 자체조인 self join

자체조인 self join

5. cartesian product


결과의 차수degree는 (두 operand 테이블의 차수들)의 합,
결과의 카디널리티cardinality는 (두 operand 테이블의 카디널리티들)의 곱과 같다.


6. equi join

= 만으로.
이것은 superfluous한 속성attribute(s)를 남긴다. 그걸 제외한 것이 natural join. (황인준)

7. non-equi join


8. 세타 조인 theta join

equijoin이 =만으로...라면,
이것은 =,<,≤,>,≥,≠
여섯가지 ... (더 일반적?) - 정확히 rewrite. (황인준)

9. 자연 조인 natural join ⨝N


equijoin에서 중복된 것을 삭제한?? chk

기호 *
equijoin 후 superfluous attribute(s)를 제거하는 join. (황인준)

10. DB개론에서

조인속성join_attribute을 이용해, 두 릴레이션relation을 조합하여 하나의 결과 릴레이션을 구성.
join attribute란: 두 relation이 공통으로 가지고 있는 속성attribute.

binary operator: (relation, relation) ↦ relation


자연 조인 natural join ⨝N
가장 많이 사용되는 조인.
자연조인natural_join


세타 조인 theta join ⨝AθB
자연 조인보다 더 일반화된 조인.
표현
릴레이션1 ⨝AθB 릴레이션2
에서, AθB는 조인 조건으로, A는 릴레이션1의 속성attribute이고 B는 릴레이션2의 속성. θ는 비교연산자(>, ≥, <, ≤, =, ≠). 비교 연산이 가능하도록, A와 B는 같은 도메인domain으로 정의되어야 함.
θ 연산자가 =인 경우, 특별히 동일 조인(equi-join)이라 함.
세타조인theta_join

세미 조인과 외부 조인:
{
세미조인semijoin : ⋉ ⋊
조인 속성으로 프로젝트project릴레이션relation을 이용해 조인한다.
//aka semi-join semi_join
외부조인outer_join
결과 릴레이션에 조인 연산에서 제외되었던 모든 tuple을 포함시킨다.
left outer join ⟕
right outer join ⟖
full outer join ⟗
https://everything2.com/title/outer join
http://foldoc.org/outer join


inner_join (also sometimes called "equi-joins" or "natural joins")
https://everything2.com/title/inner join
http://foldoc.org/inner join

조인검색
{
조인검색 : 여러 개의 테이블table을 연결하여 데이터를 검색하는 것.
조인검색을 하려면 테이블을 연결해주는 속성attribute이 필요하고 이 속성을 조인속성이라 함.
조인속성의 이름은 (테이블마다?) 달라도 되지만 도메인domain은 반드시 같아야 함.
일반적으로 테이블의 관계를 나타내는 외래키foreign_key를 조인속성으로 이용한다고. (이유 tbw)
Ref. [https]DB개론: 여러 테이블에 대한 조인 검색
}

11. Oracle 11g의 경우 - '예제로 배우는 ORACLE 11g' 위키북스에서


cartesian product - https://wikidocs.net/3957
이건 VG:곱집합,product_set과 마찬가지 idea.

equi join - https://wikidocs.net/3958
두 테이블에 공통으로 존재하는 열column의 값이 일치되는 행row을 연결하여 결과를 생성하는.

non-equi join 비등가조인 - https://wikidocs.net/3959
동일 column 없이 다른 조건을 써서.

self join - https://wikidocs.net/3960
자기 자신과 조인.

outer join - https://wikidocs.net/3961
조인 조건을 만족하지 않는 행row도 나타내는.
조인 조건을 만족하지 못하였어도 해당 행row을 나타내고 싶을 때 outer join을 사용.




Up: 관계데이터연산relationship_data_operation > 관계대수relational_algebra 관계연산 관계연산자 relational operation // <- DB개론 보고 관계대수relational_algebra 작성시 만든것, 나중에 cleanup
----
  • [1] KU황인준 2022-03-28 50:40
  • [2] KU황인준