관계 데이터 연산
관계 데이터 모델에서 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로 데이터 언어의 역할
- 연산은 관계 대수와 관계 해석으로 나누어진다.
- 관계 대수는 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 것이다.
- 관계 해석은 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 것이다.
- 관계 대수와 관계 해석은 기능과 표현력은 동등하기 때문에 관계 대수로 기술된 요구를 관계 해석으로 변환할 수 있고, 그 반대로 변환할 수 있다.
- 질의란 데이터에 대한 처리 요구를 말한다.
- 관계 대수와 관계 해석은 실제로 사용되지는 않는 개념적 언어이지만 새로운 데이터 언어를 검증하는 데 사용된다.
- 관계 대수와 관계 해석으로 기술할 수 있는 모든 질의를 새로운 데이터 언어로 기술할 수 있으면 관계적으로 완전하다고 하며 검증되었다고 판단한다.
01. 관계 대수
02. 관계 해석
관계 대수
원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어
- 관계 대수에서는 연산자와 피연산자가 모두 릴레이션이며 이러한 특성을 폐쇄 특성이라 한다.
- 관계 대수의 대표적인 8개 연산자는 특성에 따라 일반 집합 연산자와 순수 관계 연산자로 나누어진다.
일반 집합 연산자
일반 집합 연산자는 릴레이션이 튜플의 집합이라는 개념을 이용한다.
연산자 | 기호 | 표현 | 의미 |
합집합 | ∪ | R∪S | 릴레이션 R과 S의 합집합을 반환 |
교집합 | ∩ | R ∩ S | 릴레이션 R과 S의 교집합을 반환 |
차집합 | - | R - S | 릴레이션 R과 S의 차집합을 반환 |
카테시안 프로덕트 | × | R × S | 릴레이션 R의 각 튜플과 릴레이션 S의 각 튜플을 모두 연결하여 만든 새로운 튜플을 반환 |
일반 집합 연산자의 제약 조건
- 일반 집합 연산자는 연산을 위해 피연산자가 2개 필요하다.
- 합집합, 교집합, 차집합은 피연산자인 2개의 릴레이션이 합병 가능해야 한다.
- 합병 가능 조건 : 두 릴레이션의 차수가 동일해야하고(속성 개수가 동일), 2개의 릴레이션이 서로 대응되는 속성의 도메인이 같아야한다(속성의 이름은 달라도 무관).
- 카테시안 프로덕트는 합병 가능여부와 상관없이 연산이 가능하다.
- 합병이 가능한 예
- 합병이 불가능한 예
합집합
- 합집합 연산의 결과는 중복 튜플이 존재할 수 없다.
- 합집합 연산의 결과는 릴레이션 R과 S의 차수와 같다.
- 합집합 연산의 결과의 카디널리티는 릴레이션 R과 S의 튜플의 개수를 더한 것과 작거나 같다.
- 합집합 연산은 합집합 연산을 바꾸어 해도 결과가 같다는 교환 특징과, 어떤 합집합 연산을 먼저 수행해도 결과가 같다는 결합 특징이 있다.
교집합
- 교집합 연산 결과는 릴레이션 R과 S의 차수와 같다.
- 교집합 연산 결과의 카디널리티는 릴레이션 R과 S의 카디널리티보다 작거나 같다.
- 교집합 연산은 교환 특징과 결합 특징이 있다.
차집합
- 차집합 연산의 결과는 릴레이션 R과 S의 차수와 같다.
- 차집합 연산 결과의 카디널리티는 릴레이션 R과 S의 카디널리티보다 작거나 같다.
- 차집합 연산은 교환 특징, 결합 특징이 없다.
카테시안 프로덕트 (Catesian Product)
- 카테시안 프로덕트 연산의 결과는 릴레이션 이름.속성이름 형식으로 표기한다.
- 만약, 릴레이션 R의 속성과 S의 속성의 이름이 다르다면 릴레이션 이름은 생략해도 된다.
- 카테시안 프로덕트 연산 결과는 릴레이션 R과 S의 차수를 더한 것과 같다.
- 카테시안 프로덕트 연산 결과의 카디널리티는 릴레이션 R과 S의 카디널리티를 곱한 것과 같다.
- 카테시안 프로덕트 연산은 교환 특징과 결합 특징이 있다.
순수 관계 연산자
순수 관계 연산자는 릴레이션의 구조와 특성을 이용한다.
연산자 | 기호 | 표현 | 의미 |
셀렉트 | σ | σ(조건)(R) | 릴레이션 R에서 조건을 만족하는 튜플들을 반환 |
프로젝트 | π | π(속성 리스트)(R) | 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플들을 반환 |
조인 | ▷◁ | R ▷◁ S | 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결하여 만든 새로운 튜플들을 반환 |
디비전 | ÷ | R ÷ S | 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환 |
셀렉트 (Select)
- 셀렉트 연산은 하나의 릴레이션에서 주어진 조건을 만족하는 튜플만 선택하여 결과 릴레이션을 구성한다.
- 셀렉트 연산의 결과는 수평적 부분집합을 생성한 것과 같다.
- 셀렉트 연산의 조건식은 비교 연산자와 논리 연산자를 사용하여 구성할 수 있다.
- 비교 연산은 도메인이 일치해야한다.
- 셀렉트 연산은 교환 특징이 있다.
ex) 고객 릴레이션에서 등급이 gold인 튜플을 검색하시오.
ex) 고객 릴레이션에서 등급이 gold이고, 적립금이 2000 이상인 튜플을 검색하시오.
프로젝트 (Project)
- 프로젝트 연산은 릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성한다.
- 프로젝트 연산의 결과는 수직적 부분집합을 생성한 것과 같다.
- 프로젝트 연산은 중복되는 튜플이 없다.
ex) 고객 릴레이션에서 고객이름, 등급, 적립금을 검색하시오.
ex) 고객 릴레이션에서 등급을 검색하시오.
조인 (Join)
- 조인 연산은 릴레이션 하나로 원하는 데이터를 얻을 수 없어, 관계가 있는 여러 릴레이션을 함께 사용할 때 조인 연산을 한다.
- 조인 연산은 두 릴레이션이 공통으로 가지고 있는 속성을 조합하여 결과 릴레이션을 구성한다.
- 조인 연산의 결과는 두 릴레이션에 카테시안 프로덕트 연산을 수행하고, 조인 속성의 값이 같은 조건을 만족하는 튜플을 반환하는 셀렉트 연산의 결과와 같다.
세타 조인
- 주어진 조건을 만족하는 모든 튜플을 연결한 새로운 튜플로 결과 릴레이션을 구성한다.
- 세타 조인은 비교 연산자( =,≠,≥,≤,>,<)를 이용하여 다양한 조인 조건을 표현할 수 있다.
동등 조인
- 세타 조인에서 연산자가 ' = ' 인 조인이다.
- 동등 조인은 두 릴레이션이 공통으로 가지고 있는 조인 속성이 두 번 나타난다.
자연 조인
동등 조인의 결과 릴레이션에서 중복된 속성을 제거하여 조인 속성이 한 번만 나타나는 조인을 말한다.
디비전 (Division)
- 릴레이션 R과 S의 디비전 연산은 S의 모든 튜플과 관련 있는 R의 튜플로 결과 릴레이션을 구성한다.
- R과 S의 모든 속성과 도메인이 같은 속성을 포함하고 있어야 연산이 가능하다.
관계 대수를 이용한 질의 표현
ex) 고객 릴레이션에서 등급이 gold인 고객의 이름과 나이를 검색하시오.
ex) 고객 이름이 원유선인 고객의 등급과, 원유선 고객이 주문한 주문제품, 수량을 검색하시오.
ex) 주문 수량이 10개 미만 주문 내역을 제외하고 검색하시오.
확장된 관계 대수 연산자
세미 조인
- 릴레이션 R과 S의 세미 조인 연산 결과는 S의 조인 속성으로만 구성한 릴레이션을 R에 자연 조인하는 것이다.
- 세미 조인은 릴레이션에서 자연 조인 연산에 참여할 수 있는 튜플만 선택하여 결과 릴레이션을 구성한다.
- 세미 조인을 이용하면 검색에 필요한 속성을 미리 제거하여 조인 연산의 비용을 줄인다는 장점이 있다.
외부 조인 (Outer Join)
- 외부 조인 연산은 R과 S의 두 릴레이션에서 자연 조인 연산을 수행할 때, 조인 속성 값이 같은 튜플이 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 모든 튜플을 결과 릴레이션에 포함시킨다.
- 외부 조인은 결과 릴레이션으로 가져오고 싶은 릴레이션이 무엇이냐에 따라 왼쪽 외부 조인, 오른쪽 외부조인, 완전 외부 조인으로 세분화 할 수 있으며, 필요한 외부 조인 연산을 선택하면 된다.
1. 왼쪽 외부 조인 (Left Outer Join)
- 왼쪽에 있는 첫 번째 릴레이션에 존재하는 모든 튜플을 결과 릴레이션에 포함시킨다.
2. 오른쪽 외부 조인 (Right Outer Join)
- 오른쪽에 있는 두 번째 릴레이션에 존재하는 모든 튜플을 결과 릴레이션에 포함시킨다.
3. 완전 외부 조인 (Full Outer Join)
- 연산에 참여하는 두 릴레이션에 있는 모든 튜플을 결과 릴레이션에 포함시킨다.
01. 관계 대수
02. 관계 해석
관계 해석
처리를 원하는 데이터가 무엇인지만 기술하는 비절차적 언어로, 관계 데이터 연산의 한 종류이다.