상세 컨텐츠

본문 제목

[DB기초] 관계형 데이터베이스의 관계 대수 연산

IT/Database

by J KIMS 2020. 11. 18. 16:13

본문

반응형

 

관계 대수(relational algebra) 연산 

..이란 관계형 데이터 베이스 언어로 가능한 다음 8개의 연산을 가르킨다.

 

1. 합집합 (UNION)

2. 차집합 (DIFFERENCE)

3. 교집합 (INTERSECTION)

4. 곱집합 (CARTESIAN PRODUCT)

5. 사영(射影, PROJECTION)

6. 선택 (SELECTION)

7. 결합 (JOIN)

8. 나누기 (DIVISION)

 

1~4는 집합연산이다.

릴레이셔널은 도메인의 유한부분집합으로 정의되니까 집합연산이 정의되는 것도 자연스러운 발상이다.

 


합병 가능 조건

 

집합연산을 수행하기 위해선 다음 합병 가능(union compatible) 조건을 만족해야한다.

 

릴레이션 R(A1, A2, A3, .., An) 과 S(B1, B2, ..., Bn) 가 있을때

  • R과 S의 차수가 동일하다 (즉 n = m)
  • 각 i (1 ≤ i ≤ n) 에 대해서, Ai와 Bi의 도메인이 동일하다 (즉 dom(Ai) = dom(Bi) )

즉, 두 릴레이션의 도메인 수가 같고 각 속성이 대응하는 도메인이 같아야 한다.

 

합병 가능한 릴레이션의 예)

 

얼렁뚱땅 만든 예시

 

도메인 수가 동일하고 각 속성이 대응하는 도메인도 동일하니 합병 가능하다.

이때 속성명이 다른 것은 문제가 되지 않는다. '이름'이건 '부원명'이건 대응하는 도메인은 동일함. (도메인의 정의는 어떤 범위의 집합이므로)


집합 연산

합집합 연산의 결과는 R∪S로 나타낸다.

   R∪S = {t | t ∈ R ∨ t ∈ S}

여기서 ∨는 논리합(logical union)을 나타내는 기호. 튜플 t가 R이나 S의 원소이면 참.

 

위 예시의 합집합

차집합은 R-S로 나타낸다.

 

위 예시의 차집합

교집합은 R∩S로 나타낸다.

 

 

곱집합은 R×S로 나타낸다.

다음과 같이 n+m차의 릴레이션으로 정의된다.

   R×S = {(r,s) | r ∈ R ∧ s ∈ S }

곱집합의 속성명은 점을 찍어서 원래의 릴레이션을 알 수 있게 표시한다. (dot notation)

 


릴레이션 고유의 4가지 연산

 

여기서는 5~8번 연산에 대해 간단하게 다룸.

 

◎ 사영(projection)

 

사영은 릴레이션을 세로로 잘라내는 것.

릴레이션에서 원하는 속성만 뽑아낼 수 있다.

 

릴레이션 R(A1, A2, A3, .., An) 가 있을 때,

R의 전속성집합 {A1, A2, ..., An} 의 부분집합을 X = {Ai1, Ai2, ..., Aik}라고 하자.

(이때, 1 ≤ i1 < i2 <...< ik ≤ n)

 

R의 X 상의 사영은 다음과 같이 나타낸다.

 

   R[X] 혹은 R[Ai1, Ai2, ..., Aik]

 

사영의 릴레이션은 다음과 같이 정의된다. (t는 튜플)

 

   R[X] = { t[X] | t ∈ R } 

 

 

선택 (selection)

 

선택 연산은 릴레이션을 가로로 잘라내는 방법이다.

관심있는 튜플만 추출하는 것이 가능하다.

 

릴레이션 R(A1, A2, A3, .., An) 가 있을 때, Ai와 Aj를 θ 비교 가능한 속성이라고 하자.

(θ는 비교연산자로 >, ≥,=,<,≤, ≠ 중 하나)

 

이 때, R의 Ai와 Aj상의 θ선택을 R[AiθAj] 로 쓴다. 

선택을 통해 추출된 릴레이션은 다음과 같이 정의된다.

 

   R[AiθAj] = { t | t ∈ R ∧ t[Ai]θt[Ai] }

 

또, Ai와 Aj가 θ 비교 가능하다는 것은 다음 조건을 만족한다.

  • dom(Ai) = dom(Aj)
  • R의 임의의 튜플 t에 대하여 t[Ai]θt[Aj] 의 참/거짓이 정해진다

부등호 선택 연산

 

◎ 결합 (join)

 

말 그대로 결합 속성관의 관계로 두 릴레이션의 튜플을 결합시키는 연산

 

릴레이션 R(A1, A2, A3, .., An) 과 S(B1, B2, ..., Bn) 가 있을때

각각 R과 S의 속성인 Ai와 Bj를 θ 결합하면 R[AiθBj]S 라고 쓴다.

 

결합된 릴레이션은 다음과 같이 정의한다.

   R[AiθBj]S = { (t,u) | t ∈ R ∧ u ∈ S ∧ t[Ai]θu[Bj] } 

 

등호(=) 결합 연산

또, 이런 등호 결합에서는 중복되는 컬럼을 전자만 남기고 후자를 없애는 걸 자연결합(natural join)이라고 하며 R * S로 표기한다.

 

◎ 나누기 (division)

 

릴레이션 R을 S로 나누는 경우 R ÷ S 로 나타낸다.

(R x S ) ÷ S = R 같은 연산이 성립하기 때문에 나누기 연산이라는 이름이 붙었다.

 

R(A1, A2, A3, .., An-m,B1, B2, ..., Bm) 을 n차, S(B1, B2, ..., Bm) 을 m차 릴레이션이라고 하자.

나누기 연산의 정의는 다음과 같다.

   R ÷ S = { t | t ∈ R[(A1, A2, A3, .., An-m] ∧ (∀u ∈ S)( (t,u) ∈ R) }

 

 

-

 

뿐만 아니라 위 8개의 연산 모두가 독립인 것은 아니다.

교집합은 R∩S = R - (R - S) 이니까 차집합 연산을 두 번하면 같은 결과이다.

위 연산 중 합, 차, 곱, 사영, 선택 이 다섯 가지의 조합만 서로 독립인 것으로 알려져있다.

 

 

- 참고서적 : サイエンス社 データベース入門

반응형

관련글 더보기

댓글 영역