정보처리기사/데이터베이스 구축

논리 데이터베이스 설계 5

RangA 2023. 5. 26. 02:09

04. 관계 스키마와 함수 종속

03. 관계 대수

1) 관계 대수(Relational Algebra)

1. 관계 대수의 개념

  • 주어진 관계로부터 원하는 데이터와 그 데이터를 어떻게 유도하는가를 연산자, 연산 규칙 등을 사용해서 기술하는 절차식 언어
  • 릴레이션으로부터 필요한 릴레이션을 만들어내는 데이터와 연산자의 집합
  • 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시함
  • 릴레이션 조작을 위한 연산의 집합으로 피연산자와 결과가 모두 릴레이션
  • 일반 집합 연산자와 순수 관계 연산자로 구분

2. 일반 집합 연산자

  • 합집합(∪)
    • 예시 : R∪S
    • 릴레이션 R 또는 릴레이션 S에 속하는 튜플의 집합을 구함
  • 교집합(∩)
    • 예시 : R∩S
    • 릴레이션 R, S에서 공통으로 존재하는 튜플의 집합을 구함
  • 차집합(-)
    • 예시 : R-S
    • 릴레이션 R에 있는 튜플에서 S에 있는 튜플을 제외한 튜플의 집합을 구함
  • 곱집합(×)
    • 예시 : R×S
    • 릴레이션 R, S를 접속하여 두 릴레이션의 튜플 내용들을 합쳐서 순서쌍의 집합을 구함

3. 순수 관계 연산자

  • 셀렉션(σ)
    • 예시 : σaθb(R)
    • 릴레이션 R에서 (aθb)조건에 만족하는 튜플의 수평적 부분 집합을 구함
  • 프로젝션(π)
    • 예시 : πa(R)
    • 릴레이션 R에서 a 속성 값으로 이루어진 튜플의 수직적 부분 집합을 구함
  • 조인(▷◁)
    • 예시 : R ▷◁N S
    • 릴레이션 R, S에서 공통된 속성이 들어 있는 경우를 접속하여 튜플의 집합을 구함
    • 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듦
  • 디비전(÷)
    • 예시 : R÷S
    • 릴레이션 R, S에서 모든 조건이 만족하는 튜플의 집합을 구함

2) 합집합(Union)

  • 두 개의 릴레이션이 필요한 이항 연산자
  • 두 개의 릴레이션의 차수가 같아야 하며, 대응되는 속성의 도메인도 같아야 함
  • 릴레이션 R 또는 S에 존재하는 튜플의 집합을 구함
  • 서로 다른 테이블에서 동일한 데이터를 사용한 경우, 두 테이블을 합치는 경우에 사용함

3) 교집합(Intersection)

  • 두 개의 릴레이션이 필요한 이항 연산자
  • 두 개의 릴레이션의 차수가 같아야 하며, 대응되는 속성의 도메인도 같아야 함
  • 릴레이션 R과 S에 동시에 존재하는 튜플의 집합을 구함
  • 서로 다른 테이블을 사용하지만 동일한 데이터가 있는 경우, 두 테이블에서 동일한 데이터를 추출할 때 사용

4) 차집합(Difference)

  • 두 개의 릴레이션이 필요한 이항 연산자
  • 두 개의 릴레이션의 차수가 같아야 하며, 대응되는 속성의 도메인도 같아야 함
  • 릴레이션 R과 S가 있을 때, R 릴레이션에서 S 릴레이션의 튜플 내용과 겹치는 튜플을 제거해서 새로운 릴레이션을 생성하는 연산

5) 곱집합(Cartesian Product)

  • 두 개의 릴레이션이 필요한 이항 연산자
  • 두 개의 릴레이션의 차수와 도메인이 같이 않아도 됨
  • 릴레이션 R에는 튜플의 수가 N개, 릴레이션 S에는 튜플의 수가 M개 일 경우에 결과 릴레이션의 튜플의 수는 N×M개가 됨
  • 두 릴레이션의 튜플 내용들을 합쳐서 순서쌍의 집합을 만들어 내는 연산

6) 셀렉션(Selection)

  • 한 개의 릴레이션을 대상으로 하는 단항 연산자
  • 하나의 릴레이션에서 조건에 맞는 튜플을 분리해 내는 연산
  • 하나의 릴레이션에서 수평적 부분 집합을 취하는 연산
    • 수평적 부분 집합 : 튜플(행)의 결과를 추출함

7) 프로젝션(Projection)

  • 한 개의 릴레이션을 대상으로 하는 단항 연산자
  • 하나의 릴레이션에서 조건에 맞는 속성을 분리해 내는 연산
  • 하나의 릴레이션에서 수직적 부분 집합을 취하는 연산
    • 수직적 부분 집합 : 속성(열)의 결과를 추출함

8) 세터 조인(θ-Join)

  • 두 개 이상의 릴레이션에서 조건에 맞는 속성들이 들어있는 새로운 릴레이션을 생성하는 연산
  • θ를 관계 연산자라고 하며, =, ≠, ≤, ≥, <, > 연산자를 이용하여 세터 조인을 함

9) 자연 조인(Natural-Join)

  • 두 개 이상의 릴레이션에서 조건(같은 조건)에 맞는 속성들이 들어있는 새로운 릴레이션을 생성하는 연산
  • 자연 조인하고자 하는 두 개의 릴레이션은 적어도 한 개 이상이 같은 속성이 존재해야 함

10) 디비전(Division)

  • 두 개 이상의 릴레이션에서 조건에 맞는 속성들이 들어있는 새로운 릴레이션을 생성하는 연산
  • 디비전은 프로젝션이 포함되어 있는 연산

11) 질의 최적화의 경험적 규칙

  • 질의는 데이터베이스에 존재하는 데이터를 사용자가 원하는 조건을 통해 검색하고, 검색된 결과를 자유로이 조회할 수 있는 기능 등을 지원함
  • 관계 대수를 바탕으로 질의가 만들어짐
  • 질의처리를 가장 최적화할 수 있는 방법은 경험에서 얻어진 규칙이 우선됨
  • 데이터베이스 관리 시스템에서 질의처리를 빠르게 수행하기 위해 질의를 최적화해야 함
  • 추출(Project) 연산은 일찍 수행함
  • 선택(Select) 연산은 가능한 한 일찍 수행함
  • 조인(Join) 연산은 가능한 마지막에 수행함
  • 릴레이션의 속성에 나타난 서로 다른 값들을 정확하게 표현할 수 있도록 유지함