[DB] 관계 대수

박시은·2023년 10월 3일
0

DB

목록 보기
4/8
  • 관계 데이터 모델의 데이터는 릴레이션들로 구성된다.
  • 릴레이션에 대한 연산을 어떻게 할까? 한번 알아보자.

▶ 관계 대수

개념

  • 릴레이션(튜플들의 집합)을 처리하기 위한 연산의 집합을 말한다.
  • 집합이기 때문에 폐쇄성질을 갖고 있어 중첩된 수식 표현이 가능하다.
    • 따라서 각 연산의 피연산자와 연산 결과가 릴레이션이다. (릴레이션 + 릴레이션 = 릴레이션)
  • 수학적 집합 이론에서부터 나온 일반 집합 연산자와 DB에 적용할 수 있도록 개발된 순수 관계 연산자가 있다.



▶ 일반 집합 연산자

▷ 합병 가능 조건 (집합 연산자 특징)

1) 연산하고자 하는 두 릴레이션의 차수가 같아야 한다.(== 속성 개수가 같아야 한다.)
2) 2개의 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 한다.(도메인이 같으면 속성의 이름은 달라도 됨)

⚠️ 합집합, 교집합, 차집합은 합병 가능 조건을 만족해야하지만, ⭐카티션 프로덕트는 합병 가능 여부와 상관없이 연산이 가능하다. (튜플 집합을 기준)


▷ 합집합 [ ∪ ]

개념

  • 차수(R∪S): 차수(R) = 차수(S)
  • 카디널러티: |𝑅 ∪ 𝑆| ≤ |𝑅| + |𝑆|
    • 릴레이션의 특성상(중복 튜플이 존재할 수 없다) 결과로 나타나는 튜플은 단 한 개이다.
  • 교환법칙, 결환법칙 성립 O

차수: 속성의 개수
카디널러티: 튜플의 개수


▷ 교집합 [ ∩ ]

개념

  • 두 릴레이션 𝑅과 𝑆에 동시에 속해 있는 튜플로만 구성된 릴레이션

  • 차수(𝑅 ∩ 𝑆) = 차수(𝑅) = 차수(𝑆)

  • 카디널러티 = |𝑅 ∩ 𝑆| ≤ min (|𝑅| , |𝑆|)

  • 교환법칙, 결환법칙 성립 O


▷ 차집합 [ - ]

개념

  • 릴레이션 𝑅에는 있지만 𝑆에는 없는 튜플로만 구성된 릴레이션

  • 차수(𝑅 − 𝑆) = 차수(𝑅) = 차수(𝑆)

  • 카디널러티 = |𝑅 − 𝑆| ≤ |𝑅|

  • 교환법칙, 결환법칙 성립 X


▷ 카티션 프로덕트 [ X ]⭐

개념

  • 두 릴레이션에 있는 튜플들을 가능한 조합으로 모두 연결시키는 연산

  • 매우 큰 릴레이션을 만들어 냄

  • 튜플이 몇 개든 상관 X → 합병 가능 조건 필요 X

  • 차수(𝑅 × 𝑆) = 차수(𝑅) + 차수(𝑆)

  • 카디널러티 = |𝑅 × 𝑆| = |𝑅| × |𝑆|

  • 교환법칙, 결환법칙 성립 O




▶ 순수 관계 연산자

▷ 셀렉트 [ ∂ ]

개념

  • 릴레이션에서 주어진 조건을 만족하는 튜플들을 골라 연산하는 것
  • 수평적 부분집합
    • 수행 전과 후의 차수 동일(카티넬러티는 차수 같거나 작아짐)


예시

<고객 릴레이션>

아이디이름나이등급적립금
sssienlove박시은6gold1004
koriov김춘자80silver3000
kimchi03홍길동64gold8000
youmeo한미오22vip2300

<고객 릴레이션에서 등급이 gold인 튜플을 검색해보자>

아이디이름나이등급적립금
sssienlove박시은6gold1004
kimchi03홍길동64gold0



<고객 릴레이션에서 등급이 gold이고, 적립금이 2000이상인 튜플을 검색해보자>

아이디이름나이등급적립금
kimchi03홍길동64gold8000



▷ 프로젝트 [ π ]

개념

  • 한 릴레이션에서 지정된 속성들을 선택하는 연산
  • 릴레이션의 수직적 부분집합
  • ⚠️결과에 튜플이 중복되는 경우 제거된다!
    • 결과도 튜플의 집합(릴레이션)이기 때문이다. 릴레이션은 중복이 존재하면 안된다.


예시

<고객 릴레이션>

아이디이름나이등급적립금
sssienlove박시은6gold1004
koriov김춘자80silver3000
kimchi03홍길동64gold8000
youmeo한미오22vip2300

<고객 릴레이션에서 등급을 검색해보자>

등급
gold
silver
vip

중복되는 튜플이 존재할 수 없다는 릴레이션의 기본 특성을 유지한다.


<고객 릴레이션에서 이름, 등급, 적립금을 검색해보자>

이름등급적립금
박시은gold1004
김춘자silver3000
홍길동gold8000
한미오vip2300



▽ 조인 [ ⋈ ]

개념

  • 공통 속성(조인 속성)을 기준으로 두 릴레이션을 조합하여 하나의 결과 릴레이션을 만든다.

  • ⭐조인 vs 카티션 프로젝트
    카티션 프로젝트(조건 없이 모든 튜플들만 결합)와 달리 조인은 특정 조건을 만족하는 튜플들만 결합

  • 여러 종류의 조인 연산이 존재한다.

  • 조인 연산을 다른 연산으로 대체할 수 있다.


① 세타 조인 ( 𝑅 ⋈𝐴𝜃𝐵 𝑆 )

