Relational Algebra   관계 대수

(2023-12-02)

관계 연산 , 관계 해석


1. 관계 연산 (Relational Operation)

  ㅇ 관계 대수 (Relational Algebra)
     - 관계 모델을 위한 기본적인 연산들의 집합
        . 원하는 데이터를 얻기위해 단계적으로 처리 절차를 적용 
     - (절차적 => 연산들의 모음)

  ㅇ 관계 해석 (Relational Calculus)
     - 단지 원하는 데이터가 무엇인지를 나타내는 상위 레벨의 선언적 질의문 형식
        . 원하는 데이터를 한번에 모두 요구
     - (비 절차적 => SQL)    ☞ SQL (구조화 질의 언어) 참조


2. 관계 대수의 특징

  ㅇ 입출력
     - 1 이상의 릴레이션을 입력으로 받아들여 새로운 결과 릴레이션을 만들어내는 연산 집합

  ㅇ 표현식 형태
     - 사칙 연산과 같은 대수적 표기 보다는, 술어논리(명제함수)를 이용한 관계적 대수식 사용

  ㅇ 연산의 구성/종류                                                     ☞ 아래 3.항 참조
     - `수학집합 연산`과 `릴레이션 간의 상호관계 표현용 연산`을 모두 포함
        . 피연산자는, 릴레이션이며,
        . 연산자는, 셀렉션, 프로젝션, 디비전 등 수학집합 개념에 기초한 연산자


3. 관계 대수의 연산 구분수학집합이론에서 차용 : 하나의 논리적 기능 수행 (E.F. Codd가 정의한 8가지 연산)
     - 일반 집합 연산  :  수학집합 연산으로부터 차용
        . 합집합 (Union) : ∪
        . 교집합 (Intersection) : ∩
        . 차집합 (Difference) : -
        . 카테시안곱 (Cartesian Product) : ×
     - 순수 관계 연산
        . 선택 (Select, Selection) : σ
        . 추출,사영 (Project, Projection) : π
        . 조인 (Join) : ⨝
        . 나누기 (Divide, Division) : ÷
        . 때론, 이름변경 (Rename)도 포함

  ㅇ 유도 가능 연산 여부에 따른 구분
     - 기본 연산 : 선택, 추출, 합집합, 차집합, 카테시안곱 (이들 5개 만 독립적임)
     - 유도 연산 : 나누기, 교집합, 조인
        . 例) R∩S = R - (R - S) 처럼, 차집합 2번이면 교집합이 됨

  ㅇ 복합 연산 : 여러 기본 연산의 조합으로 표현 가능
     - 자연 조인 (Natural Join)
     - 교집합 (Intersection)
     - 배정 (Assignment)
     - 외부 조인 (Outer Join) 등

  ㅇ 단항 연산 : 하나의 릴레이션에 대해서만 연산 수행
     - 선택 (Selection), 추출 (Project), 이름변경 (Rename)

  ㅇ 이항 연산 : 2개의 릴레이션에 대해서 연산 수행
     - 교집합 (Intersection), 자연 조인 (Natural Join), 배정 (Assignment)

  ㅇ 기타 연산
     - 집계 연산 (Aggregate Function) : SUM,AVERAGE,MAX,MIN,COUNT 등


4. 관계 대수의 기본 연산별 설명

  ㅇ 선택 (Select)                              ☞ SELECT 구문 참조
     - 주어진 술어(Predicate)를 만족하는 튜플들을 선택(필터링)하여, 튜플의 수를 줄임
        . SQL 例) WHERE,HAVING절을 이용하여 튜플(행)을 걸러냄
     - 릴레이션을 가로로 잘라내는 것으로써,
        . 관심있는 튜플만 추출하는 것이 가능함

  ㅇ 추출 (Project), 사영 (Projection)
     - 어떤 속성(열,칼럼) 만을 뽑아내어, 결과 릴레이션에 돌려줌으로써, 튜플의 범위를 줄임
        . SQL 例) 집계 함수,GROUP BY절을 포함한 SELECT절로 구현함
     - 릴레이션을 세로로 잘라내는 것으로써,
        . 릴레이션에서 원하는 속성만 뽑아낼 수 있음

  ㅇ 조인, 결합 (Join)                          ☞ 조인(JOIN) 참조
     - 키 값으로 연결된 테이블들을 서로 결합하여, 튜플의 크기를 줄임
        . SQL 例) FROM절JOIN 키워드를 사용하여 조인 수행
     - 결합 속성 관계로부터, 두 릴레이션 간의 튜플을 결합시키는 연산

  ㅇ 나누기 (Divide)         
     - 모든 요구사항(특정 데이터 집합)을 만족하는 데이터 집합
        . SQL 例) 이를 직접 구현한 상용 RDBMS는 없음

  ㅇ 합집합 (Union)                             ☞ 유니온(UNION) 참조
     - 선택과 추출 작업을 한 두 결과 집합을 병합한 결과를 반환
        . SQL 例) SELECT () UNION SELECT ()

  ㅇ 교집합 (Intersection)
     - 선택과 추출 작업을 한 두 결과 집합 중 동일 컬럼인 경우 만 반환 수행
        . SQL 例) SELECT () INTERSECT SELECT ()  (DB2,SQL Server,오라클,PostgresSQL 등 만 지원)

  ㅇ 차집합 (Difference)
     - 한 집합에서 다른 집합을 빼는 것
        . SQL 例) SELECT () EXCEPT SELECT () : DB2, MS SQL Server,PostgreSQL
                  SELECT () MINUS SELECT () : Oracle

  ㅇ 카테시안곱 (Cartesian Product)
     - 두 결과 테이블 간에 모든 결합 가능한 결과를 반환
        . SQL 例) FROM절JOIN절 없이 해당 테이블들 만 명시하면 됨 (또는, 명시적으로 CROSS JOIN)

관계형데이터베이스
   1. RDB   2. RDBMS   3. 관계 대수   4. 실행 계획  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"