포스트

[DB] 관계대수 연산 예시

1. 마당서점 릴레이션 예시

  • 다음은 앞으로의 관계대수 예시에서 계속 사용될 릴레이션 목록이다.

1.1. 고객

고객번호이름주민번호주소핸드폰
1박지성810101-1111111영국 맨체스타000-5000-0001
2김연아900101-2222222대한민국 서울000-6000-0001
3장미란830101-2333333대한민국 강원도000-7000-0001
4추신수820101-1444444미국 클리블랜드000-8000-0001

1.2. 도서

도서번호도서이름출판사가격
1축구의 역사굿스포츠7000
2축구아는 여자나무수13000
3축구의 이해대한미디어22000
4골프 바이블대한미디어35000
5피겨 교본굿스포츠8000

1.3. 주문

고객번호도서번호판매가격주문일자
1170002014-07-01
12130002014-07-03
2580002014-07-03
32130002014-07-04
44350002014-07-05
13220002014-07-07
43220002014-07-07

2. 셀렉션(Selection)

  • 릴레이션의 튜플을 추출하는 단항 연산자
  • 찾고자 하는 튜플의 조건(predicate)을 명시하고, 그 조건에 만족하는 튜플을 반환함
  • 형식: $\; {\large\sigma}_{<\mathrm{condition}>}(R) \;$ ($R$은 릴레이션)



질의 2-1 마당서점에서 판매하는 도서 중 8000원 이하인 도서를 검색하시오.


정답

${\large\sigma}_{\mathrm{가격} \leq 8000}(\mathrm{도서})$


질의 결과

도서번호도서이름출판사가격
1축구의 역사굿스포츠7000
5피겨 교본굿스포츠8000

2.1. 셀렉션의 확장

  • 여러 개의 조건을 $\wedge$(and), $\vee$(or), $\neg$(not) 기호를 사용하여 복합조건을 표시할 수 있음

  • 예를 들어 질의 “가격이 8000원 이하이고 도서번호가 3 이상인 책을 찾아라”는 다음과 같이 표현함

    • ${\large\sigma}_{(\mathrm{가격} \leq 8000 \; \wedge \; \mathrm{도서번호} \geq 3)}(\mathrm{도서})$

3. 프로젝션(Projection)

  • 릴레이션의 속성을 추출하는 단항 연산자
  • 형식: $\; {\large\pi}_{<\mathrm{list \; of \; attribute}>}(R) \;$ ($R$은 릴레이션)



질의 2-2 신간도서 안내를 위해 고객의 정보(이름, 주소, 핸드폰)가 적힌 카탈로그 주소록을 만드시오.


정답

$\; {\large\pi}_{\mathrm{이름, \; 주소, \; 핸드폰}}(\mathrm{고객}) \;$


질의 결과

이름주소핸드폰
박지성영국 맨체스타000-5000-0001
김연아대한민국 서울000-6000-0001
장미란대한민국 강원도000-7000-0001
추신수미국 클리블랜드000-8000-0001

4. 합집합

  • 두 릴레이션을 합해 하나의 릴레이션 반환
  • 이때 두 릴레이션은 서로 같은 속성 개수/순서도메인을 가져야 함
  • 형식: $R \cup S$



질의 2-3 마당서점은 지점 A와 지점 B가 있다. 두 지점의 도서는 각 지점에서 관리하며 릴레이션 이름은 각각 도서A, 도서B다. 마당서점의 도서를 하나의 릴레이션으로 보이시오.


정답

도서A $\; \cup \;$ 도서B


질의 결과

4. 합집합


5. 교집합

  • 합병가능한 두 릴레이션을 대상으로 하며, 두 릴레이션이 공통으로 가지고 있는 튜플을 반환함
  • 형식: $R \cap S$



질의 2-4 마당서점의 두 지점에서 동일하게 보유하고 있는 도서 목록을 보이시오.


정답

도서A $\; \cap \;$ 도서B


질의 결과

5. 교집합


6. 차집합

  • 첫 번째 릴레이션엔 속하고, 두 번째 릴레이션엔 속하지 않는 튜플을 반환함
  • 형식: $R - S$



질의 2-5 마당서점 두 지점 중 지점 A에서만 보유하고 있는 도서 목록을 보이시오.


정답

도서A $\; - \;$ 도서B


질의 결과

6. 차집합


