1. 관계 연산 (Relational Operation)
ㅇ 관계 대수 (Relational Algebra)
- 관계 모델을 위한 기본적인 연산들의 집합
. 원하는 데이터를 얻기위해 단계적으로 처리 절차를 적용
- (절차적 => 연산들의 단계적 모음) ☞ 아래 2.,3.,4.항 참조
ㅇ 관계 해석 (Relational Calculus)
- 단지 원하는 데이터가 무엇인지를 나타내는 상위 레벨의 선언적 질의문 형식
. 원하는 데이터를 한번에 모두 요구
- (비 절차적 => SQL) ☞ SQL (구조화 질의 언어) 참조
2. 관계 대수의 특징
ㅇ 입출력
- 1 이상의 릴레이션을 입력으로 받아들여 새로운 결과 릴레이션을 만들어내는 연산 집합
ㅇ 표현식 형태
- 사칙 연산과 같은 대수적 표기 보다는, 술어논리(명제함수)를 이용한 관계적 대수식 사용
ㅇ 연산의 구성/종류 ☞ 아래 3.항 참조
- `수학적 집합 연산`과 `릴레이션 간의 상호관계 표현용 연산`을 모두 포함
. 피연산자는, 릴레이션이며,
. 연산자는, 셀렉션, 프로젝션, 디비전 등 수학의 집합 개념에 기초한 연산자
3. 관계 대수의 연산 구분
ㅇ 수학의 집합이론에서 차용 : 하나의 논리적 기능 수행 (E.F. Codd가 정의한 8가지 연산)
- 일반 집합 연산 : 수학의 집합 연산으로부터 차용
. 합집합 (Union) : ∪
. 교집합 (Intersection) : ∩
. 차집합 (Difference) : -
. 카테시안곱 (Cartesian Product) : ×
- 순수 관계 연산
. 선택 (Select, Selection) : σ
. 추출,사영 (Project, Projection) : π
. 조인 (Join) : ⨝
. 나누기 (Divide, Division) : ÷
. 때론, 이름변경 (Rename)도 포함
ㅇ 유도 가능 연산 여부에 따른 구분
- 기본 연산 : 선택, 추출, 합집합, 차집합, 카테시안곱 (이들 5개 만 독립적임)
- 유도 연산 : 나누기, 교집합, 조인
. 例) R∩S = R - (R - S) 처럼, 차집합 2번이면 교집합이 됨
ㅇ 복합 연산 : 여러 기본 연산의 조합으로 표현 가능
- 자연 조인 (Natural Join)
- 교집합 (Intersection)
- 배정 (Assignment)
- 외부 조인 (Outer Join) 등
ㅇ 단항 연산 : 하나의 릴레이션에 대해서만 연산 수행
- 선택 (Selection), 추출 (Project), 이름변경 (Rename)
ㅇ 이항 연산 : 2개의 릴레이션에 대해서 연산 수행
- 교집합 (Intersection), 자연 조인 (Natural Join), 배정 (Assignment)
ㅇ 기타 연산
- 집계 연산 (Aggregate Function) : SUM,AVERAGE,MAX,MIN,COUNT 등
4. 관계 대수의 기본 연산별 설명
ㅇ 선택 (Select) ☞ SELECT 구문 참조
- 주어진 술어(Predicate)를 만족하는 튜플들을 선택(필터링)하여, 튜플의 수를 줄임
. SQL 例) WHERE,HAVING절을 이용하여 튜플(행)을 걸러냄
- 릴레이션을 가로로 잘라내는 것으로써,
. 관심있는 튜플만 추출하는 것이 가능함
ㅇ 추출 (Project), 사영 (Projection)
- 어떤 속성(열,칼럼) 만을 뽑아내어, 결과 릴레이션에 돌려줌으로써, 튜플의 범위를 줄임
. SQL 例) 집계 함수,GROUP BY절을 포함한 SELECT절로 구현함
- 릴레이션을 세로로 잘라내는 것으로써,
. 릴레이션에서 원하는 속성만 뽑아낼 수 있음
ㅇ 조인, 결합 (Join) ☞ 조인(JOIN) 참조
- 키 값으로 연결된 테이블들을 서로 결합하여, 튜플의 크기를 줄임
. SQL 例) FROM절에 JOIN 키워드를 사용하여 조인 수행
- 결합 속성 관계로부터, 두 릴레이션 간의 튜플을 결합시키는 연산
ㅇ 나누기 (Divide)
- 모든 요구사항(특정 데이터 집합)을 만족하는 데이터 집합
. SQL 例) 이를 직접 구현한 상용 RDBMS는 없음
ㅇ 합집합 (Union) ☞ 유니온(UNION) 참조
- 선택과 추출 작업을 한 두 결과 집합을 병합한 결과를 반환
. SQL 例) SELECT () UNION SELECT ()
ㅇ 교집합 (Intersection)
- 선택과 추출 작업을 한 두 결과 집합 중 동일 컬럼인 경우 만 반환 수행
. SQL 例) SELECT () INTERSECT SELECT () (DB2,SQL Server,오라클,PostgresSQL 등 만 지원)
ㅇ 차집합 (Difference)
- 한 집합에서 다른 집합을 빼는 것
. SQL 例) SELECT () EXCEPT SELECT () : DB2, MS SQL Server,PostgreSQL
SELECT () MINUS SELECT () : Oracle
ㅇ 카테시안곱 (Cartesian Product)
- 두 결과 테이블 간에 모든 결합 가능한 결과를 반환
. SQL 例) FROM절에 JOIN절 없이 해당 테이블들 만 명시하면 됨 (또는, 명시적으로 CROSS JOIN)