CS

관계 데이터 연산

javajoha 2023. 4. 15. 16:51

데이터 모델(data model)

  • 데이터 모델링의 결과물을 표현하는 도구
  • 개념적 데이터 모델 - 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
  • 논리적 데이터 모델 - 개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구

데이터 모델 = 데이터 구조 + 연산 + 제약조건

 

관계 데이터 연산

  • 관계 데이터 모델의 연산
  • 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
  • 관계 대수와 관계 해석이 있음

관계 데이터 연산의 종류

관계 대수와 관계 해석의 역할

  • 데이터 언어의 유용성을 검증하는 기준
  • 관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어를 관계적으로 완전하다고 판단함

 

관계 대수의 개념

  • 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어
  • 릴레이션을 처리하는 연산자들의 모임
  • 폐쇄 특성이 존재함

관계 대수 연산자의 종류

 

일반 집합 연산자

  • 피연산자가 2개 필요함 - 2개의 릴레이션을 대상으로 연산을 수행
  • 합집합, 교집합, 차집합은 피연산자인 두 릴레이션이 합병 가능해야 함
  • 두 릴레이션의 차수가 같아야 함
  • 두 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 함

일반 집합 연산자 - 합집합(union)

  • 합병 가능한 두 릴레이션 R과 S의 합집합 : R ∪ S
  • 차수는 릴레이션 R과 S의 차수와 같음
  • 카디널리티는 릴레이션 R과 S의 카디널리티를 더한 것과 같거나 적어짐
  • R ∪ S = S ∪ R
  • (R ∪ S) ∪ T = R ∪ (S ∪ T)

합집합 예시

 

일반 집합 연산자 - 교집합(intersection)

  • 합병 가능한 두 릴레이션 R과 S의 교집합 : R ∩ S
  • 차수는 릴레이션 R 과 S의 차수와 같음
  • 카디널리티는 릴레이션 R과 S의 어떤 카디널리티보다 크지 않음
  • R ∩ S = S ∩ R
  • (R ∩ S) ∩ T = R ∩ (S ∩ T)

교집합 예시

 

일반 집합 연산자 - 차집합(difrrerence)

  • 합병 가능한 두 릴레이션 R과 S의 차집합 : R - S
  • 차수는 릴레이션 R 과 S의 차수와 같음
  • R - S의 카디널리티는 릴레이션 R의 카디널리티와 같거나 적음
  • S - R의 카디널리티는 릴레이션 S의 카디널리티와 같거나 적음

차집합 예시

 

일반 집합 연산자 - 카티션 프로덕트(cartesian product)

  • 두 릴레이션 R 과 S의 카티션 프로덕트 : R × S
  • 각 투플을 모두 연결하여 만들어진 새로운 투플로 결과 릴레이션을 구성
  • 차수는 릴레이션 R 과 S의 차수를 더한 것과 같음
  • 카디널리티는 릴레이션 R과 S의 카디널리티를 곱한 것과 같음
  • R × S = S × R
  • (R × S) × T = R × (S × T)

카티션 프로덕트 예시

 

순수 관계 연산자

  • 릴레이션의 구조와 특성을 이용하는 연산자

순수 관계 연산자 - 셀렉트(select)

  • 릴레이션에서 조건을 만족하는 투플만 선택하여 결과 릴레이션을 구성
  • 하나의 릴레이션을 대상으로 연산을 수행
  • 수학적 표현법 : σ조건식(릴레이션)
  • 데이터 언어적 표현법 : 릴레이션 where 조건식
  • 조건식 - 비교 연산자(>,≥, <,≤,=,≠)와 논리 연산자(∧,∨,¬)를 이용하여 작성

EX) 가격이 8000원 이하이고, 도서번호가 3 이상인 책을 찾아라

 ->  σ(가격 <=8000 ∧ 도서번호 >=3) (도서)

셀릭트

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

 

순수 관계 연산자 - 프로젝트(project)

  • 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성
  • 하나의 릴레이션을 대상으로 연산을 수행
  • 수학적 표현법 :𝜋속성리스트(릴레이션)
  • 데이터 언어적 표현법 : 릴레이션[속성리스트]

EX) 고객 릴레이션에서 고객이름, 등급, 적립금을 검색하시오

-> 𝜋고객이름, 등급, 적립금(고객)

 

 

프로젝트 예시

 

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

 

 

순수 관계 연산자 - 조인(join)

  • 조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성
  • 조인 속성의 값이 같은 투플만 연결하여 생성된 투플을 결과 릴레이션에 포함
  • 조인 속성 : 두 릴레이션이 공통으로 가지고 있는 속성
  • 표현법: 릴레이션 1⋈릴레이션 2

 

세타 조인(theta-join, 𝜽-join)

  • 동등 조인에 비해 더 일반화된 조인
  • 주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결하여 생성된 새로운 투플로 결과 릴레이션을 구성
  • 결과 릴레이션의 차수는 두 릴레이션의 차수를 더한 것과 같음
  • 표현법 : 릴레이션 1A𝜃B 릴레이션 2
  • 𝜽는비교연산자(>,≥, <,≤,=,≠)를의미

동등 조인(equi-join)

  • 𝜽 연산자가 “=”인 세타 조인을 의미
  • 표현법 : 릴레이션 1 ⋈A=B 릴레이션 2

자연 조인(natural join)

  • 동등 조인의 결과 릴레이션에서 조인 속성이 한 번만 나타나게 하는 연산
  • 표현법 : 릴레이션 1 N 릴레이션 2

 

자연 조인 예시

 

순수 관계 연산자 - 디비전(division)

  • 표현법 : 릴레이션 1 ÷ 릴레이션 2
  • 릴레이션 2의 모든 투플과 관련이 있는 릴레이션 1의 투플로 결과 릴레이션을 구성

디비전 예시

 

확장된 관계 대수 연산자 - 세미 조인(semi-join)

  • 조인 속성으로 프로젝트 연산을 수행한 릴레이션을 이용하는 조인
  • 표현법 : 릴레이션 1 ⋉ 릴레이션 2
  • 릴레이션 2를 조인 속성으로 프로젝트 연산한 후, 릴레이션 1에 자연 조인하여 결과 릴레이션을 구성

 

세미 조인 예시

확장된 관계 대수 연산자 - 외부 조인(outer-join)

  • 자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시키는 조인
  • 표현법 : 릴레이션 1+ 릴레이션 2
  • 자연조인 시 조인에 실패한 투플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환 

외부 조인

관계 대수 정리

 

관계 해석

  • 처리를 원하는 데이터가 무엇인지만 기술하는 언어
  • "어떻게 검색할 것인가"보다 "무엇을 검색할 것인가"만을 기술하는 선언적 표현법을 사용하는 비절차적 질의어

 

투플 변수

  • 릴레이션의 투플들을 범위로 가지는 변수이다.
  • 봉급이 50000을 넘는 모든 사원을 검색 -> {t | EMPLOYEE(t) and t.SALARY > 50000}
  • EMPLOYEE(t)는 투플 수 t가 릴레이션 EMPLOYEE의 투플들을 범위로 함을 나타다.
  • 투플 t의 모든 속성 값이 리턴된다.

도메인 관계해석

  • 투플 관계 해석에서는 투플이 중심인 반면, 도메인 관계 해석에서는 속성이 중심이다.