Ch06-2.md


관계 대수의 개념과 연산자

  • 개념

    • 원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어

  • 연산

    • 연산자과 피연산자로 구성

  • 폐쇄특성

    • 관계대수의 연산: 릴레이션

    • 피연산자인 릴레이션에 연산자를 적용해 연산한 결과: 릴레이션

  • 관계 대수 연산자

    • 일반 집합 연산자(set operation)

      • 합집합 (Union)

      • 교집합 (Intersection)

      • 차집합 (Difference)

      • 카디션 프로덕트 (Cartesian Product)

    • 순수 관계 연산자(relational operation)

      • 셀렉트 (Select)

      • 프로젝트 (Project)

      • 조인 (Join)

      • 디비전 (Division)

일반 집합 연산자

  • 수학의 집합 연산자와 비슷

일반 집합 연산자의 제약조건

  1. 연산을 위해 피연산자(릴레이션)가 2개 필요하다.

  2. 합집합, 교집합, 차집합은 피연산자인 2개의 릴레이션이 합병 가능(union-compatible)해야 한다.

  • 릴레이션의 합병 가능 조건

    • 두 릴레이션의 차수(속성 개수)가 같다.

    • 2개의 릴레이션에서 서로 대응되는 속성의 도메인(데이터 타입)이 같다.

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

  • 카디션 프로덕트의 경우 제약조건 2번에 해당하는 합병가능 여부에 상관없이 연산이 가능하다.

합집합(Union)

  • 표현

    • R U S

  • 연산 결과의 차수 = 피연산자의 차수

  • 연산 결과의 카디널리티 <= 각 튜플의 카디널리티 합

  • 특징

    • 교환적 특징

      • R U S == S U R

    • 결합적 특징

      • (R U S) U T == R U (S U T)

교집합(Intersection)

  • 표현

    • R ∩ S

  • 연산 결과의 차수 = 피연산자의 차수

  • 연산 결과의 카디널리티 <= 피연산자의 카디널리티

  • 특징

    • 교환적 특징

      • R ∩ S == S ∩ R

차집합(Difference)

  • 표현

    • R - S

  • 연산 결과의 차수 = 피연산자의 차수

  • 연산 결과의 카디널리티 <= 피연산자의 카디널리티

  • 특징

    • 없음

      • 피연산자의 순서에 따라 결과 릴레이션이 달라지기 때문에 교환적 특성과 결합적 특성 모두 존재하지 않는다

카디션 프로덕트(Cartesian Product)

  • 표현

    • R X S

  • 위의 결과 릴레이션의 속성은 '릴레이션.속성이름'형식으로 표기되었는데, 이는 각 릴레이션에서 동일한 이름의 번호 속성이 존재하기 때문에 원래 어느 릴레이션 소속인지 나타내기 위한 표기법이다.

  • 연산 결과의 차수 = 각 피연산자의 차수의 합

  • 연산 결과의 카디널리티 = 각 피연산자 카디널리티의 곱

  • 특징

    • 두 릴레이션의 합병이 불가능한 경우에도 카티션 프로덕트 연산은 가능

    • 교환적 특징

      • R X S == S X R

    • 결합적 특징

      • (R X S) X T == R X (S X T)

순수 관계 연산자

셀렉트 (Select)

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

  • 표현

    • 릴레이션 where 조건식 OR σ등급=‘gold’(고객)

    • 결과 릴레이션은 수평적 부분집합(horizontal subset)과 같음

  • 조건식

    • 릴레이션의 모든 튜플 중 조건식을 참으로 만드는 일부분의 튜플들만 선택하여 출력

    • 비교 연산자를 이용해 구성

    • 비교식 / 프레디킷(predicate)

    • 상수와 비교: 상수의 데이터 타입이 속성의 도메인과 일치해야 함

    • 다른 속성과 비교: 해당 속성의 도메인이 같아야 비교할 수 있음

    • 비교연산자와 함께 논리 연산자(AND, OR, NOT)를 사용하여 더 복잡한 조건식을 구성할 수 있음

  • 교환적 특징 존재

프로젝트 (Project)

  • 릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성

  • 표현

    • 𝝿속성리스트(릴레이션) or 릴레이션[속성리스트]

    • 결과 릴레이션은 주어진 일부 열로만 구성되기 때문에 수직적 부분 집합(vertical subset)과 같음

조인 (Join)

  • 분류

    • 자연 조인(natural join)

    • 세타 조인(theta join)

    • 이중조인

      • 세미조인

      • 외부조인

  • 조인의 개념

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

    • 조인 속성(join attribute)을 이용해 두 릴레이션을 조합하여 하나의 결과 릴레이션을 구성

      • 조인 속성: 두 릴레이션이 공통으로 가지고 있는 속성

  • 자연조인

    • 표현

      • 릴레이션1 ⋈ 릴레이션2

    • 두 릴레이션을 조인 할 때에는 조인 속성의 값이 같은 튜플만 연결하여 결과 릴레이션을 구성

  • 세타조인

    • 표현

      • 릴레이션1 ⋈(속성[비교연산자]속성) 릴레이션2

    • 비교연산이 가능하도록 같은 도메인의 속성을 비교해야함

    • 동일 조인 (equi join)

      • 조인 조건의 비교 연산자가 =인 세타 조인

  • 세미조인(semi join)

    • 개념

    • 개념

      • 두 릴레이션에 자연 조인 연산을 수행할 때 조인 속성 값이 같은 튜플이 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 모든 튜플을 결과 릴레이션에 포함

      • 두 릴레이션에 존재하지 않았던 속성은 널 값으로 처리

디비전 (Division)

  • 개념

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

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

  • 표현

Last updated