본문 바로가기
Department/Database

데이터베이스 관계 대수 연산자 - 집합 연산자

by mean. 2020. 7. 14.
728x90
반응형

▣ 집합 연산자
◈ 릴레이션이 투플들의 집합이기 때문에 기존의 집합 연산이 릴레이션에 적용됨
◈ 세 가지 집합 연산자: 합집합, 교집합, 차집합 연산자
◈ 집합 연산자의 입력으로 사용되는 두 개의 릴레이션은 합병 가능(union compatible) 조건을 만족해야 함
◈ 집합 연산자들은 두 개의 릴레이션을 입력으로 받아들이므로 이항 연산자

▣ 합병가능(union compatible) 조건
◈ 두 릴레이션 R1(A1, A2, ..., An)과 R2(B1, B2, ..., Bm)이 합병 가능할 필요 충분 조건은 n=m이고, 모든 1≤i≤n에 대해 domain(Ai) = domain(Bi)
◈ 즉, 두 릴레이션의 속성 수가 같고, 대응되는 속성의 도메인이 같다.


◈ 예1
고객(고객번호, 이름, 주소, 핸드폰), 주문(주문번호, 고객번호, 도서번호, 판매가격, 주문일자) => 합병불가능
속성 수 자체가 다르다.

◈ 예2

대응되는 속성이 다르다. 나이(INT) 직위(CHAR)

◈ 예3

속성 이름은 중요하지 않다.


관계대수연산자: 합집합
◈ 두 릴레이션 R과 S의 합집합 R∪S는 R 또는 S에 있거나, R과S 모두에 속한 투플들로 이루어진 릴레이션
◈ 형식: R∪S
◈ 결과 릴레이션에서 중복된 투플들은 제외됨
◈ 결과 릴레이션의 특성
◈ 차수 = R과S의 차수
◈ 카디널리티 ≤ ( R의 카디널리티+ S의 카디널리티 )
◈ 결과 릴레이션의 속성 이름들은 R의 속성들의 이름과 같거나 S의 속성들의 이름과 같음


Example 01

Example 02 : 마당서점은 지점A와 지점B가 있다. 두 지점의 도서는 각 지점에서 관리하며 릴레이션 이름은 각각 도서A, 도서B이다.
마당서점 전체 지점의 도서를 검색하시오.


관계 대수 연산자 : 교집합
◈ 두 릴레이션 R과 S의 교집합 R∩S는 R과 S 모두에 속한 투플들로 이루어진 릴레이션
◈ 형식: R∩S
◈ 결과 릴레이션의 특성
◈ 차수= R과 S의 차수
◈ 카디널리티 ≤ R의 카디널리티 AND 카디널리티 ≤ S의 카디널리티
◈ 결과 릴레이션의 속성 이름들은 R의 속성들의 이름과 같거나 S의 속성들의 이름과 같음


Example 01.

 

Exampel 02 : 마당서점의 두 지점에서 동일하게 보유하고 있는 도서를 검색하시오.


관계 대수 연산자 : 차집합
▣ 두 릴레이션 R과 S의 차집합 R - S는 R에는 속하지만 S에는 속하지 않은 투플들로 이루어진 릴레이션
▣ 형식 : R – S
▣ 결과 릴레이션의 특성
◈ 차수 = R과 S의 차수
◈ R–S의 카디널리티 ≤ R의 카디널리티
▣ 결과 릴레이션의 속성 이름들은 R의 속성들의 이름과 같거나 S의 속성들의 이름과 같음


Exmaple 01.

Example 02 : 마당서점은 지점A와 지점B가 있다. 지점A에서만 보유하고 있는 도서 목록을 보이시오.


관계대수연산자: 카티션프로덕트 (cartesian product) - 이항 연산자
▣ 형식 : R × S
▣ 두 릴레이션을 연결시켜 하나로 합칠 때 사용
▣ 카디날리티가 I인 릴레이션 R(A1, A2, ..., An)과 카디날리티가 j인 릴레이션S(B1, B2, ..., Bm)의
카티션곱 R × S는 차수가 n+m이고, 카디날리티가 i*j 이고, 속성이(A1, A2, ..., An, B1, B2, ..., Bm)이며,
R과 S의 투플들의 모든 가능한 조합으로 이루어진 릴레이션
▣ 결과 릴레이션의 크기가 매우 클 수 있으며, 사용자가 실제로 원하는 것은 결과 릴레이션의 일부인 경우가 대부분이므로 카티전 프로덕트 자체는 유용한 연산자가 아님
▣ 동일한 속성이 두 릴레이션에 포함되어 있을 수 있기 때문에, 결과 릴레이션에서 이런 속성들을 구분하기 위해서 속성 이름 앞에 릴레이션 이름을 붙인다. (속성이름이 같다면)


