Back/DataBase이론

2장 관계형 데이터베이스 - 2

잘잔디 2023. 3. 23. 14:06

관계대수

  • 관계 대수 : 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어 , 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며, DBMS 내부의 처리 언어로 사용됨.
  • 관계해석 : 어떤 데이터를 찾는지만 명시하는 선언적인 언어로 관계대수와 함께 관계 DBMS의 표준 언어인 SQL의 이론적인 기반을 제공함.

→ 관계대수와 관계해석은 모두 관계 데이터 모델의 중요한 언어이며 실제 동일한 표현 능력을 가지고 있음.

관계의 수학적 의미

  • 릴레이션은 수학적으로 집합이므로 집합에서 가능한 연산 합집합, 교집합, 카티전 프로덕트(X) 등의 연산이 가능함.
  • 카티전 프로덕트(곱셈연산)은 두 집합(릴레이션)으로 만들 수 있는 모든 집합의 모음을 말하며, 카디전 프로덕트의 결과로 발생한 부분집합 또한 하나의 릴레이션으로 취급된다.

관계대수 연산자

관계대수식

  • 관계대수는 릴레이션 간 연산을 통해 결과 릴레이션을 찾는 절차를 기술한 언어로, 이 연산을 수행하기 위한 식을 관계대수식(Relational algebra expression)이라고 함.
  • 관계대수식은 대상이 되는 릴레이션과 연산자로 구성되며, 결과는 릴레이션으로 반환됨.
  • 반환된 릴레이션은 릴레이션의 모든 특징을 따름
    • 단항 연산자 : 연산자(조건) 릴레이션
    • 이항 연산자 : 릴레이션1 연산자(조건) 릴레이션2

관계대수 식의 예시

1. 셀렉션(selection)

  • 릴레이션의 튜플을 추출하기 위한 연산이다.
  • 하나의 릴레이션을 대상으로 하는 단항 연산자이며, 찾고자 하는 튜플의 조건(predicate)을 명시하고 그 조건에 만족하는 튜플을 반환함

EX) 마당서점에서 판매하는 도서 중 8000원 이하의 도서를 검색하시오

셀렉션의 확장

  • 여러 개의 조건을 and , or , not 기호를 이용하여 복합조건을 표시할 수 있다.

ex) 가격이 8000원 이하이고, 도서번호가 3 이하인 책을 찾아라

프로젝션(projection)

  • 릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자임.

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

합집합

  • 두 개의 릴레이션을 합하여 하나의 릴레이션을 반환함. 이 때 두개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 함.

EX) 마당서점은 지점A와 지점B가 있다. 두 지점의 도서는 각 지점에서 관리하며 릴레이션 이름은 각각 도서A, 도서B다. 마당서점의 도서를 하나의 릴레이션으로 보여라.

교집합

  • 합병가능한 두 릴레이션을 대상으로 하며, 두 릴레이션이 공통으로 가지고 있는 튜플을 반환함

EX) 마당서점의 두 지점에서 동일하게 보유하고 있는 도서 목록을 보이시오

차집합

  • 첫 번째 릴레이션에는 속하고 두 번째 릴레이션에는 속하지 않는 튜플을 반환함.

EX) 마당서점 두 지점 중 A지점에만 보유하고 있는 도서 목록을 보이시오.

카티전 프로덕트(Cartesian product)

  • 두 릴레이션을 연결시켜 하나로 합칠 때 사용함. 결과 릴레이션은 첫 번쨰 릴레이션의 오른쪽에 두 번째 릴레이션의 모든 튜플을 순서대로 배열하여 반환함. 결과 릴레이션의 차수는 두 릴레이션의 차수의 합이며, 카디널리티는 두 릴레이션의 카디널리티의 곱임

고객 X 주문

조인(join)

  • 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산임. 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함.
  • 조인 연산의 결과는 공통 속성의 속성 값이 동일한 튜플만을 반환함.
  • 양쪽 테이블에 공통으로 있는 key field(기본키와 외래키)가 같은 경우에 대해 cartesiana product를 적용하는 것

세타 조인(theta join(θ))

  • 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환함
  • 세타조인의 조건은 (=, ≠ ≤ , ≥ , < , >) 중 하나가 됨.

동등조인(equi join)

  • 세타조인에서 = 연산자를 사용한 조인을 말함. 보통 조인 연산을 동등조인을 지칭함.

동등조인 예시

자연 조인(natural join)

  • 동등조인에서 조인에 참여한 속성이(열) 두 번 나오지 않도록 두 번째 속성을 제거한 결과를 반환함.

EX) 고객과 고객의 주문 사항을 모두 보여주되 같은 속성은 한 번만 표시하시오.

외부조인(outer join)

  • 자연조인 시 조인에 실패한 튜플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환.
  • 모든 속성을 보열주는 기준 릴레이션 위치에 따라 왼쪽(left) 외부조인, 오른쪽(right) 외부조인, 완전전(full) 외부조인으로 나뉨.
  • 고객 LEFT OUTER JOIN 주문 시 고객 테이블에 있지만 주문 테이블에 매칭되는 값이 없는 경우에도 고객 테이블은 출력하는 방식이다.

semi join

  • 자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환하며, 기호에서 닫힌 쪽 릴레이션의 튜플만 반환함.

division

  • 릴레이션의 속성 값의 집합으로 연산을 수행함.

R ÷ S

셀렉션, 프로젝션, 집합연산의 복합 사용

  • 단일 릴레이션에서 셀렉션, 프로젝션 연산의 복합 사용이 가능하다.

EX) 마당서점의 도서 중 가격이 8000원 이하인 도서이름과 출판사를 구하라