티스토리 뷰

관계대수 - Relation Algebra

  • 릴레이션을 내부적으로 처리하기 위한 연산들의 집합
  • 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어
  • 검색 질의를 기술하는 언어
  • 사용자는 SQL을 사용하여 관계 데이터베이스에 릴레이션을 정의하고, 관계 데이터베이스에서 정보를 검색하고, 조작하고, 무결성 제약조건을 명시할 수 있다.

집합연산

집합 연산은 두 개의 릴레이션을 대상으로 하는 이항 연산자로 카티전 프로덕트를 제외한 3개의 연산은 두개의 릴레이션의 차수 및 도메인과 속성의 순서가 동일해야 한다.

즉, 속성의 개수가 같고, 속성의 도메인이 같고, 속성의 순서가 동일해야 합병 가능 (Union compatible) 하다.

Union _ 합집합

  • 두 릴레이션의 튜플을 합치는데 이때 중복이 발생하면 제거한다.
  • 두 릴레이션 R1과 R2의 합집합이 반환하는 것은 R1 or R2에 속하는 모든 튜플들로 구성된 렐레이션이다.

Intersection _ 교집합

  • 두 릴레이션 R1과 R2의 교집합이 반환하는 것은 두개의 릴레이션에 공통으로 존재하는 튜플만으로 구성된 릴레이션이다.

Difference _ 차집합

  • 두 릴레이션 R1과 R2의 차집합이 반환하는 것은 첫번째 릴레이션에는 속하지만 두번째 릴레이션에는 속하지 않는 튜플로 구성된 릴레이션이다.

Cartesian product _ 카티전 프로덕트

  • 두 릴레이션의 모든 튜플을 수평으로 결합하는 연산이다.
  • R1과 R2 릴레이션의 튜플이 만들 수 있는 모든 조합으로 구성된 릴레이션이다.
  • 연산할 두 릴레이션의 차수와 속성의 도메인, 속성의 순서가 동일할 필요가 없다.
  • 연산 결과로 나오는 릴레이션의 차수는 (R1 차수 + R2 차수), 카디널리티는 (R1 카디널리티 X R2 카디널리티)이다.
  • 동일한 속성값이 존재할 경우 충돌이 발생하여 <릴레이션 명>.<속성명>의 속성이 생성된다.

관계 연산

  • 릴레이션의 구조적 특성에 기반을 둔 연산
  • 관계형 데이터 모델을 위해 고안된 연산

Selection _ 셀렉션

  • 연산자 : σ
  • σ <조건> (R)
  • AND, OR, NOT을 사용할 수 있다. (∧, ∨, ㄱ)
  • 선택 조건식을 만족하는 튜플만을 선택하여 반환

서점에서 판매하는 도서 중 8000원 이하인 도서

-> σ 가격 ≤ 8000 (도서)

서점에서 판매하는 도서 중 8000원 이하이면서 재고가 5권이상인 도서

-> σ 가격 ≤ 8000 ∧ 재고 ≥ 5 (도서)

중간고사 성적이 기말고사 성적보다 작은 성적만 조회

-> σ 중간성적 ≤ 기말성적 (성적)

중간고사 성적이 기말고사 성적보다 작고 이름이 홍길동인 학생만 조회

-> σ 중간성적 ≤ 기말성적 ∧ 이름 = '홍길동' (성적)

 

Projection _ 프로젝션

  • 연산자 : π
  • π <속성 리스트> (R)
  • 릴레이션 R에서 속성 리스트에 나열된 속성 값만으로 구성된 튜플을 반환

고객 중에서 이름, 주소, 핸드폰번호만 추출

-> π 이름, 주소, 핸드폰 번호 (고객)

 

Division _ 디비젼

  • 연산자 : ÷
  • R1 ÷ R2
  • R1 튜플 중에서 릴레이션 R2의 모든 튜플과 관련 있는 튜플만을 반환한다.

 

Join _ 조인

  • 연산자 : ▷◁
  • R1▷◁ <조인 조건식> R2
  • 릴레이션 R1과 R2 튜플을 연결한 조합 중에서 조인 조건식을 만족하는 튜플만 반환
  • 조인은 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산이다.
  • 조인을 수행하기 위해서는 조인에 참여하는 속성이 동일한 도메인이여야 한다.
  • 종류 : 세타조인, 동등조인, 자연조인, 세미조인, 외부조인

