Relational Algebra

JJAE WON·2022년 4월 14일
0

데이터베이스의 Query lagnuage에는 순차적으로 접근하는 언어인 Algebra와 선언적으로 사용되는 SQL이 있다. 이 게시글에서는 순차적언어인 Algebra에 대해서 다룰 것이다.

algebra 연산에는 피연산자인 Operands와 연산자인 Operators이 존재한다.
피연산자와 연산자는 모두 Relation 형태이다!!

Basic Operator 기본연산자

Algebra에는 6개의 기본 연산자가 존재한다.

1. select 연산자

위 그림이 Input인 Relation r이다.
그 때 select 연산자를 사용해서 A와 B의 속성이 같고 D가 5보다 큰 값들을 가져오라고 한다면 아래와 같은 output이 만들어진다.

이처럼 Select 연산자를 사용하게 되면은 Relation에서 원하는 튜플만 추출하게 된다

2. Project 연산자

1번의 형태를 가진 Relation이 Input으로 들어왔고 2번의 연산이 처리된다면 r에서 A,C 속성을 가진 것들을 추출하라는 의미이다.
A,C 속성을 추출하게 되면 3번과 같은 형태가 되고 튜플은 집합이기 때문에 중복이 불가능하기 때문에 중복을 제거해주면 된다.
4번의 형태가 OutPut이 된다.

이처럼 Project 연산자를 사용하게 되면 원하는 컬럼(속성, Attribute)를 추출하게 된다.

3. Union 연산자

r 이름을 가진 1번 테이블과 s이름을 가진 2번 테이블에 3번과 같은 연산을 했을때 두가지 테이블에 있는 튜플들을 합치게 된다.
앞에서 설명한 것과 같이 튜플은 중복이 불가능하므로 중복을 제거해서 새로운 3번 테이블을 만들어줘야 한다.

union 연산자과 다음에 나올 연산자인 set Diffrerence 연산자는 스키마의 형태가 같아야 한다

4. Set Difference 연산자


r테이블 1번과 s테이블 2번의 3번의 연산자를 통해서 1번에서 2번을 빼주면 된다!! 빼기!!!!
따라서 2번에 있는 튜플들을 1번에서 제거해주면 3번이라는 테이블이 완성되게 됩니다요

다시한번 set Diffrerence 연산자도 스키마의 형태가 같아야 한다!

5. Cartesian product 연산자


1번과 2번처럼 스키마가 다른 테이블 2개를 3번 연산자를 통해 하나의 테이블로 만들 수 있다. Union 연산자와는 다르게 스키마가 다르기 때문에 모든 경우의 수를 만들어서 새로운 테이블을 만들어준다.

1번 테이블의 튜플은 2개이고 2번 테이블의 튜플은 4개이기 때문에 2x4 = 8!
8개의 튜플을 가진 새로운 테이블 4번이 output으로 출력된다!

6. renaming 연산자


cartesian product 연산자를 사용할 때 만약 두개의 스키마중 이름이 같은 것이 있다면!! 이름은 다시 지어주는 과정을 거쳐야 한다.
1번은 3번으로! 2번을 4번으로!! 이렇게 변경해주면 된다.
여기서 1번과 2번은 스키마의 이름은 같지만 다른 속성이라고 판단하기 때문ㅇㅔ 이런 식으로 지어줘야 한다.


테이블 전체를 새롭게 이름을 정의해주어야 한다면 3번과 같은 식을 통해
r테이블과 r테이블의 스키마를 s로 바꾸어준 테이블과 x 하겠어요! 라는 식을 만들어 줄 수 있다!


Additional operator

응용된 연산자들도 존재한다!

set Intersection 연산자 (∩)


교집합 느낌의 연산자이다. 1번 테이블과 2번테이블에서 공통된 튜플만 추출하는 과정이다. 따라서 1개의 튜플을 가지고 있는 4번 이 output으로 나오게 된다.

Natural Join 연산자 (⋈)

algebra 연산자 중 가장 까다로운 연산자라고 할 수도 있다!
위에서 Cartesian product 연산자를 사용할 때 스키마의 속성이 같다면 새로운 이름을 Remnaming 해준다고 하였는데 Natural Join 연산자를 사용한다면 같은 이름의 속성을 같은 속성이라고 판단하여 합치는 것이다.

1. 피연산자의 스키마를 살펴보고 같은 속성을 찾는다.
2. 공통된 스키마가 일치하는 경우에만 튜플을 생성할 수 있다.

첫번째로 r과 s의 스키마를 살펴보았을 때 같은 속성은 BD가 있다.
그리고 두개가 같은 값을 가지고 있는지 확인한다.

r의 맨 윗줄의 값과 s의 1,3줄의 값이 일치하기 때문에 합쳐서 하나의 튜플을 만들 수 있다. r의 두번째줄과는 s의 값들 중 일치하는게 없기 때문에 새로운 튜플을 만들지 못한다.

이처럼 반복하여 아래와 같은 테이블을 생성할 수 있고 해당 테이블이 natural join 연산자의 output이 된다.







위 글은 공부하며 작성한 글이므로 내용상의 오류가 있을 수 있습니다.
잘못된 부분은 덧글로 이야기 해주세요😀

profile
안드왕 찐천재가 되고싶다.

0개의 댓글