정보처리기사/데이터베이스 구축
논리 데이터베이스 설계 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) 연산은 가능한 마지막에 수행함
- 릴레이션의 속성에 나타난 서로 다른 값들을 정확하게 표현할 수 있도록 유지함