[데이터베이스] 관계 데이터 연산

상준·2023년 9월 26일
0

database

목록 보기
11/24

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

관계 데이터 연산

원하는 데이터를 얻기 위해 릴레이션에 필요한 처리를 요구하는 것

  • 관계 대수
    원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어
  • 관계 해석
    처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어

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

  • 데이터 언어의 유용성을 검증하는 기준
  • 관계 대수나 관계 해석을 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어를 관계적으로 완전(relationally complete)하다고 판단
    • 질의(query) : 데이터에 대한 처리 요구

관계 대수(relational algebra)

  • 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술한 언어, 절차 언어
  • 피연산자인 릴레이션에 연산자를 적용한 결과도 릴레이션이라는 폐쇄 특성
  • 릴레이션을 처리하는 연산자들의 모임
    • 대표 연산자 8개
    • 일반 집합 연산자순수 관계 연산자로 분류

일반 집합 연산자(set operation)

릴레이션이 투플의 집합이라는 개념을 이용하는 연산자

  • 합집합(⋃): 두 릴레이션의 합집합 투플을 구함
  • 교집합(⋂): 두 릴레이션의 교집합 투플을 구함
  • 차집합(-): 두 릴레이션의 차집합 투플을 구함
  • 카티션 프로덕트(x): 두 릴레이션의 모든 투플을 각각 연결하여 생성된 투플을 구함

일반 집합 연산자의 특성

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

합집합(union)

  • 표현: R u S
  • 의미: 릴레이션 R과 S의 합집합을 반환
  • 결과 릴레이션의 특성
    • 차수는 릴레이션 R과 S의 차수같음
    • 카디널리티는 릴레이션 R과 S의 카디널리티를 더한 것과 같거나 적어짐
  • 교환적 특징이 있음
    • R u S = S u R
  • 결합적 특징이 있음
    • (R u S ) u T = R u ( S u T)

교집합(intersection)

  • 표현: R ⋂ S
  • 의미: 릴레이션 R과 S의 교집합을 반환
  • 결과 릴레이션의 특성
    • 차수는 릴레이션 R과 S의 차수와 같음
    • 카디널리티는 릴레이션 R과 S의 어떤 카디널리티와 같거나 작음
  • 교환적 특징
    • R ⋂ S = S ⋂ R
  • 결합적 특징이 있음
    • (R ⋂ S) ⋂ T = R ⋂ (S ⋂ T)

차집합(difference)

  • 표현: R - S
  • 릴레이션 R에는 존재하지만 릴레이션 S에는 존재하지 않는 투플로 결과 릴레이션 구성
  • 결과 릴레이션의 특성
    • 차수는 릴레이션 R과 S의 차수와 같음
  • 교환적, 결합적 특징이 없음

카티션 프로덕트(cartesian product)

  • 표현: R x S
  • 결과 릴레이션의 특성
    • 차수는 릴레이션 R과 S의 차수를 더한 것과 같음
    • 카디널리티는 릴레이션 R과 S의 카디널리티를 곱한 것과 같음
  • 교환적 특징이 있음
    R x S = S x R
  • 결합적 특징이 있음
    (R x S) x T = R x (S x T)

순수 관계 연산자(relational operation)

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

  • 셀렉트(select): 릴레이션에서 조건을 만족하는 투플을 구함
  • 프로젝트(π): 릴레이션에서 주어진 속성들의 값으로만 구성된 투플을 구함
  • 조인(⨝): 공통 속성을 이용해 두 릴레이션의 투플들을 연결하여 생성된 투플을 구함
  • 디비전(÷): 나누어지는 릴레이션에서 나누는 릴레이션의 모든 투플과 관련이 있는 투플을 구함

셀렉트(σ)

  • 데이터 언어적 표현법: 릴레이션 where 조건식

  • 조건식

    • 비교식, 프레디킷(predicate)이라고도 함
    • 속성과 상수의 비교나 속성들 간의 비교로 표현
    • 비교 연산자와 논리 연산자를 이용해 작성

프로젝트(project)

  • 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성
  • 하나의 릴레이션을 대상으로 연산을 수행

조인(join)

  • 조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성
    • 조인 속성의 값이 같은 투플만 연결하여 생성된 투플을 결과 릴레이션에 포함
    • 조인 속성: 두 릴레이션이 공통으로 가지고 있는 속성
  • 자연 조인(natural join)이라고도 함

세타 조인(theta join)

  • 자연 조인에 비해 더 일반화된 조인
  • 결과 릴레이션의 차수두 릴레이션의 차수를 더한 것과 같음
  • ϴ는 비교 연산자(>, ≥, <, ≤, =, ≠)를 의미

동일 조인(equi-join)
연산자가 "="인 세타 조인을 의미

확장된 관계 대수 연산자

세미 조인(semi-join)

  • 조인 속성으로 프로젝트한 릴레이션을 이용해 조인
  • 교환적 특징이 없음

외부 조인(outer-join)

  • 자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시키는 조인
    • 결과 릴레이션에서 속상 값이 없는 경우널 값으로 처리

관계 해석

  • 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 언어
    • 비절차 언어(nonprocedural language)
  • 수학의 프레디킷 해석(predicate calculus)에 기반을 둠
  • 기능과 표현력 측면에서 관계 대수와 동등한 능력을 가짐
  • 투플 관계 해석과 도메인 관계 해석으로 분류함
profile
컴공생 공부

0개의 댓글