본문 바로가기

CS/데이터베이스 DB

[데이터베이스] 관계대수 (relational algebra)

1. 관계대수(Relational Algebra)

  1) 관계대수란?

     - 관계형 모델은 데이터를 테이블(표)로 표현한 것이다.

       따라서 관계대수는 이러한 테이블을 가지고 하는 연산이다.

     - 관계대수는 데이터베이스 질의어(Query)의 이론적인 바탕을 제공한다.

     - 관계대수는 비절차적이다. 즉 절차가 바뀌더라도 결과는 동일하다.

     - 관계대수의 결과는 레코드의 집합이다. 즉 관계대수의 결과는 또 다른 관계(relation = table)이다.

     - 5개의 기본 연산과 기본 연산을 조합해서 만들 수 있는 기타 연산들이 있다.

  2) 기본 연산

     - 입력(피연산자) : 하나 또는 두 개의 테이블

        출력 : 하나의 테이블

     - 기본 연산 5가지 :

        (1) 선택 연산 (select)

        (2) 속성 추출 연산 (project) 

        (3) 합집합 연산 (union)

        (4) 차집합 연산 (set difference)

        (5) 카티전 곱 연산 (cartesian product)

     - 응용 연산 3가지

        (1) 교집합 연산 (set intersection)

        (2) 자연 조인 연산 (natural join)

        (3) 나누기 연산 (division)

 3) 선택 연산(select)

     - 테이블에서 특정 조건을 만족하는 튜플(행)을 선택하는 연산자

     - 입력 : 테이블 하나 

        결과 : 테이블 하나

     - 시그마<선택조건>(테이블이름)

     - 선택 연산 과정 :

       (1) 선택 연산을 수행할 때는 테이블 이름을 보고 해당 테이블을 가져온다.

       (2) 첫번째 튜플부터 선택 조건에 해당하는지 검사한다. 

       (3) 조건이 참이면 해당 튜플을 선택한다.

       이를 반복하여 선택된 튜플들로 테이블을 구성하면 결과 테이블이 된다.

 4) 속성 추출 연산(project)

    - 테이블에서 원하는 속성(열)을 추출하는 연산자

    - 입력 : 테이블 하나

       결과 : 테이블 하나

    - 파이<속성리스트>(테이블이름)

  5) 카티전 곱 연산(cartesian product)

    - 두 관계를 곱해서 가능한 모든 튜플들을 만드는 연산

    - 입력 : 테이블 둘

       출력 : 테이블 하나

    - 테이블1 x 테이블2

    - 테이블 2개를 조합한 것이므로

       결과 테이블의 속성은 두 테이블의 모든 속성 수이고, 튜플은 두 테이블의 튜플 수를 곱한 것이다.

6) 합집합(union), 차집합(set difference) 

    - 말 그대로 튜플들의 합집합, 차집합이다.

    - 단 두 입력 테이블 간에 호환성이 있어야 한다. (=스키마가 같아야 한다.)

       즉 둘의 형태가 같아야 한다. (속성이 개수나 매칭이 되는 속성도 다 같은 뜻..)

7) 교집합

    - 교집합은 차집합을 조합해서 표현한다.  

       속성은 합집합, 차집합과 같다.

8) 자연 조인 연산(natural join)

    - 두 관계에서 연관이 있는 튜플들만 조합하는 것.

       카티전 곱은 다 조합하는 것이라면 의미있는 속성만으로 조합한다는 것이 차이점이다.

    - 자연 조인 연산 3단계 과정

       (1) 두 테이블의 카티전 곱을 구한다.

       (2) 카티전 곱의 결과 테이블에서 공통 속성의 값이 같은 튜플들만 남긴다. 

            (공통 속성이 없다면 결과는 카티전 곱과 같으므로

              자연 조인 여산에서는 두 입력 테이블의 공통 속성이 있어야 한다.) 

       (3) 공통 속성은 둘 중 한나만 추출하고 나머지 속성들을 모두 추출하는 속성 추출 연산을 한다.

 

    - 전형적인 자연 조인 경우

       입력 테이블 두 개 중 한 테이블에서는 공통 속성이 기본키이고

       다른 테이블에서는 공통 속성이 외래키이다. 

       실제로 여러 개의 테이블들이 많이 연관되어 있으므로 자연 조인은 매우 많이 발생하는 연산이다.

    - 공통 속성이 기본키인 테이블을 상위 테이블이라 하고

       공통 속성이 외래키인 테이블을 하위 테이블이라 한다.

       따라서 하위 테이블에는 외톨이 튜플(자연 조인하는데 짝이 없는 경우)이 있을 수 없다.

    - 자연 조인의 결과 생성되는 튜플의 수는 공통 속성이 외래키인 테이블의 튜플 수와 같다.

      (외톨이 튜플이 없을 경우)

 

 9) 나누기 연산(division)

    - 두 관계 A, B에서 B의 튜플들과 연관있는 모든 A의 튜플들만 추출하는 연산

    - 많이 쓰이진 않는다. 보통 select, project 연산으로 대체한다.