기본 연산자 : SELECT, PROJECT, UNION, DIFFERENCE, CARTESIAN PRODUCT
파생 연산자 : INTERSECTION, JOIN, DIVISION
관계 연산자 : 특수 연산자 예제 테이블 : 학생
학번
이름
학년
전공
점수
01
오태훈
3
컴퓨터
80
02
이재현
2
전자
85
03
노병두
1
수학
70
04
이영덕
4
전기
79
SELECT(σ)
릴레이션에 존재하는 튜플들 중에서 특정 조건을 만족하는 튜플들의 부분 집합을 구하여 새로운 릴레이션을 생성
릴레이션에서 행에 해당하는 조건을 만족하는 튜플을 구하는 것이므로, 수평 연산이라고도 함. 표기형식 :
예) '학생' 릴레이션에서 점수 속성의 값이 80점 이상인 튜플을 SELECT :
PROJECT(π)
주어진 릴레이션에서 속성 리스트에 제시된 속성값만을 추출하여 새로운 릴레이션을 생성
릴레이션에서 열에 해당하는 속성을 추출하는 것이므로, 수직 연산이라고도 함 표기형식:
예) '학생'릴레이션에서 이름과 전공 속성을 PROJECT :
JOIN(⋈)
공통 속성을 중심으로 두 릴레이션을 하나로 합쳐서 새로운 릴레이션을 생성
표기형식 : 릴레이션1 ⋈릴레이션2
예) '학생' 릴레이션과 '성적' 릴레이션에서 학번이 같은 속성을 JOIN : 학생⋈성적
조인의 종류
동등 조인(Equi Join) : 릴레이션의 공통 속성을 기준으로 같은 값을 가지는 행을 조인
자연 조인(Natural Join) : 동등 조인 결과에서 중복되는 속성을 제거
외부 조인(Outer Join) : 조인 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 조인
세미 조인(Semi Join) : 분산 데이터베이스 환경에서 두 릴레이션 간의 조인 시 한 릴레이션을 다른 사이트에 전송하기 전에 먼저 조인 속성만을 추출하는 프로젝션을 실시하여 전송한 후 , 다른 사이트에서 조인에 성공한 튜플만을 전송 받아 다시 조인을 수행함으로써, 네트워크를 통해 전송되는 데이터의 양을 줄이고자 하는 개념을 도입
DIVISION(÷)
2개의 릴레이션의 관계에서 한 릴레이션의 모든 튜플들과 관계를 갖는 특정 속성값들을 검색
표기형식 : 릴레이션1÷릴레이션2
공급(회사명,부품번호,수량)
부품(부품번호, 부품명,색상,용량)
예) 모든 부품들을 다 공급하는 회사명을 구하여라 : 공급[회사명,부품번호]÷부품[부품번호]
집합 연산자
연산 집합
UNION(U)
En 릴레이션에 존재하는 튜플의 합집합을 구하는 연산
결과로 생성된 릴레이션에서 중복되는 튜플은 제거
R1 U R2 = {t : t ∈ R1 or t ∈ R2}
INTERSECTION(∩)
두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
R1 ∩ R2 = {t : t ∈ R1 and t ∈ R2}
DIFFERENCE(-)
두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
R1 - R2 = {t : t ∈ R1 and t ∉ R2}
CARTESIAN PRODUCT(X)
두 릴레이션에 존재하는 튜플들의 겹합된 튜플들을 구하는 연산
R1 X R2 = {t1 · t2 : t1 ∈ R1 and t2 ∈ R2}
관계 대수 연산자의 특징 및 고려 사항
닫힘 특성(Closure Property)
관계 대수의 연산자의 결과는 항상 릴레이션의 형태가 보장
비관계(Non-Relational) 대수
그룹 함수(Aggregate Function) : COUNT, SUM, AVG, MAX, MIN 등
관계 대수는 재귀적 질의(Recursive Query)를 지원하지 못함
예) 사원 테이블을 조인하여 사장 밑에 속한 모든 사원의 계층을 구하라.
연산자들의 종류와 기호
종류
연산자
기호
비고
순수관계 연산
셀렉트(select)
σ
기본연산
프로젝트(project)
Π
기본연산
조인(join)
⋈
복합연산
디비전(division)
÷
복합연산
집합 연산
합집합(union)
∪
기본연산
교집합(intersect)
∩
복합연산
차집합(difference)
−
기본연산
카티션프로덕트(cartesian product)
x
기본연산
확장관계 연산
세미조인(semi join)
⋉
복합연산
외부조인(outer join)
⋈+
복합연산
관계 해석(Relational Calculus)
관계 해석의 개념
원하는 릴레이션을 정의하는 방법을 제공(비절차적 언어)
{ 결과 | 조건 } : 조건을 만족하는 결과를 나타냄
튜플 관계 해석과 도메인 관계 해석이 존재
튜플 관계 해석
{ t | P(t) } : 술어 P가 참인 모든 튜플 t들의 집합을 나타냄 { t | t ∈ 학생 ∧ t[점수] > 90 }
예) 학생(학번,이름,점수) 테이블에서 성적이 90점보다 큰 학생은 ?
도메인 관계 해석
{<x1,x2,…, xn> | P(x1, x2, .. , xn) : xi(1 ≤ i ≤ n}는 도메인 변수를 나타냄 { <학번,이름,점수> | <학번,이름,점수> ∈ 학생 ∧ 점수 > 90 }
예) 학생(학번,이름,점수) 테이블에서 성적이 90점 보다 큰 학생은 ?
관계 해석의 특징
비절차적(Non-procedural) 또는 선언적(Declarative) 언어 : 검색 연산의 과정을 명시할 필요 없음.
술어 놀리(Predicate Logic)에 기반을 둠
튜플 해석과 도메인 해석 2가지 모두가 관계 대수와 동등한 검색 표현 능력(Retrieval Expressive Power)을 보유