관계 데이터 연산
관계 데이터 연산의 개념
원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로 데이터베이스 시스템의 구성 요소 중 데이터 언어의 역할을 한다. 대표적으로 관계 대수와 관계 해석이 있다.
- 관계 대수 : 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어
- 관계 해석 : 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차적 언어
이 데이터에 대한 처리 요구를 질의(query)
라고 한다.
관계 대수
관계 대수에 속하는 연산은 특성에 따라 일반 집합 연산자
, 순수 관계 연산자
로 나눌 수 있다.
일반 집합 연산자
릴레이션이 튜플의 집합이라는 개념을 이용하여 수학의 집합과 관련된 연산을 수행한다.
연산자 | 기호 | 표현 | 의미 |
---|---|---|---|
합집합 | U | R U S | 릴레이션 R과 S의 합집합 반환 |
교집합 | ∩ | R ∩ S | 릴레이션 R과 S의 교집합 반환 |
차집합 | - | R - S | 릴레이션 R과 S의 차집합 반환 |
카티션 프로덕트 | x | R x S | 릴레이션 R과 S의 각 튜플을 모두 연결하여 새로운 튜플 반환 |
일반 집합 연산의 제약조건
- 일반 집합 연산자는 연산을 위해 두 개의 피연산자가 필요하다.
- 카티션 프로덕트를 제외한 연산들은 두 개의 릴레이션이 합병 가능해야 한다. 합병을 위한 조건은 아래와 같다.
- 두 릴레이션의 차수가 같다.
- 두 릴레이션에서 서로 대응되는 속성의 도메인이 같다. 속성의 이름은 달라도 괜찮다.
순수 관계 연산자
연산자 | 기호 | 표현 | 의미 |
---|---|---|---|
셀렉트 | σ | σ조건(R) | 릴레이션 R에서 조건을 만족하는 튜플들을 반환 |
프로젝트 | π | π속성리스트(R) | 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플들을 반환 |
조인 | ⋈ | R ⋈ S | 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결한 새로운 튜플들을 반환 |
디비전 | ÷ | R ÷ S | 릴레이션 S의 모든 튜플과 관련있는 릴레이션 R의 튜플들을 반환 |
셀렉트
셀릭트 연산은 하나의 릴레이션을 대상으로 수행하며, 조건식은 비교 연산자를 이용해 구성하는데 이 조건식을 비교식
또는 프레디깃
이라고 한다. 이 조건식은 비교 연산자와 함께 논리 연산자를 함께 사용하여 구성할 수 있으며, where 문을 이용해 데이터 언어의 형식으로 표현이 가능하다.
1
릴레이션 where 조건식
프로젝트
선택한 속성에 해당하는 값만 골라 결과 릴레이션을 구성하는데 이 결과 릴레이션은 해당 릴레이션의 수직적 부분 집합을 생성하는 것과 같다. 이때의 결과는 중복되는 튜플이 존재하더라도 한 번만 나타난다. 아래의 데이터 언어의 형식으로 표현할 수 있다.
1
릴레이션[속성리스트]
조인
두 릴레이션을 조합하여 하나의 릴레이션을 구성하는 연산으로 자연 조인, 세타 조인, 세미 조인, 외부 조인으로 나눌 수 있다.
- 자연 조인 : 조인 속성이 같은 튜플들만 연결하여 새로운 릴레이션을 구성한다. (⋈)
- 세타 조인 : 두 릴레이션에서 주어진 조건에 만족하는 튜플들을 연결한 새로운 릴레이션을 구성한다. 자연 조인과 달리 속성이 중복되어 나타난다. (⋈θ)
- 세미 조인 : 두 릴레이션에서 뒤의 릴레이션의 조인 속성으로만 구성한 릴레이션을 앞선 릴레이션에 자연 조인시키는 연산으로 연산 비용을 줄일 수 있다. (⋉)
- 외부 조인 : 연산에 참여하는 모든 튜플을 결과 릴레이션에 포함시킨다. 즉 조인 연산에서 제외된 튜플들도 결과에 포함한다. 속성이 겹치는게 없는 속성엔 널 값을 부여한다. (⋈+)
디비전
R ÷ S 의 연산에서 뒤의 릴레이션 S의 모든 튜플과 관련있는 릴레이션 R의 튜플로 결과를 구성한다. 이때의 릴레이션 R은 S의 모든 속성을 가지고 있어야 한다.
R
주문자 | 수량 | 품명 | 영어 |
---|---|---|---|
가 | 100 | 사과 | apple |
가 | 200 | 바나나 | banana |
나 | 300 | 사과 | apple |
나 | 400 | 키위 | kiwi |
S
품명 |
---|
사과 |
바나나 |
R ÷ S
주문자 | 수량 | 영어 |
---|---|---|
가 | 100 | apple |
가 | 200 | banana |