포스트

관계대수 및 관계해석

관계 대수

관계형 DB에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적인 언어

  • 릴레이션을 처리하기 위한 연산자 집합을 제공한다.
  • 관계 대수는 릴레이션을 입력으로 받아 또 다른 릴레이션을 결과로 생성하는 연산을 사용한다.
  • 원하는 쿼리의 결과를 얻기 위해 수행해야 할 연산의 순서를 명시함으로써 절차적으로 결과를 유도한다.
  • 관계 대수의 연산자는 관계형 데이터베이스를 위해 특별히 개발된 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자로 구성된다.
    • 순수 관계 연산자 : Select(σ), Project(π), Join(⨝), Division(÷) 등
    • 일반 집합 연산자 : 합집합(∪), 교집합(∩), 차집합(-), 교차곱(×) 등

순수 관계 연산자

Select $\sigma$

  • 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산
  • 릴레이션의 행에 해당하는 튜플을 구하는 것이기에 수평연산이라고도 한다.

Project $\pi$

  • 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
  • 연산 결과에 중복이 발생하면 중복이 제거된다.
  • 릴레이션의 열에 해당하는 속성을 추출하는 것이기에 수직연산자라고도 한다.

Join $\bowtie$

  • 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
  • Join의 결과는 Cartesian Product를 수행한 다음 Select를 수행한 것과 같다.

Division $\div$

  • $X \supset Y$인 두 개의 릴레이션 $R(X)$와 $S(Y)$가 있을 때, $R$의 속성이 $S$의 속성값을 모두 가진 튜플에서 $S$가 가진 속성을 제외한 속성만을 구하는 연산

일반 집합 연산자

수학적 집합 이론에서 사용하는 연산자

  • 일반 집합 연사자 중 합집합, 교집합, 차집합을 처리하기 위해서는 합병조건을 만족해야 한다.
  • 합병 조건 :
    • 합병하려는 두 릴레이션의 속성의 수가 같고,
    • 대응되는 속성별로 도메인이 같아야 한다.

합집합 UNION $\cup$

  • 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거하는 연산
  • \[R \cup S = \{t \ |\ t \in R \vee t \in S \} (t는 릴레이션 R 또는 S에 존재하는 튜플)\]
  • 카디널리티
    • \[|R \cup S| \le |R| + |S|\]
    • 합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않다.

교집합 INTERSECTION $\cap$

  • 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
  • \[R \cap S = \{ t\ | \ t \in R \wedge t \in S \} (t는 릴레이션 R 그리고 S에 동시에 존재하는 튜플)\]
  • 카디널리티
    • \[|R \cap S| \le MIN\{|R|, |S|\}\]
    • 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않다.

차집합 DIFFERENCE $-$

  • 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
  • \[R-S = \{ t\ | \ t \in R \wedge t \notin S \} (t는 릴레이션 R에는 존재하고 S에는 없는 튜플)\]
  • 카디널리티
    • \[|R-S| \le |R|\]
    • 차집합의 카디널리티는 릴레이션 $R$의 카디널리티보다 크지 않다.

교차곱 CARTESIAN PRODUCT $\times$

  • 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
  • \[R \times S = \{ r \cdot s | \ r \in R \wedge s \in S\} (r는 R에 존재하는 튜플이고, s는 S에 존재하는 튜플)\]
  • 카디널리티
    • \[|R\times S| = |R| \times |S|\]
    • 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다.

관계 해석 Relational Calculus

관계 데이터의 연산을 표현하는 방법

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