관계 데이터 연산(select, project, 집합 연산)
23년 이전 글/데이터베이스

관계 데이터 연산(select, project, 집합 연산)

관계 데이터 연산의 이해

원하는 데이터를 얻기 위해 필요한 처리 요구를 Relation에 수행하는 것

연산은 시스템의 입장에서, 데이터 언어는 사용자의 입장

관계 데이터 모델에서 지원되는 기본 언어

관계 대수(relational algebra)

  • Relation을 처리하기 위한 연산의 집합
  • 어떻게 질의를 수행할 것인가를 명시하는 절차적 언어(How, What)
  • 관계 대수는 상용 관계 DBMS들에서 널리 사용되는 SQL의 이론적인 기초

관계 해석(relational calculus)

  • 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않음(What)
  • 비절차 언어(nonprocedurral language)
  • 튜플 관계 해석과 도메인 관계 해석

 

관계 대수의 개념

  • Relation을 처리하기 위한 연산의 집합
  • 기존의 Relation들로부터 새로운 Relation을 생성
  • 산술 연산자와 유사하게 단일 Relation이나 두 개의 Relation을 입력으로 받아 하나의 결과 Relation을 생성
  • 결과 Relation은 또 다른 관계 연산자의 입력으로 사용 가능
  • 일반 집합 연산자와 순수 관계 연산자로 구성

 

일반 집합 연산자

합집합(UNION, U), 교집합(INTERSECT, ∩), 차집합(DIFFRENCE, -), 카티션 프로덕트(CARTESIAN PRODUCT, x)

순수 관계 연산자

SELECT, PROJECT, JOIN, DIVISION

관계 연산자

 

관계 대수 - 일반 집합 연산자

일반 집합 연산자의 특성

  • 두 개의 Relation을 대상으로 연산 수행
  • 합집합, 교집합, 차집합 연산은 두 릴레이션이 합병 가능해야함

합병 가능(union compatible)

  • 두 Relation의 차수가 같음
  • 두 Relation에서 대응되는 속성의 도메인이 같음

1) 합집합(union) 연산자

두개의 릴레이션을 합하여 하나의 릴레이션을 반환하는 연산자
두개의 릴레이션을 합하여 하나의 릴레이션을 반환하는 연산자
질의: 김창섭이 속한 부서이거나 개발부서의 부서번호를 검색

2) 교집합(intersection) 연산자

두 릴레이션 모두에 속한 투플들을 반환하는 연산자
두 릴레이션 모두에 속한 투플들을 반환하는 연산자
질의: 김창섭 또는 최종철이 속한 부서이면서 기획부서의 부서번호를검색
교집합 연산 결과

3) 차집합 (diffrence)

두 릴레이션 R과 S의 차집합R –S는R 릴레이션에 속하지만 S 릴레이션에 속하지 않는 투플들로 결과 릴레이션을 구성
차집합 결과
질의: 소속된 직원이 한명도 없는 부서의 부서번호를 검색

4) 카티션 곱(cartesion product) 연산자

두가지 Relation

  • R(A1,A2...An) : 카디날리티 I
  • S(B1, b2...Bm) : 카디날리티 j

R * S는 다음을 만족하는 릴레이션

  • 차수 : n + m
  • 카디날리티 : i * j
  • attribute : R과 S의 튜플들의 모든 가능한 조합으로 이루어진 것 (A1,A2...Am, B1,B2...,Bm)

R에 속한 각 튜플 a에 대해 S에 속한 튜플 b를 모두 접속(concatenation)시킨 튜플(a.b)의 집합

카티션곱(cartesionproduct) 연산자

 

질의: EMPLOYEE 릴레이션과 DEPARTMENT 릴레이션의 카티션 곱을 구하라

 

관계 대수 -  순수 관계 연산자1

릴레이션의 특성과 구조를 사용하여 연산을 수행(select, project, division, join)

selection 연산자

  • 한 Relation에서 조건 (selection condition)을 만족하는 튜플들의 부분 집합 생성
  • selection 연산자는 하나의 입력 relation에 적용(단한 연산자)
  • 표기 형식(sigma 조건식(릴레이션),  R WHERE 조건식)
  • <속성> 연산자 <속성 값>
  • 연산자는 비교 연산자(<,>,=,<>,<=,>=), 부울 연산자(and, or, not)

질의: EMLOYEE 릴레이션에서 3번부서에 소속된 사원들을 검색
질의: EMPLOYEE 릴레이션에서 2번부서에 속하고 급여가 2,000,000 이상인 사원들을 검색

Projection

  • 한 Relation의 속성들의 부분 집합을 구함
  • 프로젝션의 결과로 생성되는 릴레이션은 <속성 리스트>에 명시된 속성들 가짐
  • 생성된 중복 튜플은 제거
  • 사용형식(π 속성리스트 (릴레이션))

모든 사원들의 직급을 검색
프로젝션
프로젝션

관계 대수

  • selection, projection, 합집합, 차집합, 카티션 곱은 관계 대수의 필수적인 연산자
  • 다른 관계 연산자들은 필수적인 관계 연산자를 두 개 이상 조합하여 표현할 수 있음
  • 임의의 질의어가 적어도 필수적인 관계 대수 연산자들만큼의 표현력을 갖고 있으면 관계적으로 완전하다고 말함(relationally complete)

 

학습정리

관계 데이터 언어

  • 관계 해석(튜플 관계해석, 도메인 관계해석)
  • 관계 대수

관계 대수

  • 일반집합 연산자(합집합, 교집합, 차집합, 카티션곱)
  • 순수관계 연산자(실렉션, 프로젝션,조인,디비전)

합병 가능

두 Relation이 차수와 대응되는 열들의 도메인이 같음

Selection 연산

Relation에서 조건을 만족하는 튜플을 검색

Projection 연산

Relation에서 조건을 만족하는 열들의 값을 검색

반응형