[Database] 관계 대수


관계데이터연산의 개념

  • 데이터 모델 = 데이터 구조 + 연산 + 제약조건

    • 데이터 구조 : 3주차 – 관계 데이터 모델
    • 제약 조건 : 4주차 1차시 – 관계 데이터 모델의 제약 조건
  1. 관계 데이터 연산 (Relational Data Operation)

    • 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리를 요구하는 것

      • 질의 (Query) - 데이터에 대한 처리 요구
    • 데이터베이스 구성 요소중 데이터 언어의 역할을 함
    • 관계 데이터 모델의 연산의 약칭
    • 연산 종류

      • 관계 대수 : 데이터의 처리 과정을 순서대로 기술
      • 관계 해석 : 처리하고자하는 데이터가 무엇인지만 기술
  2. 관계대수와 관계해석의 특징

    • 차이점

      • 데이터를 얻기 위한 처리 절차를 자세히 기술하는 정도
    • 데이터를 처리하는 기능과 처리를 요구하는 표현

      • 관계대수와 관계해석은 능력이 동등



    • 상용화된 관계 데이터베이스에서는 실제로 사용되지 않는 개념적인 언어
    • 학습하는 이유

      • 새로운 데이터 언어에 대하여 유용성을 검증하는 기준
      • 상용화된 데이터 언어를 학습하기 전에 연산의 기본이 되는 관계 데이터 언어를 이해하는 것이 중요함.



관계 대수

  1. 관계 대수의 개념

    • 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어
    • 절차 언어 (Procedural Language)
    • 피연산자 : 릴레이션

      • 관계대수는 릴레이션을 연산한다.
    • 관계대수식 (Relational Algebra Expression) : 연산을 수행하기 위한 식

      • 단항 연산자


    - 이항 연산자


    • 결과 : 릴레이션
    • 릴레이션을 처리하는 연산자들의 모임

      • 대표 연산자 8개
      • 일반 집합 연산자(Set Operation)와 순수 관계 연산자(Relational Operation)로 분류됨
  2. 관계 대수 연산자의 종류



일반 집합 연산자

  1. 일반집합 연산자 (Set Operation) 개요

    • 릴레이션이 투플의 집합이라는 개념을 이용하는 연산자

      (A) 일반 집합 연산자의 종류와 의미



      (C) 일반 집합 연산자의 특성

      • 2개의 피연산자가 필요함

        • 2 개의 릴레이션을 대상으로 연산을 수행
      • 두 릴레이션의 합병이 가능하여야 함 (합집합, 교집합, 차집합)

        • 합병 가능 (Union-Compatible) 조건

          (a) 두 릴레이션의 차수가 같아야 함

          (b) 두 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 함



  2. 일반 집합 연산자의 종류 및 기능

    (A) 합집합 (Union) 연산자

    • 합병 가능한 두 릴레이션 R과 S의 합집합

      • 릴레이션 R에 속하거나 릴레이션 S에 속하는 모든 투플로 결과 릴레이션 구성



    (B) 교집합 (Intersection) 연산자

    • 합병 가능한 두 릴레이션 R과 S의 교집합

      • 릴레이션 R과 릴레이션 S에 공통으로 속하는 모든 투플로 결과 릴레이션 구성


      • 예 : 고객릴레이션과 사원릴레이션의 교집합

    (C) 차집합 (Difference) 연산자

    • 합병 가능한 두 릴레이션 R과 S의 차집합

      • 릴레이션 R에는 존재하고 릴레이션 S에는 존재하지 않는 투플로 구성된 릴레이션 반환

      • 교환적, 결합적 특징이 없음

      • 예 : (고객릴레이션 – 사원릴레이션) 과 (사원릴레이션 – 고객릴레이션)


    (D) 카티션 프로덕트 (Cartesian Product) 연산자

    • 두 릴레이션 R과 S의 카티션 프로덕트

      • 릴레이션 R에 속한 각 투플과 릴레이션 S에 속한 각 투플을 모두 연결하여 만들어진 새로운 투플 생성