Chapter 4. 관계 대수

MoonLight·2021년 10월 28일
0

데이터베이스

목록 보기
5/12

0x01 관계 대수(Relational Algebra)

💡 관계 대수의 개념

💡관계 대수관계형 데이터 모델의 일부이며, 지금까지 정의한 관계, 제약 사항에 대한 연산을 제공한다.

데이터베이스에 대한 기본 연산에는 데이터에 대한 입력/삭제/갱신/검색 연산이 있으나, 여기서는 검색 연산만을 살펴보기로 한다. 관계 대수는 관계에 대한 다수 개의 검색 연산을 제공하며, 사용자는 관계 대수를 이용하여 데이터베이스로부터 구하고자 하는 정보를 데이터베이스 시스템에 요청(또는 표현)할 수 있다.

  • 상기 그림에 나열되어 있는 바와 같이 관계 대수6개의 기본적인 연산이 있다.
  • 연산이 있다면 당연히 input이 필요하다. 이 input은 바로 relation(table)이다.
  • 관계 대수input으로 하나 또는 두 개의 관계를 가지며, output으로 새로운 관계를 생성한다.
    • e.g., select는 하나의 relation만을 검색하므로 input이 하나만 필요하고 union같은 경우는 테이블을 합치는 것이므로 2개의 input이 필요하다.
    • 이는 관계 대수 연산의 중요한 성질이며, 관계 대수 연산의 중첩(composition)을 허용하게 한다.
  • 이 새로운 관계가 나온 output 또한 relation(table)이다

상용 데이터베이스 시스템은 관계 대수를 직접적으로 사용자에게 지원하지 않고 SQL 언어를 지원한다. 관계 대수(또는 관계 대수의 변형)는 데이터베이스 시스템 내부에서 사용되는 언어이며, 사용자에게 직접 보이지는 않는다.

관계 대수 연산에 대한 국제 표준은 존재하지 않으며, 그 결과 교과서마다 저자마다 약간의 기호 또는 정의 차이가 있을 수 있음을 기억하자.

1.1 관계대수 Select 연산


(1) Select연산 예제

예제를 먼저 보는 것이 이해에 도움이 된다.

📝선택 연산은 입력 관계에서 주어진 조건을 만족하는 튜플을 생성한다.

  • 상기 예제에서 조건은 “A=B ^ D>4"이며 조건을 만족하는 튜플이 결과 관계이다.
    • 선택 연산의 output은 새로운 관계이다.

(2) Select연산 개념

  • t는 튜플을 의미하며, r은 relation을 의미한다.

  • 예제의 선택 연산은, 교수 중에서 CS 과에 속한 교수를 검색한다.

1.2 관계대수 Project 연산


(1) Project연산 예제

📝 투영 연산은 관계에서 임의의 속성을 선택하는 연산이다.

  • 상기 예제에서 관계 r에서 명시된 속성만을 보여주는 투영 연산이다.
  • 투영 후에 중복된 튜플은 제거된다.
    • 즉, 관계output에는 동일한 튜플이 두 번 이상 나타나지 않는다.
    • 기본적으로 relation은 집합(set) 개념이기 때문에 중복을 제거한다.

(2) Project연산 개념

  • 예제의 투영 연산은 professor relation에서 pID, name, salary 속성만을 구하는 연산이며, 다른 속성은 결과 관계에서 제거된다.

선택 연산튜플 단위로 원하는 결과를 구하는 것이라면, 투영 연산속성 단위로 원하는 결과를 구하는 것이라고 할 수 있다.

1.3 관계대수 Union 연산


(1) Union연산 예제

📝 합집합 연산은 각 관계에서 튜플의 합을 구하는 연산이다.

일반 수학 집합 연산에는 합집합, 교집합, 차집합이 있으며, 관계대수에서도 합집합, 교집합, 차집합 연산이 존재한다.

  • 관계대수의 집합 연산 관점은 Relation = 튜플을 원소로 가지는 집합으로 본다.

(2) Union연산 개념

  • 관계 대수의 합집합 정의는 일반적인 합집합 정의와 동일하며, 튜플집합 원소로 취급한다.

course 관계에는 과목 개설 시기에 대한 정보가 없으므로 teaches 관계를 이용하였다.

1.4 관계대수 Set Difference 연산


(1) Set Difference연산 예제

📝 차집합 연산(한 관계의 튜플) - (다른 관계의 튜플)을 구하는 연산이다.

  • 차집합 연산은 상호호환적(commutative)이지 않으므로, “r-s“과 "s-r"연산 결과는 다르다.

(2) Set Difference연산 개념

1.5 Cartesian Product 연산


(1) Cartesian Product연산 예제

📝 카티시안곱 연산입력 관계에 속하는 튜플의 모든 가능한 조합을 결과 관계로 산출한다.

