관계 대수
는 관계형 데이터 모델의 일부이며, 지금까지 정의한 관계, 제약 사항에 대한 연산을 제공한다.데이터베이스에 대한 기본 연산에는 데이터에 대한 입력/삭제/갱신/검색 연산이 있으나, 여기서는 검색 연산만을 살펴보기로 한다. 관계 대수는 관계에 대한 다수 개의 검색 연산을 제공하며, 사용자는 관계 대수를 이용하여 데이터베이스로부터 구하고자 하는 정보를 데이터베이스 시스템에 요청(또는 표현)할 수 있다.
관계 대수
는 6개의 기본적인 연산이 있다. 관계 대수
는 input으로 하나 또는 두 개의 관계를 가지며, output으로 새로운 관계를 생성한다. select
는 하나의 relation만을 검색하므로 input이 하나만 필요하고 union
같은 경우는 테이블을 합치는 것이므로 2개의 input이 필요하다.상용 데이터베이스 시스템은 관계 대수를 직접적으로 사용자에게 지원하지 않고 SQL 언어를 지원한다. 관계 대수(또는 관계 대수의 변형)는 데이터베이스 시스템 내부에서 사용되는 언어이며, 사용자에게 직접 보이지는 않는다.
관계 대수 연산에 대한 국제 표준은 존재하지 않으며, 그 결과 교과서마다 저자마다 약간의 기호 또는 정의 차이가 있을 수 있음을 기억하자.
선택 연산
은 입력 관계에서 주어진 조건을 만족하는 튜플을 생성한다.t는 튜플을 의미하며, r은 relation을 의미한다.
예제의 선택 연산은, 교수 중에서 CS 과에 속한 교수를 검색한다.
투영 연산
은 관계에서 임의의 속성을 선택하는 연산이다.
선택 연산
이 튜플 단위로 원하는 결과를 구하는 것이라면,투영 연산
은 속성 단위로 원하는 결과를 구하는 것이라고 할 수 있다.
합집합 연산
은 각 관계에서 튜플의 합을 구하는 연산이다.일반 수학 집합 연산에는 합집합, 교집합, 차집합이 있으며, 관계대수에서도 합집합, 교집합, 차집합 연산이 존재한다.
Relation
= 튜플을 원소로 가지는 집합으로 본다.course 관계에는 과목 개설 시기에 대한 정보가 없으므로 teaches 관계를 이용하였다.
차집합 연산
은 (한 관계의 튜플) - (다른 관계의 튜플)을 구하는 연산이다.카티시안곱 연산
은 입력 관계에 속하는 튜플의 모든 가능한 조합을 결과 관계로 산출한다.카티시안곱 연산
은 입력 관계의 각 튜플을 취하여 이를 연결(concatenation)하여 결과 관계를 만든다.두 개의 입력 테이블에 동일 속성이 존재하면, 재명명(rename) 연산을 이용하여 동일한 속성 이름이 없도록(disjoint) 하여야 한다. 이는 입력 테이블에 동일 속성 이름이 존재하면 자연 조인(natural join) 연산이 되기 때문이다.
arity는 속성의 개수를 의미
재명명 연산
은 단순히 테이블 이름이나 속성 이름을 변경하는 연산이며, 수학 기호는 ρ(rho)이다.입력 관계가 E이면, 이를 아래첨자에 표시된 바와 같이 재명명하여 결과 관계를 도출한다. 아래 첨자로 표현되는 명시부에서 X는 관계명, A1, ..., An는 속성명을 나타낸다. 관계명만 또는 속성명만 재명명이 가능하며, 관계명만 변경하고자 할 때에는 아래 첨자 명시부에서 속성명을 생략하면 된다. 속성명만 변경하고자 할 때에는 아래 첨자 명시부에서 '관계(속성명)'을 모두 명시하여야 한다.
관계대수 식의 결과는 관계이므로 관계대수 식의 합성이 가능하다. 입력 관계 대신에 유효한 관계 대수식을 사용될 수 있으며, 이를 이용하여 복잡한 질의문 작성이 가능하다.
본 절에서는 기본적인 관계 대수 외에 추가적으로 사용되는 관계 대수를 설명한다. 추가되는 관계 대수는 이미 살펴본 기본 확장 대수를 이용하여 표현이 가능하므로, 관계대수의 표현력(expressive power)을 확장시키지는 않으며 다만 사용 편리성을 제공한다.
살펴볼 연산들은 다음과 같다 :
할당 연산자
는 복잡한 질의문을 작성할 때 중간 결과 표현을 임시로 저장할 수 있으므로 유용하게 사용할 수 있다. 교집합 연산자는 상기에 표기되어 있는 바와 같이, 2회 차집합 연산 적용으로 표현이 가능하므로 확장 관계 연산자에 속한다.
관계 대수 집합 연산자의 경우에, 입력 관계에 대한 속성 개수가 같고, 대응되는 속성의 데이터 타입이 상호 호환되어야 하는 조건은 동일하게 적용된다.
관계를 대상으로 하는 집합 연산 세 가지를 모두 살펴보았으며, 튜플을 하나의 원소로 취급하여 연산을 하며, 그 외 의미는 일반 집합 연산자 의미와 동일하다.
자연 조인은 입력 테이블에 대하여, 첫째 카티시안곱을 수행하고, 둘째 조인 조건을 이용하여 선택 연산을 수행하고, 셋째 조인 조건에 언급된 속성을 이용하여 투영연산을 수행한다.
조인은 기본적으로 카티시안곱, 선택연산, 투영연산을 수행하나, 선택연산과 투영연산 방법 차이에 의하여 세 가지 내부 조인(inner join)으로 구분할 수 있다.