데이터베이스

관계형 데이터 모델3: 관계 대수(Relational Algebra)

소재훈 2021. 12. 19. 17:45

데이터베이스 목차

이 글에서는 University Database가 사용된다.

 

관계 대수란 데이터베이스 시스템 내부에서 사용하는 데이터베이스 language이다.

비 절차적 언어(non-procedure language)인 SQL과는 다르게 절차적 언어(Procedure language)이다. 연산자의 순서에 따라서 처리를 해야 하며, 사용자의 query를 처리하기 위해서는 DB System의 관계 대수와 같은 절차적 언어로 변경되어야 한다.

관계 대수에는 기본적인 6개의 연산자가 있다.

  • select: σ
  • project:
  • union:
  • set difference:
  • Cartesian product: ×
  • rename: ρ

관계연산자의 결과는 Relation. 즉 테이블이다. 6개의 연산자를 차례대로 살펴보자.

select Operation : σ

r이라는 table에서 p라는 조건을 만족시키는 튜플을 찾으라는 의미이다. p를 검색조건(selection predicate)라고 한다.

위와 같이 정의되며, ∧(and), ∨(or), ¬(not)등으로 연결해서 복잡한 형태로 작성할 수 있다. 상수가 올 수도 있고, =, ≠, <, ≤, >, ≥와 같은 비교 연산자도 사용 가능하다.

예시를 보면 다음과 같다.


Project Operation : ∏

위 예시를 보면 관계형 데이터베이스 모델에서는 Relation에 대한 정의가 Set을 기반으로 하기 때문에 중복되는 tuple은 존재해서는 안된다. 왼쪽은 r이라는 relation에서 A, C에 대한 데이터만 뽑아내고, 오른쪽은 r이라는 테이블에서 A, B에 대한 데이터만 뽑아내라는 의미이다.

Project Operation은 다음과 같이 표기한다.

project operation

r이라는 relation에서 A1, A2,... , Ak column(attribute)만 뽑아내라는 의미이며, 이 과정에서 중복되는 튜플을 제거해준다. 

예시를 살펴보자

professor라는 table에서 pID, name, salary column만 뽑아내라는 의미이다.


Union Operation : ∪

union operation example

r relation과 s relation을 Union 했을 때의 결과를 살펴보자 두 relation의 튜플의 합집합을 나타내고 있으며, 여기서 결과 relation의 tuple이 4개인 것은 Project Operation과 동일하게 연산이 Set 기반이기 때문에 중복된 튜플을 허용하지 않기 때문이다. 결과 relation은 두 relation에 존재하는 모든 튜플이 된다.

합집합이 되기 위해서는 두 가지 조건을 만족시켜야 한다.

  1. Column의 개수가 동일해야 한다.
  2. 대응되는 Column이 Compatible 해야 한다.

다음과 같이 정의된다.

예시: 2014년 가을이나 2015년 봄에 가르친 모든 과목 번호를 찾아라.


set Difference Operation: -

set difference operation example

r - s는 relation r에만 존재하는 튜플(=공통 튜플을 r에서 제거하라)이라는 의미이고, 

s - r은 relation s에만 존재하는 튜플(=공통 튜플을 s에서 제거하라)라는 의미이다.

Union Operation과 동일하게 Set Difference Operation을 적용하려면 두 조건을 만족시켜야 한다.

  1. Column의 개수가 동일해야 한다.
  2. 대응되는 Column이 Compatible 해야 한다.

다음과 같이 정의된다.

예시: 2014년 가을에 가르쳤지만, 2015년 봄에는 가르쳐지지 않은 모든 과목의 과목번호를 출력하시오


Cartesian Product Operation: ×

Cartesian Product는 짝지을 수 있는 모든 것을 짝짓는 연산이다.

cartesian operation example

두 테이블의 모든 튜플을 짝지어 준다, 만약 두 테이블에 같은 이름의 Column이 있을 경우에는 이름을 재설정 해준다.

정의는 다음과 같다.

Relation R과 S의 Column개수가 각각 m, n개 tuple의 개수가 x, y개 라고 하면, R × S의 Column과 tuple의 개수는 다음과 같다.

  R S R × S
Column 개수 m n m + n
Tuple 개수 x y x * y

Rename Operation: ρ

특정한 Attribute를 Rename(재명명)하고 싶거나, 주어진 Table의 이름을 바꾸고 싶은 경우 사용한다.

rename operation

E라는 Relation의 이름을 X로 바꾸고, Column의 이름을 A1, A2, ..., An으로 하겠다는 의미이다. 

 

6개의 관계대수 연산자를 모두 살펴보았다. 이러한 6개의 연산자를 이용한 식을 관계대수 식이라고 부른다. 6개의 관계 대수 연산자 외에도 편의를 취한 추가적인 5개의 연산자를 다음 글에서 알아보자.