Example 01.


관계 대수의 완전성
▣ 관계 대수의 필수적인 연산자 (기본 연산자)
◈ 셀렉트, 프로젝트, 합집합, 차집합, 카티션 프로덕트
▣ 다른 관계 대수 연산자들은 필수적인 관계 대수 연산자를 2개 이상 조합하여 표현할 수 있음
▣ 임의의 질의어가 적어도 필수적인 관계 대수 연산자들만큼의 표현력을 갖고 있으면 관계적으로 완전 (relationally complete)하다고 말함.

관계대수연산자: 조인(join)
▣ 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산자
▣ 관계 데이터베이스에서 두 개 이상의 릴레이션들의 관계를 다루는데 매우 중요한 연산자
▣ 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야한다.
조인 연산의 결과는 공통 속성의 속성 값이 동일한 투플만을 반환
▣ 형식 : R ⋈C S ( c는 조인 조건 )
▣ R ⋈C S ≡ σ C (R×S)
▣ 조인 연산의 구분
◈ 기본 연산: 세타조인, 동등조인, 자연조인
◈ 확장된 조인 연산: 외부조인

조인: 세타조인, 동등조인

▣ 세타조인(theta join, θ)
◈ 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 투플만 반환한다.
◈ 세타조인의 조건은 {=, ≠, ≤, ≥, <, >} 중 하나가 된다.
◈ 형식 : R ⋈(r조건s) S (r은 R의속성, s는 S의속성 )
▣ 동등조인(equijoin) [ 혹은 동일조인] - 가장 많이 사용해서 따로 빼냄.
◈ 세타조인에서 = 연산자를 사용한 조인을 말한다. 보통 조인 연산이라고 하면 동등조인을 의미
◈ 형식: R ⋈r=s S


-> 같은 값을 두 개의 속성을 가지고 있어서 자연스럽게 만들고 싶음
ORANGE 정지영 22 SILVER 결과에 반영X

조인: 자연조인(natural join)
▣ 동등 조인에서 조인에 참여한 속성이 두 번 나오지않도록 두 번째 속성을 제거한 결과를 반환한다.
▣ 형식: R ⋈N(r, s) S 혹은 R ⋈N S 혹은 R ⋈ S
▣ 여러 가지 조인 연산자들 중에서 가장 자주 사용됨
▣ 실제로 관계 데이터베이스에서 대부분의 질의는 셀렉트(단항), 프로젝트(단항), 자연 조인(2항)으로 표현 가능


Example 01.

Example 02.


a1 b2 b1, b2 b2 c4, 결과에서 제외

관계 대수 : 예

▣ 원유선 고객의 등급과 원유선 고객이 주문한 주문제품과 수량을 검색하라.
π등급,주문제품,수량 (σ고객이름=‘원유선’(고객 ⋈ 주문))


조인: 외부조인
▣ 외부조인(outer join)
◈ 자연조인 시 조인에 실패한 투플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환
◈ 모든 속성을 보여주는 기준 릴레이션의 위치에 따라 왼쪽(left) 외부조인, 오른쪽(right) 외부조인, 완전(full)외부조인으로 나뉜다.

▣형식
◈왼쪽(left) 외부조인: R ⟕(r, s) S
◈오른쪽(right) 외부조인: R ⟖(r, s) S
◈완전(full) 외부조인: R ⟗(r, s) S

▣ 왼쪽외부조인( ⟕, ⋈+ )
◈ 릴레이션 R과 S의 왼쪽 외부 조인 연산은 R의 모든 투플들을 결과에 포함시키고, 만일 릴레이션 S에 관련된 투플이
없으면 결과 릴레이션에서 릴레이션 S의 속성들은 널값으로 채움


Example 01.


▣ 오른쪽외부조인( ⟖, +⋈ )
◈ 릴레이션 R와 S의 오른쪽 외부 조인 연산은 S의 모든 투플들을 결과에 포함시키고,만일 릴레이션R에 관련된 투플이 없으면 결과 릴레이션에서 릴레이션 R의 속성들은 널값으로 채움

Example 01.


▣ 완전외부조인( ⟗ )
◈ 릴레이션 R와 S의 완전 외부 조인 연산은 R과 S의 모든 투플들을 결과에 포함시키고, 만일 상대 릴레이션에 관련된 투플이 없으면 결과 릴레이션에서 상대 릴레이션의 속성들은 널값으로 채움

728x90
반응형