개념

  • 비교 연산자( =,<>,<=,<,>=,> )를 사용하여 조건을 만족하는 튜플들을 결합한 조인
  • 𝜃: 조인 조건에 사용되는 비교 연산자



② 동등 조인 ( 𝑅 ⋈𝐴=𝐵 𝑆 )

개념

  • 동등 조인(=내부조인)은 세타 조인 중에서 비교 연산자가 =인 조인
    • 즉, 릴레이션 A의 속성과 릴레이션 B의 어트리뷰트가 값이 같은 속성만 결합시키는 것
  • 일반적으로 조인이라 하면 동등 조인을 의미한다.
  • 동등 조인 연산에서는 자연 조인과 달리 속성이 중복되어 나타난다.
  • 결과 차수 = 𝑅의 차수 + 𝑆의 차수

동등조인 예시

< 고객 릴레이션 >

아이디이름나이등급
sssienlove박시은6gold
koriov김춘자80silver
kimchi03홍길동64gold
youmeo한미오22vip

< 주문 릴레이션 >

주문번호주문고객주문 제품수량
10sssienlove돈가스12
11koriov칼국수8
12kimchi03우동6

< 결과 릴레이션 ( 고객 ⋈ 주문 ) >

아이디이름나이등급주문번호주문고객주문 제품수량
sssienlove박시은6gold10sssienlove돈가스12
koriov김춘자80silver11koriov칼국수8
kimchi03홍길동64gold12kimchi03우동6

  • 주문 릴레이션은 고객 릴레이션의 아이디 속성을 외래키로 가지고 있다.

  • 이때 주문고객 속성은 고객 릴레이션의 기본키인 아이디를 참조한 것이며, 두 릴레이션의 관계를 성사시킨다.



③ 자연 조인

개념

  • 동등 조인의 결과에서 조인 속성을 제외한 조인 (중복 속성 제거)

아이디이름나이등급주문번호주문 제품수량
sssienlove박시은6gold10돈가스12
koriov김춘자80silver11칼국수8
kimchi03홍길동64gold12우동6



▷ 디비전 [ ÷ ]

개념

  • R ÷ S : 릴레이션 S의 모든 튜플과 관련 있는 릴레이션 R의 튜플로 결과 릴레이션을 구성한다
  • 단, 릴레이션 R이 릴레이션 S의 모든 속성을 포함하고 있어야 연산이 가능하다. (S의 모든 속성과 도메인이 같은 속성을 R이 포함하고 있어야 한다는 뜻)

예시

< 고객 릴레이션 >

아이디이름나이등급적립금
sssienlove박시은6gold1004
koriov김춘자80silver3000
kimchi03홍길동64gold8000
youmeo한미오22vip2300

< 우수 등급 릴레이션 >

등급
gold

< 결과 릴레이션 >

아이디이름나이적립금
koriov김춘자803000
youmeo한미오222300




▶ 관계 대수의 확장

관계 대수 연산을 확장하여 유용한 연산을 추가 정의


▷ 세미 조인 [ ⋉ ]

개념

  • 𝑅(𝑋)에 대한 𝑆(𝑌)의 세미 조인: 𝑅 ⋉ 𝑆
  • 자연 조인에 참여할 수 있는 튜플들만 골라내는 것
  • 교환법칙 성립x

예시

  • 주문한 적이 있는 고객 데이터 검색



▽ 외부 조인 (Outer join)

  • 한 릴레이션에 있는 튜플이 조인할 상대 릴레이션에 대응되는 튜이 없을 경우, 상대를 널(null) 튜플로 만들어 결과 릴레이션에 포함
    • 누락 정보를 처리하기 위한 조인의 확장
    • ex) 주문한 적이 없는 고객도 null로 채워 포함시킴

① 왼쪽 외부 조인 [ ⟕ ]

  • 왼쪽에 있는 튜플들을 기본적으로 포함시키고 관련된 튜플이 없으면 null값으로 표시

② 오른쪽 외부 조인 [ ⟖ ]

  • 오른쪽에 있는 튜플들을 기본적으로 포함시키고 관련된 튜플이 없으면 null값으로 표시

③ 완전 외부 조인 [ ⟗ ]

  • 𝑅과 𝑆의 모든 튜플들을 결과에 포함시키고, 상대 릴레이션에 관련된 튜플이 없으면 결과 릴레이션에서 상대 릴레이션의 속성들은 널 값으로 채움



▷ 집계 함수

집계 함수의미
SUM합계
AVG평균
MAX최대값
MIN최소값
COUNT개수

예시



▷ 그룹핑

개념

  • 릴레이션은 그룹핑 속성 값에 의해 분할되고, 각 그룹에 속하는 튜플들에 대해 집계 함수를 적용

  • GROUPA FB (R)

    • F: 집계 함수
    • A: 그룹핑 속성
    • B: 집계 함수 적용 대상 애트리뷰트

예시

사원 전체의 급여 평균 값을 계산하는 것이 아닌 사원이 속해있는 부서별로 급여 평균 값 계산




▶ 정리 문제

다음 질의문을 관계 대수로 표현하시오.

  1. 등급이 gold인 고객의 이름과 나이를 검색하라.

  1. 원유선 고객에 대해, 등급, 주문한 제품,주문 수량을 검색하라.


  1. 주문수량이 10개 미만인 내역을 제외한 주문 내역을 검색하라.

  1. <‘delta’, ‘시은’, 21, ‘vip’> 고객을 삽입하라.

  1. 아이디가 orange인 고객을 삭제하라.

모든 과목을 수강(등록)한 학생의 학번과 이름을 검색하
는 질의를 관계 대수로 표현하시오.




📎참조

profile
블로그 이전했습니다!

0개의 댓글