(2) Cartesian Product연산 개념

  • 카티시안곱 연산은 입력 관계의 각 튜플을 취하여 이를 연결(concatenation)하여 결과 관계를 만든다.
  • 카티시안곱 연산 결과 관계는 일반적으로 크기가 큰 관계이다.
    • 그 이유는 두 입력 테이블의 튜플 개수의 곱만큼의 튜플을 갖는 결과 관계가 만들어지기 때문이다.

두 개의 입력 테이블에 동일 속성이 존재하면, 재명명(rename) 연산을 이용하여 동일한 속성 이름이 없도록(disjoint) 하여야 한다. 이는 입력 테이블에 동일 속성 이름이 존재하면 자연 조인(natural join) 연산이 되기 때문이다.

arity는 속성의 개수를 의미

1.6 Rename 연산


📝 재명명 연산은 단순히 테이블 이름이나 속성 이름을 변경하는 연산이며, 수학 기호는 ρ(rho)이다.

입력 관계가 E이면, 이를 아래첨자에 표시된 바와 같이 재명명하여 결과 관계를 도출한다. 아래 첨자로 표현되는 명시부에서 X는 관계명, A1, ..., An는 속성명을 나타낸다. 관계명만 또는 속성명만 재명명이 가능하며, 관계명만 변경하고자 할 때에는 아래 첨자 명시부에서 속성명을 생략하면 된다. 속성명만 변경하고자 할 때에는 아래 첨자 명시부에서 '관계(속성명)'을 모두 명시하여야 한다.

1.7 관계대수 식 정리


  • 상기에 나열된 관계 대수 6개는 기본적인 관계대수 연산이다.
    • 합집합, 차집합, 카티시안곱, 선택, 투영, 재명명 연산
  • 기본 관계 대수 연산을 이용하여 관계 대수식이 생성된다.

관계대수 식의 결과는 관계이므로 관계대수 식의 합성이 가능하다. 입력 관계 대신에 유효한 관계 대수식을 사용될 수 있으며, 이를 이용하여 복잡한 질의문 작성이 가능하다.

1.8 관계대수 식 연습문제


(1) 연습문제 1

(2) 연습문제 2

(3) 연습문제 3



0x02 추가 관계대수

💡 추가적인 연산들

본 절에서는 기본적인 관계 대수 외에 추가적으로 사용되는 관계 대수를 설명한다. 추가되는 관계 대수는 이미 살펴본 기본 확장 대수를 이용하여 표현이 가능하므로, 관계대수의 표현력(expressive power)을 확장시키지는 않으며 다만 사용 편리성을 제공한다.

살펴볼 연산들은 다음과 같다 :

  • Assignment(할당 연산)
  • Set intersection(교집합 연산)
  • Natural join(자연 조인)
  • Outer join(외부 조인)
  • Division(나눔 연산)

2.1 Assignment 연산

  • 할당 연산자는 복잡한 질의문을 작성할 때 중간 결과 표현을 임시로 저장할 수 있으므로 유용하게 사용할 수 있다.
  • 할당 연산을 하면서 재명명 연산자를 함께 사용하면, 중간 결과의 관계 및 속성 이름을 원하는 것으로 변경하면서 할당할 수 있다.

2.2 Set Intersection 연산

교집합 연산자는 상기에 표기되어 있는 바와 같이, 2회 차집합 연산 적용으로 표현이 가능하므로 확장 관계 연산자에 속한다.

관계 대수 집합 연산자의 경우에, 입력 관계에 대한 속성 개수가 같고, 대응되는 속성의 데이터 타입이 상호 호환되어야 하는 조건은 동일하게 적용된다.

관계를 대상으로 하는 집합 연산 세 가지를 모두 살펴보았으며, 튜플을 하나의 원소로 취급하여 연산을 하며, 그 외 의미는 일반 집합 연산자 의미와 동일하다.

2.3 Natural Join 연산

(1) 예제 1

(2) 예제 2

Natural Join (자연조인)

  • 속성은 카티시안곱+합집합연산
  • 튜플은 튜플들의 모든조합이 아니라 같은속성이라면 같은 value여야한다는 조건을 만족하는 튜플
  • 조인은 관계형 데이터베이스 시스템에서 반드시 지원하는 연산이며, 타 관계 대수 연산에 비하여 시간이 많이 소요되는 비싼 연산이다. 조인 연산 중에서 가장 흔하게 사용되는 조인은 자연 조인이다.

자연 조인은 입력 테이블에 대하여, 첫째 카티시안곱을 수행하고, 둘째 조인 조건을 이용하여 선택 연산을 수행하고, 셋째 조인 조건에 언급된 속성을 이용하여 투영연산을 수행한다.

조인은 기본적으로 카티시안곱, 선택연산, 투영연산을 수행하나, 선택연산과 투영연산 방법 차이에 의하여 세 가지 내부 조인(inner join)으로 구분할 수 있다.

profile
hello world :)

0개의 댓글