HeYStRanGeR
article thumbnail

 

(2022.04.07)

데이터베이스 강의들으면서 정리하기 6탄

 


 

우선, 이번에 정리할 것을 큰 틀로 보면 아래와 같다.


 

관계연산 relation operation

- 관계형 데이터 모델에서 relation을 조작하기 위한 연산

- 관계형 데이터베이서 언어의 명세 형식, 내부 처리과정과 밀접한 연관성 있음

 

관계연산 2가지 표현방법

  • 관계 대수 relation algebra : 절차적 표현방법 procedural (연산들의 적용 순서, 절차를 명세)
  • 관계 해석 relation calculus : 비절차적 표현방법 nonprocedural / 선언적 declarative (연산들의 최종 결과만 명세)

-> 관계 대수와 관계 해석은 데이터 언어의 유용성을 검증하는 기준의 역할을 한다.

 

 


 

관계 대수 relational algebra

: 원하는 결과를 얻기 위해서 relation의 처리과정을 순서대로 기술하는 언어 - 절차 언어

  • 일반 집합 연산자
  • 순수 관계 연산자


 

1. 일반 집합 연산자 - relation이 tuple의 집합이라는 것을 이용하는 연산자

--> 피연산자가 2개 필요함

--> 합집합, 교집합, 차집합은 피연산자인 두 relation이 합병 가능해야함

 

합병 가능 조건 union-compatible 조건

- 두 relation의 차수가 같아야한다.

- 두 relation에서 서로 대응되는 속성의 domain이 같아야한다.

 

 

  • 합집합 union 

- 합병가능한 두 relation R 과 S의 합집합

- 교환적, 결합적 특징 있음

- 결과 릴레이션의 특성

      - 차수: relation R과 S의 차수가 같음

      - 카디널리티: relation R과 S의 카디널리티를 더한 것과 같거나 적음

 

 

  • 교집합 intersection

- 합병가능한 두 relation R과 S의 교집합

- 교환, 결합적 특징 있음

- 결과 릴레이션의 특성

     - 차수: relation R과 S의 차수가 같음

     - 카디널리티: relation R과 S의 어떤 카디널리티보다 같거나 적음

 

 

  • 차집합 difference

- 합병 가능한 두 relation R과 S의 차집합

- 교환, 결합적 특징 없음

- 결과 릴레이션의 특성

      - 차수: relation R과 S의 차수가 같음

      - 카디널리티: R-S 카디널리티는 relation R의 카디널리티와 같거나 적음

      - 카디널리티: S-R 카디널리티는 relation S의 카디널리티와 같거나 적음

 

 

 

  • 카티션 프로덕트 cartesian product

- relation R에 속한 tuple과 relation S에 속한 tuple을 모두 연결하여 만들어진 새로운 tuple로 결과 릴레이션을 구성

- 교환, 결합적 특징 있음

- 결과 릴레이션의 특성

    - 차수: relation R과 S의 차수를 더한 것과 같음

   - 카디널리티: relation R과 S의 카디널리티를 곱한 것과 같음

 

 

------> 최종 정리

 


 

2. 순수 관계 연산자 - relation의 구조와 특성을 이용하는 연산자

 

 

  • select

- relation에서 조건을 만족하는 tuple만 선택하여 결과 relation 구성

- 하나의 relation을 대상으로 연산 수행

- 교환적 특징 있음

- 결과 릴레이션은 연산 대상 릴레이션의 수평적 부분집합

 

 

  • project

- relation에서 선택한 속성의 값으로 결과 릴레이션을 구성

- 하나의 relation을 대상으로 연산 수행

- 결과 릴레이션에서 동일한 tuple은 중복되지 않고, 한 번만 나타남

- 결과 릴레이션은 연산 대상 릴레이션의 수직적 부분집합

 

 

 

  • join

- 두 릴레이션을 조합하여 결과 릴레이션을 구성

- 두 릴레이션이 공통으로 가지고 있는 속성의 값이 같은 tuple만 연결하여 생성된 tuple을 결과 릴레이션에 포함함.

  • natural join : join_조건식에 사용된 중복 속성을 자동제거한 조인 (한번만 나오도록)
  • theta join : natural join에 비해 더 일반화된 조인 (주어진 join_조건을 만족하는 두 릴레이션의 모든 tuple 연결_
  • equi-join : theta join에서 theta 연산자가 '='인 theta join을 의미

 

 

 

  • devision

- 릴레이션 2의 모든 tuple과 관련있는 릴레이션 1의 tuple로 결과 릴레이션을 구성함

- 릴레이션 1이 릴레이션 2의 모든 속성을 포함하고 있어야 연산이 가능함 (도메인이 같아야함)

 

 

 

---> 최종 정리

 

 

++ 확장된 관계 대수 연산자

  • 완전 외부 조인 full outer join (왼쪽과 오른쪽 모두)
  • 왼쪽 외부 조인 left outer join (왼쪽 위주)
  • 오른쪽 외부 조인 right outer join (오른쪽 위주)
  • 외부 합집합 outer union (합병가능하지 않은 두 릴레이션 합병)

 

완전 외부 조인
왼쪽 외부 조인
오른쪽 외부 조인
외부 합집합

 

 

관계 대수의 활용

  • 질의문의 관계 대수식 작성
  • 복수의 관계 대수식 작성
  • 질의 트리 작성
  • 질의 트리 최적화

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!