세타조인

  • 세타조인은 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.
  • 조건 : {=, ≠, ≤, ≥, <, >}
  • R ▷◁ (r 조건 s) S  (R, S는 릴레이션, r, s는 각 릴레이션의 속성, 이때 두 속성은 동일한 도메인)

동등조인

  • 동등조인은 세타조인에서 조건이 {=}인 경우로 일반적인 조인 연산은 동등조인을 지칭한다.
  • R ▷◁ (r = s) S
  • 연산 시 나온 릴레이션의 차수는 (R 차수 + S 차수)이다. 조건에 사용된 속성이 둘다 유지된다.
  • 동일한 속성값을 첫번째 릴레이션의 속성을 먼저 쓰고, 두번째 릴레이션의 속성을 써서 순서로 구분한다.

고객과 고객별 주문사항을 보여라

-> 고객 ▷◁ (고객.고객번호 = 주문.고객번호) 주문

자연조인

  • 자연조인은 동등조인에서 조인에 참여한 조건 속성이 테이블에 두번 나오는 것을 제거하고 릴레이션을 반환한다.
  • R ▷◁ N(r, s) S
  • 자연조인의 릴레이션의 차수는 (R 차수 + S 차수 - 1) 이다.

고객과 고객별 주문사항을 보이되 같은 속성은 한번만 표기

-> 고객 ▷◁ N (고객.고객번호, 주문.고객번호) 주문

 

외부조인

  • 자연조인의 확장된 형태이다.
  • 외부조인은 자연조인 시 조인에 실패한 튜플도 모두 포함해서 보여주되 대응되는 비어있는 속성값은 NULL 처리한다.
  • 기준 릴레이션에 따라서 왼쪽 외부 조인, 완전 외부 조인, 오른쪽 외부 조인으로 나뉜다.

고객 릴레이션과 주문 릴레이션을 조인할 때 고객 번호와 주문 릴레이션의 고객 번호를 기준으로 조인하는 경우

  • 왼쪽 외부 조인 : 고객 기준으로 주문내역이 없는 고객도 모두 포함해서 주문내역을 보여라
  • 완전 외부 조인 : 주문내역이 없는 고객과 고객내역이 없는 주문을 모두 보여라
  • 오른쪽 외부 조인 : 주문을 기준으로 고객내역이 없는 주문을 모두 포함해서 주문내역을 보여라

  • 왼쪽이 기준일 경우 왼쪽 고객번호가 모두 살고 주문 릴레이션에 해당 고객번호가 없으면 NULL을 채운다.
  • 오른쪽이 기준일 경우 오른쪽 고객번호가 모두 살고 고객 릴레이션에 해당 고객번호가 없으면 NULL을 채운다.
  • 완전일 경우 왼쪽 + 오른쪽 경우를 모두 합친다.

세미조인

  • 자연조인의 확장된 형태이다.
  • 자연조인을 한 후 특정 릴레이션의 결과만을 반환한다.
  • R ▷< (r, s) S
  • 조인 기호에서 닫힌 쪽 릴레이션의 결과를 반환한다.

고객 중 주문 내역이 있는 고객만을 반환한다

-> 고객 ▷< (고객.고객번호, 주문.고객번호) 주문

-> 고객 릴레이션이 나오되 주문 내역이 존재하는 고객의 튜플만이 나오게 된다.

 


연습

Q. 마당서점의 박지성 고객의 거래 내역 중 주문번호, 이름, 가격을 보여라

  1. 주문번호, 이름, 가격을 보이기 위해 프로젝션을 사용한다.
  2. 조건을 확인한다.
    • 고객 == 박지성
  3. 어느 릴레이션에서 검색할지 확인한다.
    • 고객별 거래 내역 릴레이션

A. π 주문번호, 이름, 가격 (σ 고객.이름 = '박지성' (고객 ▷◁ N (고객.고객번호, 주문.고객번호) 주문) )

 

DBMS는 사용자의 질의에 따라 내부에서 질의 최적화 (Query Optimization) 과정을 거쳐 같은 결과를 내는 여러 대수식을 생성하고,
그 중 가장 효율적인 대수식을 선택하여 처리하게 된다.
반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday