[데이터베이스] 관계대수(Relational Algebra)와 관계대수 연산

728x90
반응형

관계 대수(Relational Albegra)과 관계대수 연산

* 관계 대수: 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어

 

* 관계형 대수 연산

: Relation들을 조작&관리하기 위한 연산들

-질의 결과를 추출하기 위해 명시하는 연산들(쿼리)

-질의 결과가 어떤 릴레이션의 형태로 된다.


1. 관계대수 연산의 종류

  • SELECT σ, PROJECT ∏ 연산
  • SET 연산: UNION(∪), INTERSECTION(∩), DIFFERENCE(-), CARTESIAN PRODUCT(X)
  • JOIN 연산
  • 기타 관계형 연산들: DIVISION, OUTER JOIN, AGGREGATE FUNCTIONS
  • 일반 집합 연산자: 합집합, 교집합, 차집합, 카티션 프로덕트
  • 순수 관계 연산자: 셀렉트, 프로젝트, 조인, 디비전
    • 릴레이션의 구조와 특성을 이용하는 것으로 관계 데이터 모델에서 새로 제시된 연산자

 

2. 순수 관계 연산자

  • 셀렉트(selection, 셀렉션)(σ): 릴레이션 R에서 조건을 만족하는 튜플들을 반환(수평적 연산자)
  • 프로젝트(projection, 프로젝션)(∏): 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플들을 반환(수직적 연산자)
  • 조인(R ⨝ S): 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결하여 만든 새로운 튜플들을 반환
  • 디비전(R ÷ S): 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환

 

 

 

 

1) Selection(셀렉션) 연산

: 릴레이션에서 주어진 조건을 만족하는 튜플만 선택하여 결과 릴레이션 구성

  • 주어진 릴레이션을 수평으로 절단한 모양(수평적 부분집합)
  • 하나의 릴레이션을 대상으로 수행함.
  • 조건식: 비교 연산자를 이용해 구성 <= 비교식 or 프레디킷
  • 조건식을 속성과 상수의 다른 속성들 같이 비교로 구성할 때는 속성들의 도메인이 같아야 비교 가능
  • 비교 연산자와 함께 논리 연산자도 사용 가능
  • where문을 이용해서도 표현 가능
  • selection은 튜플들 중에서 선택하는 것이므로 unique하다.
  • 테이블의 튜플은 원래 중복 X

 

 

2) Projection(프로젝션) 연산

• selection, projection 모두 중복X

• projection은 중복이 생길 수 있다. 

—> 그러므로 projection 시 DBMS가 인위적으로 중복을 없애준다. (distinct 옵션)

• 연산의 연속: 여러 개의 연산들이 관계 대수 연산을 형성하기 위해 결합될 수 있다. 

- 각 스텝에 대한 중간 결과들을 임시 릴레이션에 저장해놓을 필요가 있음.

 

 

 

3) JOIN(조인) 연산

: 릴레이션 하나로 원하는 데이터를 얻을 수 없어 관계가 있는 여러 릴레이션을 함께 사용해야 하는 경우.

: 두 릴레이션의 조건 있는 결합

• (1)카티션 프로덕트 연산 수행 후 —> (2) 셀렉트: 조인 속성의 값이 같은 조건을 만족하는 튜플 반환

• 조인이라고 하면 보통 동등조인(EQUI JOIN)

 

3-1) 동등조인(EQUI JOIN)

: 하나 이상의 “=“ 연산들을 포함하고 있는 조인(중복 허용)

- 세타가 ‘=‘인 세타조인

- 결과 릴레이션에 두 릴레이션의 모든 속성 포함 => 조인 속성이 중복되어 나타남. —> 자연조인 수행

 

3-2) 세타조인(THETA JOIN)

: 주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결한 새로운 튜플로 결과 릴레이션 구성

- 결과 릴레이션의 차수는 두 릴레이션의 차수를 더한 것과 같다.

 

3-3) 자연조인(natural JOIN)

: 동등 조인의 결과 릴레이션에서 중복된 속성을 제거하여 조인 속성이 한번만 나타남.

- 조인 속성의 이름이 양쪽 릴레이션에서 같아야 함!!

 

 

 

4) Division(디비전) 연산

R÷S: S의 모든 튜플과 관련 있는 R의 튜플로 결과 릴레이션 구성

단, 릴레이션 R이 릴레이션 S의 모든 속성을 포함하고 있어야 연산 가능

릴레이션 S의 모든 속성과 도메인이 같은 속성을 릴레이션 R이 포함하고 있어야 한다는 뜻

 


 

3. 일반 집합 연산자_Set 연산(모두가 관계대수에 속하는 연산들)

- UNION, INTERSECTION, SET DIFFERENCE

- CARTESIAN PRODUCT(모든 쌍을 결과로. 곱셈)

 

- 합집합, 교집합, 차집합을 하려면 2개의 릴레이션이 합병 가능해야 한다. (union compatibility)

1) 두 릴레이션의 차수가 같다. 즉, 속성 개수가 같다.

2) 2개의 릴레이션에서 서로 대응되는 속성의 도메인(자료형)이 같다. 

(단, 도메인이 같으면 속성의 이름은 달라도 된다.)

(ex. dom(Ai) = dom(Bi): A릴레이션의 i번째, B릴레이션의 i번째가 같아야 함.) 

단, 카티션 프로덕트는 합병 가능 여부와 상관없이 연산이 가능하다.

• 카테시안 프로덕트에서 양쪽 릴레이션에서 맞는 것들만 곱셈해서 모든 경우를 반환하면, 거기서 selection해서 필요한 것들 사용 => 원래의 두 릴레이션과 관련된 튜플들을 뽑아낼 수 있다.

 

 

 

1) 합집합

  • 튜플은 릴레이션 R과 S에 모두 존재하지만 합집합 연산의 결과 릴레이션에서는 중복되지 않고 한번만 나타난다.
  • 결과 릴레이션의 차수는 피연산자인 R과 S의 차수와 같고, 카더널리티(튜플의 전체 개수)는 중복이 없기 때문에 릴레이션 R과 S의 튜플 개수를 더한 것과 같거나 적어진다.
  • 교환적 특징, 결합적 특징 O

 

2) 교집합

  • 결과 릴레이션의 차수는 피연산자인 R과 S의 차수와 같고, 카디널리티는 릴레이션 R과 S의 어떤 카디널리티보다 크지 않다. 즉, 같거나 적다.
  • 교환적 특성 O

 

3) 차집합

• R-S: R에는 존재하지만 S에는 존재하지 않는 튜플로 결과 릴레이션 구성

결과 릴레이션의 차수는 R과 S의 차수와 같고,

카디널리티는 R이나 S의 카디널리티와 같거나 적다. 

(R-S는 R의 카디널리티와 같거나 적고, S-R은 S의 카디널리티와 같거나 적다.)

• 피연산자의 순서에 따라 결과 달라짐 => 교환적 특징X, 결합적 특징X

 

4) 카티션 프로덕트

  • R x S: 릴레이션R에 속한 각 튜플과 S에 속한 각 튜플을 모두 연결하여 만들어진 새로운 튜플
  • 두 릴레이션이 합병은 불가능한 경우에도 연산 가능
  • 결과 릴레이션의 차수는 피연산자인 R과 S의 차수를 더한 것과 같고, 카디널리티는 R과 S의 카디널리티를 곱한 것과 같다.
  • 교환적 특징 O

 


 

4. 관계 대수의 한계 ⭐️

 

• 관계대수는 산술 연산을 할 수 없다.

• 집단 함수를 지원하지 않는다.

• 데이터베이스를 수정할 수 없다.

• 프로젝션 연산의 결과에 중복된 튜플을 나타낼 수 없다.

• 연산의 결과를 정렬하여 나타낼 수 없다.


 

마무리

 

<관계 대수 연산들의 Complete Set>

집합은 관계 대수 연산의 “Complete Set”이라 부른다.

어떤 질의 언어는 이들 연산들에 동등하다는 것을 “Relationally Complete”라 부른다.

* 확장된 관계 대수 연산자: 세미조인, 외부조인

 

⭐️ Q. Relationally Complete에서 거리가 먼 것은?

‘Original’ relational algebra의 부분이 아닌 것

=> OUTER JOIN, OUTER UNION, Aggregate function and grouping

 

[요약]

기본 관계 대수 연산: 셀렉트, 프로젝트, 합집합, 차집합, 카티션 프로덕트 + 조인

• 조인: 카티션 프로덕트의 조건 있는 결합이기 때문 

추가적인 관계 연산: 집계함수, 그루핑 연산, 외부조인 연산, 세미조인 연산

 

 


참고자료

<데이터베이스개론>

728x90
반응형