관계대수
- 관계 대수 : 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어 , 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며, 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원 이하인 도서이름과 출판사를 구하라
'Back > DataBase이론' 카테고리의 다른 글
4장 SQL 고급 (0) | 2023.03.27 |
---|---|
3장 SQL 기초 (0) | 2023.03.23 |
2장 관계 데이터 모델 -1 (0) | 2023.03.23 |
1장 데이터베이스 시스템 (0) | 2023.03.22 |
0장 서론 (0) | 2023.03.22 |