Relational algebra: 두 판 사이의 차이

youngwiki
29번째 줄: 29번째 줄:


===Cartesian-Product Operation===
===Cartesian-Product Operation===
The Cartesian-product 연산자(denoted by X)  
The Cartesian-product 연산자(denoted by X)는 두 relation들로부터의 정보를 섞도록 한다.
이때 우리는 결과 relation을 구성하는 tuple들을 가능한 모든 튜플들의 조합을 통해 만든다. 예를 들어 A X B인 경우, A의 각 튜플들은 B의 모든 튜플들과 쌍을 이루어 각각 결과 relation의 튜플 하나 씩을 구성한다. 다음은 이를 실행한 예시이다.


===union: <math>\smile</math> ===
===union: <math>\smile</math> ===

2025년 3월 17일 (월) 17:47 판

상위 문서: Relational Query Languages

개요

Relational algebra는 procedural 언어에 해당하며 하나 혹은 두개의 relation을 입력으로 받고 새로운 relation을 출력하는 여러 연산자로 구성된다. 이러한 Relational algebra는 SQL Query Languages의 이론적인 토대를 형성한다.


Six Basic Operator

아래에서 수식에 쓰이는 r은 relation 인스턴스를 의미한다.

instructor and department

select: σ

  • σp(r)

위에서 select 연산은 주어진 조건(p)을 만족하는 tuple 만을 골라내어서 relation을 새로 구성한다.

예를 들어서 "Physics" department에 속하는 instructor들이 속하는 tuple들의 relation은 다음과 같이 만들 수 있다.

  • Query: σdept_name = "Physics"</math>(instructor)</math>

project:

  • A1,A2,A3,...Ak(r)

project operation은 A1,A2,A3,...Ak에 속하는 속성들 만을 나타내는 k개의 column들로 이뤄진 relation을 만든다. 이때 중복되는 값이 있다면 relation은 기본적으로 집합이기 때문에 삭제된다.

예를 들어 dept_name 속성을 instructor에서 제거한 relation을 얻고 싶다면 다음과 같이 만들 수 있다.

  • Query: ID,name,salary(instructor)

Cartesian-Product Operation

The Cartesian-product 연산자(denoted by X)는 두 relation들로부터의 정보를 섞도록 한다. 이때 우리는 결과 relation을 구성하는 tuple들을 가능한 모든 튜플들의 조합을 통해 만든다. 예를 들어 A X B인 경우, A의 각 튜플들은 B의 모든 튜플들과 쌍을 이루어 각각 결과 relation의 튜플 하나 씩을 구성한다. 다음은 이를 실행한 예시이다.

union:

set difference: -

cartesian product: x

rename: ρ

Composition of Relational Operations

realtional-algebra operation의 결과는 relation이기 때문에 연산의 결과를 다른 realtional-algebra operation의 피연산자로 사용할 수 있다.

예를 들어서 physics department에 속하는 모든 instructor들의 이름을 찾는 query를 만들면 다음과 같다. name(σdept_name = "Physics"(instructor))