데이터베이스 DB

[데이터베이스/DB] 관계 대수 Relational Algebra_1 기본대수

관계 대수 Relational Algebra

관계 대수는 관계에 대한 다수 개의 연산을 제공하고 관계 대수를 통해 데이터베이스로부터 구하고싶은 정보를 표현할 수 있습니다. 

관계 대수는 기본적인 6개의 연산

-select 선택 연산 : σ

-project 투영 연산 : π

-union 합집합 연산 :

- set difference 차집합 연산 : -

- Cartesian produxt 카타시안곱 연산 : x

- rename 재명명 연산 : ρ

 

선택 연산 Select Operation

선택 연산의 기호는 시그마σ 입니다. 

각각의 항은 ∨(or), ∧(and), ¬(not)으로 연결이 가능합니다.

선택 연산 예제

예를 들어, 교수 중에서 CS 과에 속한 교수를 검색하는 것이 선택 연산이에요.

 

투영 연산 Project Operation

관계에서 임의의 속성을 선택하는 연산입니다.

 

투영 연산 예제

위의 예제을 보면 관계 r에서 명시된 속성만 보여주는 연산이에요

 

투영 연산의 기호는 파이π 입니다. 중요한 점은 중복 터플은 결과관계에서 제거된다는 점이에요. 

 

 

합집합 연산 Union Operation 

일반적인 여러분이 모두 아시는 합집합 정의와 동일하고, 터플을 집합 원소로 가집니다.

터플의 속성 개수가 동일해야한다는 점이 중요하고, 이는 교집합과 차집합 연산에서도 마찬가지에요.

또한, 대응되는 속성의 도메인이 상호 호환적(compatible)이어야해요.

sid, name ∪ sid, year 일때, sid끼리는 compatible하죠. 하지만 name과 year은 compatible하지 않아요. 

 

정리하자면, 1. 속성(arity) 개수가 같아야하고 2. type이 compatible해야합니다. 

 

합집합 연산 예제

예를 들어, 2014 가을과 2015 봄에 개설된 모든 과목의 과목번호(cID)를 검색하는 것이 합집합 연산이에요.

 

차집합 연산 Set Difference Operation

합집합과 마찬가지로 compatible relations 사이에서 이루어져야 하고, 터플의 속성 개수가 같아야해요. 

차집합 연산은 commutative(상쇄적)이지 않으므로 r-s와 s-r 결과는 당연히 달라요.

차집합 연산 예제

예를 들어, 2014 가을학기에 개설되었으나, 2015 봄학기에는 개설되지않은 과목 번호를 찾을 때 차집합 연산을 활용할 수 있습니다. 

 

카타시안 곱 연산 Cartesian Product Operation

카타시안 곱은 입력 관계에 속하는 터플의 모든 가능한 조합을 결과 관계로 산출합니다. 

만약 두 개의 입력 테이블에 동일 속성이 존재하면 rename (재명명) 연산을 한 후에 동일속성이름은 제거해줘야 해요. 

왜냐하면 제거를 해주지 않으면 자연 조인(natural join)연산이 되기 때문이에요. 

수학기호는 x입니다.

 

카타시안 곱 연산의 결과물은 보통 크기가 커요. 왜냐하면 두 입력테이블의 터플 개수의 곱만한 터플의 결과 관계가 만들어지기 때문입니다.  

카타시안곱 연산 예제 

카타시안 곱 연산 결과의

속성(arity) 개수는 각 속성(A, B, C, D)의 개수 합

터플(tuple) 개수는 각 터플 개수의 곱

 

재명명 연산 Rename Operation

단순히 테이블 이름이나 속성 이름을 변경하는 연산이며 수학 기호는 ρ(rho)를 써요.