37. 관계대수 및 관계해석

1. 관계대수

  • 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
  • 관계대수는 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션이다.
  • 관계대수는 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
  • 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있다.

2. 순수 관계 연산자

종류특징기호
Select– 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
– 릴레이션의 행에 해당하는 튜플(Tuple)을 구하는 것이므로 수평 연산이라고도 함
σ(시그마)
Project– 주어진 릴레이션에서 속성 리스트(Attribute List) 에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
– 연산 결과에 중복이 발생하면 중복이 제거됨
– 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함
π(파이)
Join– 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
– Join의 결과는 Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같음
DivisionX⊃Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산÷

3. 일반 집합 연산자

  • 수학적 집합 이론에서 사용하는 연산자
  • 일반 집합 연산자 중 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 한다.
  • 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같다.
연산자기능 및 수학적 표현카디널리티
합집합
UNION
– 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산이다.
R ∪ S = { t | t ∈ R V t ∈ S }
※ t는 릴레이션 R 또는 S에 존재하는 튜플이다.
| R ∪ S | ≤ | R | + | S |
합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않다.
교집합
INTERSECTION
– 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산이다.
R ∩ S = { t | t ∈ R ^ t ∈ S }
※ t는 릴레이션 R 그리고 S에 동시에 존재하는 튜플이다.
| R ∩ S | ≤ MIN{ | R | , | S | }
교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않다.
차집합
DIFFERENCE
– 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산이다.
R – S = { t | t ∈ R ^ t ∉ S }
※ t는 릴레이션 R에는 존재하고 S에 없는 튜플이다.
| R – S | ≤ | R |
차집합의 카디널리티는 릴레이션 R의 카디널리티 보다 크지 않다.
교차곱
CARTESIAN PRODUCT
×
– 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산이다.
R × S = { r · s | r ∈ R ^ s ∈ S }
※ r는 R에 존재하는 튜플이고, s는 S에 존재하는 튜플이다.
| R × S| = | R | × | S |
교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다.

4. 관계해석(Relational Calculus)

  • 관계 데이터의 연산을 표현하는 방법
  • 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
  • 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
  • 원하는 정보를 정의할 때는 계산 수식을 사용한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다