[Database System] 관계 데이터 연산

이현준·2020년 10월 6일
1

Database System

목록 보기
1/6

데이터 모델

  1. 구조
  2. 연산(관계 데이터 연산)
  3. 제약조건

관계 데이터 연산(relationship data operation)

원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로, 데이터베이스 시스템의 구성 요소 중 데이터 언어의 역할을 한다.

대표적인 관계 데이터 연산으로 관계 대수와 관계 해석이 있다.

  • 관계 대수

    • 원하는 결과를 얻기 위해 데이터 처리 과정을 순서대로 기술
    • 절차언어
  • 관계 해석

    • 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지 기술
    • 비절차언어

둘 다 실제로 사용되지 않는 개념적 언어인데 왜 공부해야될까?

새로운 데이터 언어가 제안되면 해당 데이터 언어의 유용성을 검증해야 하는데 검증의 기준 역할을 하는 것이 관계 대수와 관계 해석이다. 관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 새로 제안된 데이터 언어로 기술할 수 있으면 관계적으로 완전(relationally complete)하다고 하고, 이를 통해 해당 언어가 어느정도 검증됐다고 판단한다.
그러므로 상용화된 데이터 언어를 공부하기 전에 관계 데이터 언어부터 이해하는 것이 도움이 된다.

관계 대수

개념

원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어다.
연산자들의 집합으로도 정의할 수 있다.
피연산자는 릴레이션이다. 즉 관계 대수는 릴레이션을 연산한다.
연산한 결과도 릴레이션이기 때문에 이런 특성을 폐쇄 특성(closure property)이리 한다.

연산자

일반 집한 연산자

제약조건 2가지
1. 연산을 위해 피연산자(=릴레이션)이 2개 필요하다.
2. 합병 가능(union-compatible)해야 한다. 이 뜻은 다음 조건을 만족한다는 뜻이다.
=> 1. 두 릴레이션의 차수가 같다. 즉, 두 릴레이션의 속성 개수가 같다.
2. 2개의 릴레이션에서 서로 대응되는 속성의 도메인이 같다. 단, 도메인 같으면 속성의 이름은 달라도 된다.
단, 카티션 프로덕트는 합병 가능 여부와 상관없이 연산이 가능하다.

합집합

기호 : ⋃ / 표현 : R ⋃ S / 의미 : 릴레이션의 R과 S의 합집합을 반환

교집합

기호 : ∩ / 표현 : R ∩ S / 의미 : 릴레이션의 R과 S의 교집합을 반환

차집합

기호 : - / 표현 : R - S / 의미 : 릴레이션의 R과 S의 차집합을 반환

카티션 프로덕트

기호 : x / 표현 : R x S / 의미 : 릴레이션의 R의 각 투플과 S의 각 투플을 모두 연결하여 만들어진 새로운 투플을 반환

순수 관계 연산자

셀렉트

기호 : σ / 표현 : σ조건(R) / 의미 : 릴레이션의 R에서 조건을 만족하는 투플들을 반환
수평적 부분집합, 조건식을 이용

릴레이션 where 조건식

프로젝트

기호 : Π / 표현 : Π<속성리스트>(R) / 의미 : 릴레이션의 R에서 주어진 속성들의 값으로만 구성된 투플들을 반환
수직적 부분집합

릴레이션[속성리스트]

조인

기호 : ⋈ / 표현 : R ⋈ S / 의미 : 공통속성을 이용해 릴레이션 R과 S의 투플들을 연결하여 만들어진 새로운 투플들을 반환

  • 자연 조인 : 조인 속성 값이 같은 투플끼리만 연결하여 생성된 새로운 투플로 구성된다.
  • 세타 조인 : 주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결한 새로운 투플로 결과 릴레이션을 구성한다.
  • 세미 조인 : 검색에 불필요한 속성을 미리 제거하여 조인한다. (비용이 줄어든다)

  • 외부 조인 : 투플이 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 모든 투플을 결과 릴레이션에 포함시킨다.(없는 부분은 NULL로 처리해서)

디비전

기호 : ÷ / 표현 : R ÷ S / 의미 : 릴레이션 S의 모든 투플과 관련이 있는 릴레이션 R의 투플들을 반환
릴레이션의 S의 모든 투플과 관련 있는 릴레이션 R의 투플로 결과 릴레이션을 구성한다.
아래와 같이 이해하면 편한다.
12 ÷ 2 = (6 X 2) ÷ 2 = 6
12 는 릴레이션 R, 2는 릴레이션 S로 나누는 수인 2를 제외한 6이 결과값이 된다.

0개의 댓글