Skip to main content

관계대수

관계 데이터 모델

관계 데이터 모델에서 지원하는 언어는 총 2가지가 있다.

  1. 관계 해석 - 원하는 데이터만 명시하고 질의를 "어떻게 수행할 것인가"는 명시하지 않는 선언적 언어
  2. 관계 대수 - "어떻게 질의를 수행할 것인가"를 명시하는 절차적 언어

관계 대수

  • 릴레이션들을 다루는 연산들

  • 기존의 릴레이션들로부터 새로운 릴레이션을 생성한다. => 입력값, 출력값이 모두 릴레이션이다.

  • 연산자들을 적용하여 보다 복잡한 관계 대수식을 점차적으로 만들 수 있다. 기본적인 연산자들의 집합으로 이루어졌다.

  • 결과 릴레이션은 또 다른 관계 연산자의 입력으로 사용될 수 있다.

    특징

    1. 단일 혹은 두 개의 테이블들을 입력 받아 결과 테이블을 생성한다.
    2. 집합 연산을 토대로 만든 것이 관계 대수이며, 기본적으로는 집합 연산자에 속한다.

관계대수 종류

셀렉션(Selection)

  • 릴레이션 R에서 어떤 선택조건을 만족하는 튜플들을 선택(원하는 데이터를 수평적으로 도출)
  • 결과 릴레이션은 R과 동일한 애트리뷰트(속성)을 가짐
  • σ조건(R)\sigma_{조건}(R) 로 표현

셀렉션

프로젝션(Projection)

  • 한 릴레이션의 애트리뷰트들의 부분 집합을 구함(원하는 데이터를 수직적으로 도출)
  • 중복 튜플 존재 X
  • π애트리뷰트리스트(R)\pi_{애트리뷰트 리스트}(R) 로 표현

프로젝션

합집합(Union)

  • 릴레이션1에 있거나, 릴레이션2에 있는 튜플들로 이루어진 릴레이션을 반환
  • 결과 릴레이션에서 중복된 튜플들을 제거
  • 릴레이션1릴레이션2릴레이션1 \cup 릴레이션2 로 표현

합집합

교집합(Intersection)

  • 릴레이션1과 릴레이션2에 동시에 속하는 튜플들로 이루어진 릴레이션
  • 릴레이션1릴레이션2릴레이션1 \cap 릴레이션2 로 표현

교집합

차집합(Relative Complement)

  • 릴레이션R과 릴레이션S에 대해 R에는 속하지만 S에는 속하지 않은 투플들로 이루어진 릴레이션
  • 릴레이션R릴레이션S릴레이션R - 릴레이션S 로 표현

차집합

카티션 프로덕트(카티션 곱 연산자(Cartesian Product))

  • 카디날리티가 i인 릴레이션 R(A1, A2, ... An)과 카디날리티가 j인 릴레이션 S(B1, B2, ... Bn)의 카티션 곱 R X S는 차수가 n+m이고 카디날리티가 i*j이고, 애트리뷰트가 (A1, A2, ... An, B1, B2, ... Bn)이다
  • R과 S의 튜플들의 모든 가능한 조합인 릴레이션, 카티션 곱의 결과 릴레이션은 크기가 매우 클 수 있다.
  • 유용하지 않음(보통 카티션 곱의 일부분만 원하기 때문)
  • 릴레이션RX릴레이션S릴레이션R X 릴레이션S 로 표현

카티션 프로덕트

디비전(Division)

  • 차수가 n+m인 릴레이션R과 차수가 m인 릴레이션S의 디비전 R / s는 차수가 n이고, S에 속하는 모든 튜플 u에 대하여 tu가 R에 존재하는 투플 t들의 집합
  • 릴레이션RX릴레이션S릴레이션R X 릴레이션S 로 표현

디비전

조인(Join)

  • 두 개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자이다. 관계 데이터베이스에서 두 개 이상의 릴레이션들의 관계를 다루는데 매우 중요한 연산자

  • 예시 : 세타 조인, 동등 조인, 자연 조인, 외부 조인

나올 수 있는 면접 질문

  • 관계대수란?
  • 관계대수의 종류와 각각의 사용방법은?
  • 셀렉션과 프로젝션의 차이는?

참고 url

Codedrive - DB 관계 대수

빵준 - 관계대수

강원대 - 관계대수와 관계 해석

신일석 - 관계 대수의 기본 연산자

기여자


HelloNaks

📦