7. 카티전 프로덕트(cartesian product)

  • 두 릴레이션 연결시켜 하나로 합칠 때 사용
  • 결과 릴레이션: 첫 번째 릴레이션의 오른쪽에 두 번쩨 릴레이션의 튜플을 순서대로 배열한 뒤 반환
  • 결과 릴레이션의 차수: 두 릴레이션의 차수의 합
  • 카디날리티: 두 릴레이션의 카디날리티의 곱
  • 형식: $R \times S$



질의 2-6 고객 릴레이션과 주문 리레이션의 카티전 프로덕트를 구하시오.


정답

고객 $\times$ 주문


질의 결과

7. 카티전 프로덕트 카티전 프로덕트 예시


8. 조인

  • 두 릴레이션의 공통 속성 기준으로 속성 값 같은 튜플을 수평으로 결합하는 연산
  • 수행 조건: 두 릴레이션의 조인에 참여하는 속성은 동일한 도메인이어야 함
  • 결과: 공통 속성의 속성 값이 동일한 튜플만 반환
  • 형식: \(R \; {\large\bowtie}_{\small c} \; S = {\large\sigma}_{c}(R \times S)\) ($R$과 $S$는 릴레이션, $c$는 조인조건)

조인 연산은 다음과 같이 구분된다.

  • 기본 연산
    • 세타 조인: ${\large\bowtie}_{\small\theta}$
    • 동등 조인: ${\large\bowtie}$
    • 자연 조인: ${\large\bowtie}_{\small N}$
  • 확장된 조인 연산
    • 세미 조인: ${\large\ltimes}$, ${\large\rtimes}$
    • 외부 조인: $⟕$, $⟖$, $⟗$

9. 세타조인과 동등조인

9.1. 세타 조인(theta join, $\theta$)

  • 조인에 참여하는 두 릴레이션의 속성값을 비교해 조건을 만족하는 튜플만 반환
  • 세타조인의 조건은 다음 중 하나가 됨
    • $\lbrace =, \ne, \ge, \le, <, > \rbrace$
  • 형식: \(R \; {\large\bowtie}_{\small (r \; \mathrm{cond.} \; s)} \; S\) ($R$과 $S$는 릴레이션, $r$, $s$는 각각 $R$, $S$의 속성임)

9.2. 동등 조인(equi join)

  • 세타조인에서 $=$ 연산자를 사용한 조인
  • 보통 조인 연산이라고 하면 동등조인을 지칭
    • 형식: \(R \; {\large\bowtie}_{\small (r = s)} \; S\)



질의 2-7 고객과 고객의 주문 사항을 모두 보이시오.


정답

고객 \({\large\bowtie}_{\small \mathrm{고객.고객번호}=\mathrm{주문.고객번호} }\) 주문


질의 결과

9.2. 동등 조인 동등 조인의 예


10. 자연 조인(natural join)

  • 동등조인에서 참여한 속성이 두 번 나오지 않게 두 번째 속성을 제거한 결과를 반환
  • 자주 사용되는 조인
  • 형식: \(R \; {\large\bowtie}_{\small N(r, \; s)} \; S\)



질의 2-8 고객과 고객의 주문 사항을 모두 보여주되, 같은 속성은 한 번만 표시하시오.


정답

고객 \({\large\bowtie}_{\small N(\mathrm{고객.고객번호}, \; \mathrm{주문.고객번호})}\) 주문


질의 결과

10. 자연 조인 자연 조인의 예


11. 외부 조인(outer join)

  • 자연조인 시 조인에 실패한 튜플을 모두 보여줌
    • 다만 값이 없는 대응 속성에는 NULL 값을 채워서 반환함
  • 모든 속성을 보여주는 기준 릴레이션 위치에 따라 왼쪽(left), 오른쪽(right), 완전(full, 양쪽) 외부 조인으로 나뉨

  • 형식
    • 왼쪽(left) 외부조인: \(R \; {\large⟕}_{\small (r, \; s)} \; S\)
    • 오른쪽(right) 외부조인: \(R \; {\large⟖}_{\small (r, \; s)} \; S\)
    • 완전(full) 외부조인: \(R \; {\large⟗}_{\small (r, \; s)} \; S\)

11. 왼쪽 외부 조인 예 왼쪽 외부 조인 예



