전공/데이터베이스

7-1. 관계대수와 관계해석 : 단항 관계 연산(SELECT, PROECT), 집합 이론

문정훈 2021. 10. 30. 01:26

1. 실렉트(SELECT) 연산

● 실렉트 연산

실렉트 연산이란 단항 연산자로 하나의 릴레이션에만 적용된다. 더욱이 실렉터는 각 투플에 개별적으로 적용된다. 

하나의 릴레이션에서 <선택 조건>을 만족하는 투플들만 걸러내는 연산으로 실렉트는 릴레이션을 두 집합으로 수평분할 한다고 말할 수 있다. (조건을 만족하는 투플들, 조건을 만족하지 않는 투플들)

아래 예시를 보자. 

위 예시는 <선택 조건> 이 Dno = AND Salary > 25,000이 된다. 부서 번호가 4이고 동시에 급여가 25,000이상인 투플들만 걸러내라는 의미가 된다. 

 

비교 연산자는 아래 중 하나이다. 

실렉트 연산의 결과 릴레이션의 차수(=애트리뷰트의 개수)는 원래 릴레이션 R의 차수와 같다. 

실렉트 연산은 아래 성질을 만족한다. 


 

2. 프로젝트(PROJECT) 연산

● 프로젝트 연산

릴레이션 (테이블)에서 실렉트 연산은 테이블로 부터 일부를 선택하고 나머지는 버리는 것이다. 

반면 PROJECT 연산은 테이블로부터 어떤 연들을 선택하고 나머지는 버리는 연산이다. 

테이블의 일부 애트리뷰트에마 관심이 있는 경우 PROJECT 연산을 수행하면 된다. 

PROEJCT 연산의 결과는 필요로하는 열들만 가지는 집합과 나머지 집합으로 릴레이션을 수직 분할 한 것으로 시각화 할 수 있다. 

아래는 사원의 나이와 급여열들만 보여주게 하는 예시이다. 

프로젝트 연산의 결과는 <애트리뷰트 리스트>에 명시된 애트리뷰트만 가지고 투플들의 순서는 기존의 테이블과 같다. 

따라서 결과 릴레이션의 차수는 <애트리뷰트 리스트>의 차수와 같다. 위 예시 PROJECT 연산 결과 테이블의 차수는 2이다. 

 

만약 <애트리뷰트 리스트>의 애트리뷰트에 Key가 없다면 결과 릴레이션의 중복되는 투플이 생길 수 있다. 이 중복 투플은 제거되기 때문에 PROJECT 연산 결과 릴레이션의 투플 수는 항상 R 투플 수보다 같거나 적다.

만약 <애트리뷰트 리스트>가 super key이면 연산 결과 릴레이션의 투플 수와 기존의 테이블 R과 투플의 수는 같다. 

 

만약 <리스트2> 가 <리스트1>의 애트리뷰트를 포함하면 아래의 식이 성립한다. 

또한 프로젝트 연산은 교환 법칙이 성립하지 않는다. 


 

3. 연산의 순서와 이름 변경 연산

● 무명의 이름

위 예제들 처럼 릴레이션 연산을 수해하면 연산 결과로 만들어진 릴레이션은 기존의 릴레이션과 동일한 애트리뷰트 이름과 순서, 그리고 투플들의 순서를 가진며 테이블의 이름은 없다. 

 

 

● 연산 결과로 만들어진 릴레이션 이름 부여

  1. 위 결과는 실렉터 결과를 가지고 프로젝트 연산을 하는 것이다. 위 예제를 아래처럼 바꿀 수 있다. 

위 예시는 실렉터 연산으로 만들어진 릴레이션의 이름 M1이라고 부여하는 것이다. 

그리고 PROJECT연산의 결과로 나온 릴레이션의 이름은 M2로 부여한 것이다. 

 

● 이름 변경 단항 연산자

1번 예제는 S라는 이름과 B1, B2, B3.. 라는 이름으로 기존의 R릴레이션의 이름과 애트리뷰트 이름을 바꾸낟. 

2번 예제는 R릴레이션의 이름만 S로 바꾼다.

3번 에제는 R릴레이션의 이름은 안바꾸고 애트리뷰트 이름만 바꾼다. 


 

4. 관계 대수 연산 : 집합 이론

● 합집합, 교집합, 차집합 연산

합집합, 교집합 ,차집합 연산은 이항 연산자로 두 릴레이션에 대해 연산을 한다. 두 릴레이션은 아래 두가지 조건을 만족해야 연산이 가능하다 

  1. 두 릴레이션의 차수가 같다. (애트리뷰트 수가 같다.)
  2. 두 릴레이션의 각 애트리뷰트에 대응되는 도메인들이 서로 같다.

위 두 조건을 만족시킬 떄 두 릴레이션은 '합집합 호환성' 또는 '타입 호환성'이라고 하며 이 경우에는 집하 연산이 가능하다. 

 

- 합집합

R U S로 표기하며 관례적으로 연산 결과의 릴레이션은 R의 결과가 먼저 나오고 그 아래 S의 결과가 나오며 결과 릴레이션의 이름은 R의 이름과 같다. 이름 변경 연산자를 사용해 이름을 변경하며 된다. 

 

- 교집합 

위 기호로 표기힌다.  R와 S 양쪽 모두에 있는 투플들만 포함하는 릴레이션이다. 

 

- 차집합

R - S 로 표기하면 R에는 있지만 S에는 없는 모든 투플을 포함하는 릴레이션이다. 

 

 

● 카티션 곱(=크로스 프로덕트) 연산

카티션 곱 연산은 X로 표기하며 이항연산이고 두 릴레이션이 반드시 합집합 호환적일 필요 없이 

R(A1, A2,...) X S(B1, B2, ...) 의 결과는 Q는 Q(A1, A2, ... B1, B2...)라고 하자

 

위 예시가 카티션 곱의 예시이다. 따라서 카티션 곱 결과의 애트리뷰트 수는 두 릴레이션 애트리뷰트 수 의 합이고 카티션 곱의 투플의 수는 두 릴레이션 개수의 곱과 같다.