
- 관계 데이터 연산의 목표는 기존의 릴레이션으로 새로운 릴레이션을 생성하는 것이다.

- 관계 대수는 절차적 언어, 관계 해석은 비절차적 언어이다.
- 일반 집합 연산자와 순수 관계 연산자의 차이를 이해하고 질의 표현법을 익히는 것이 목표다.

- 데이터 모델은 데이터구조+연산+제약조건 으로 이루어진다.

- 관계 데이터 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것이다.
- 관계 데이터 연산에는 크게 관계대수와 관계 해석이 있다.
- 관계대수는 원하는 결과를 얻기 위해 데이터 처리과정을 순서대로 기술한 것이거, 관계 해석은 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술한다.

- 관계 대수의 정의는 위와 같다.
- 릴레이션을 처리하는 연산자는 8개가 있으며, 일반 집합 연산자와 순수 관계 연산자로 분류된다.
- 피연산자도, 연산의 결과도 릴레이션인 "폐쇄 특성"이 있다.

- 관계 대수의 연산자는 일반집합/순수관계로 구분된 위 8가지다.

- 일반 집합 연산자는 릴레이션이 투플의 집합이라는 개념을 이용하는 연산자다. 합집합, 교집합, 차집합, 카티션 프로덕트 총 4가지가 있다. 정의는 위와 같다.
- 카티션 프로덕트는 릴레이션이 연결될 수 있는 모든 경우의 수를 고려한 것이다.

- 일반 집합 연산자를 도식화해 표현하면 다음과 같다.

- 순수 관계 연산자는 기존 릴레이션의 구조와 특성을 이용한다. 셀렉트, 프로젝트, 조인, 디비전 총 4가지의 연산자를 갖는다.
- 셀렉트는 릴레이션 R에서 조건을 만족하는 투플을 반환한다.
- 프로젝트는 릴레이션 R에서 주어진 속성들의 값으로만 구성된 투플을 반환한다.
- 조인은 공통 속성을 이용해 릴레이션 R과 S의 투플들을 연결하여 만들어진 새로운 투플들을 반환한다.
- 디비전은 릴레이션 S의 모든 투플과 관련이 있는 릴레이션 R의 투플을 반환한다.

- 순수 관계 연산자를 도식화했다. 셀렉트는 가로로, 프로젝트는 세로로 뽑아내는 것을 볼 수 있다.
- 디비전은 R에서 S에 포함된 속성을 공통적으로 가진 투플을 뽑아내며, 조인은 R과 S의 공통 속성을 연결시켜 하나의 새로운 투플을 만들고 반환한다.

- 일반 집합 연산자는 피연산자가 두개 필요하다. 즉 릴레이션이 두개여야 한다.
- 합집합, 교집합, 차집합은 피연산자인 두 릴레이션이 합병이 가능해야 한다.
- 합병 가는 조건은 두 릴레이션의 차수와, 대응되는 속성의 도메인이 같아야 한다.

- 위쪽의 고객 릴레이션, 직원 릴레이션은 나이와 직위의 속성과 도메인이 다르므로 합병이 불가능하다.
- 반면 아래쪽은 속성과 도메인이 모두 같아 합병이 가능하다.

- 합집합은 R U S 로 표현된다. 두 릴레이션에 속하는 모든 투플로 결과 릴레이션이 구성된다.

- 차수는 릴레이션 R과 S의 차수와 같고, 카디널리티는 R과 S의 카디널리티를 더한 것과 같거나 적다(적은 경우는 중복 때문에).
- 교환적, 결합적 특징이 있다.

- 교집합은 R과 S에서 중복된 값으로 결과 릴레이션으로 구성된다.

- 차수는 릴레이션 R과 S의 차수와 같고, 카디널리티는 릴레이션 R과 S의 어떤 카디널리티보다 크지 않다.
- 교환적, 결합적 특징이 있다.

- 차집합은 R에는 존재하고 S에서는 존재하지 않는 투플이 결과 릴레이션이 된다.
- 차집합은 교환적, 결합적 특징이 없다. R-S != S-R이다.

- 카티션 프로덕트는 릴레이션 R과 S에 속한 각 투플을 모두 연결하여 만들어진 새로운 투플로 결과 릴레이션을 구성한다.

- 차수는 릴레이션 R과 S의 차수를 더한 것과 같고, 카디널리티는 R과 S의 카디널리티를 곱한 것과 같다
- 교환적, 결합적 특징이 있다.

- 셀렉트는 릴레이션에서 조건을 만족하는 투플만 선택해 결과 릴레이션을 구성한다.
- 하나의 릴레이션을 대상으로 연산을 수행한다.
- 수학적 표현법은 시그마로 표현하며 데이터 언어적으로는 where을 사용한다.
- 조건식은 속성과 상수의 비교나 속성들 간의 비교로 표현하며, 비교연산자와 논리연산자를 이용해 작성한다.



- 위 투플에서 "고객 릴레이션에서 등급이 gold인 투플을 검색하시오"라는 예제가 있을 경우 다음과 같은 조건식과 결과 릴레이션이 생성된다.

- 셀렉트를 통한 결과 릴레이션은 연산 대상 릴레이션의 수평적 부분 집합이다.

- 위 예제에서는 다음과 같은 방법으로 결과 릴레이션을 뽑아낸다.


- 프로젝트 연산자는 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성한다.
- 하나의 릴레이션을 대상으로 연산을 수행한다.
- 수학적/데이터언어적 표현법은 다음과 같다.


- 여섯개 속성 중에서 특정 3개 속성을 검색할 수 있다.

- 수평적 부분집합인 셀렉트와 달리 프로젝트는 수직적 집합이 이루어진다.

- 조인 속성을 이용해 두 릴레이션을 조합한 결과 릴레이션을 구성할 수 있다.
- 두 릴레이션이 공통으로 가진 속성이 조인 속성이다.
- 표현법은 위와 같으며, 자연 조인이라고도 한다.


- 조인 연산을 통해 조인 속성으로 새로운 결과 릴레이션을 구성한다.

- 디비전은 두 가지의 릴레이션으로 2의 모든 투플과 관련있는 1의 투플로 결과 릴레이션을 구성한다.

- 우수등급 릴레이션인 gold와 관련된 1의 투플이 반환된다.

- 주문 내역 릴레이션과 제품 1과 제품 2와 관련된 투플을 제품 1,2의 속성을 제외하고 반환한다.


- 등급이 gold인 고객의 이름과 나이를 검색하는 연산은 다음과 같다.

- 고객이름이 원유선인 고객의 등급과 주문제품, 주문수량을 검색하려면 다음처럼 조인 속성을 이용한다.

- 주문수량이 10개 미만인 주문 내역을 삭제하려면 주문 릴레이션에서 수량이 10개 이하인 릴레이션을 빼면 된다.