질의 2-9 마당서점의 고객과 고객의 주문 내역을 보이시오.

  1. 고객 기준으로 주문내역이 없는 고객도 모두 보이시오.
  2. 주문내역이 없는 고객과, 고객 릴레이션에 고객번호가 없는 주문을 모두 보이시오.
  3. 주문내역 기준으로 고객 릴레이션에 고객번호 없는 주문도 모두 보이시오.


정답

  1. 고객 \({\large⟕}_{\small (\mathrm{고객.고객번호}, \; \mathrm{주문.고객번호})}\) 주문
  2. 고객 \({\large⟗}_{\small (\mathrm{고객.고객번호}, \; \mathrm{주문.고객번호})}\) 주문
  3. 고객 \({\large⟖}_{\small (\mathrm{고객.고객번호}, \; \mathrm{주문.고객번호})}\) 주문


질의 결과

11. 외부 조인 외부 조인의 예


12. 세미 조인(semi join)

  • 자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환
  • 기호에서 닫힌 쪽 릴레이션의 튜플만 반환함
  • 형식
    • 왼쪽 세미조인: \(R \; {\large\ltimes}_{\small (r, \; s)} \; S\)
    • 오른쪽 세미조인: \(R \; {\large\rtimes}_{\small (r, \; s)} \; S\)



질의 2-10 마당서점의 고객 중 주문 내역이 있는 고객의 고객정보를 보이시오.


정답

고객 \({\large\ltimes}_{\small (\mathrm{고객.고객번호}, \; \mathrm{주문.고객번호})}\) 주문


질의 결과

12. 세미 조인 세미조인(왼쪽이 닫힌 경우)의 예


13. 디비전(division)

  • 다른 연산과 달리 릴레이션의 속성 값의 집합으로 연산을 수행함
  • 특정 값들을 모두 가진 튜플을 찾을 때 사용함
  • 실제로는 자주 사용되지는 않음
  • 조인 연산을 이용해 디비전 연산을 수행할 수 있음
  • 형식: $R \div S$

13. 디비전

14. 관계대수 복합 연산 예제

14.1. $\sigma$, $\pi$, 집합 연산의 복합 사용



질의 2-11 마당서점의 도서 중 가격이 8,000원 이하인 도서 이름과 출판사를 보이시오.


  • 마당서점이 하나인 경우


정답

\[{\large\pi}_{ \mathrm{도서이름, \; 출판사} } ( {\large\sigma}_{\mathrm{가격} \leq 8000}\mathrm{도서})\]


질의 결과

14. 셀렉션, 프로젝션의 복합 사용 단일 릴레이션에서 셀렉션, 프로젝션의 복합 사용


  • 마당서점이 둘 이상인 경우


정답

\[{\large\pi}_{ \mathrm{도서이름, \; 출판사} } ({\large\sigma}_{\mathrm{가격} \leq 8000}\mathrm{도서A} \;\cup\; {\large\sigma}_{\mathrm{가격} \leq 8000}\mathrm{도서B})\]


질의 결과

14. 셀렉션, 프로젝션의 복합 사용 2 단일 릴레이션에서 셀렉션, 프로젝션의 복합 사용 2




14.2. $\times$, 조인 연산의 복합 사용



질의 2-12 마당서점의 박지성 고객의 거래내역 중 주문번호, 이름, 가격을 보이시오.


  • 조인을 사용한 연산


정답

\[{\large\pi}_{ \mathrm{주문번호, \; 이름, \; 판매가격} } ({\large\sigma}_{ \mathrm{이름='박지성'} }(\mathrm{고객} \; {\large\bowtie}_{ \mathrm{고객.고객번호} = \mathrm{주문.고객번호} } \; \mathrm{주문}))\]


질의 결과

14. 카티전 프로덕트, 조인의 복합 사용



  • 카티전 프로덕트를 사용한 연산


정답

\[{\large\pi}_{ \mathrm{주문.주문번호, \; 고객.이름, \; 주문.판매가격} } ({\large\sigma}_{ \mathrm{고객.고객번호=주문.고객번호} \;\wedge\; \mathrm{고객.이름='박지성'} }(\mathrm{고객}\times\mathrm{주문}))\]


질의 결과

14. 카티전 프로덕트, 조인의 복합 사용 2


이 포스팅은 작성자의 CC BY-NC 4.0 라이선스를 준수합니다.