본문 바로가기

Major Study/25-1 Database

[Database] 08 관계 데이터 연산과 관계 대수

데이터 모델은 데이터 구조, 제약조건, 연산으로 이루어져 있다.

데이터 구조와 제약조건은 데이터베이스를 구축하고 연산은 데이터베이스를 검색한다.

01 관계 데이터 연산

수학적 모델의 구성

- 대상에 대한 '정의'와 대상으로 수행하는 '연산'으로 구성된다.

- 정의 : 대상이 무엇인지 명시하는 기능

- 연산 : 대상을 활용하는 역할 수행

 

연산 (operation)

- '정의역'에 속하는 어떤 '입력' 값을 받아서 해당 '연산'을 수행하고 '출력' 값을 결과로 내보내는 함수이다.

 

관계 데이터 연산 (relational data operation)

- 관계 데이터 (릴레이션)를 검색하여 활용하는 목적으로 정의된 계산들이다.

ex) 셀렉션 (selection)

 

질의 (query)

- 데이터에서 사용자가 검색하고자 하는 결과에 대한 설명이다.

- 하나 이상의 관계 데이터 연산을 중첩해서 만든 '연산식'으로 표현하여 계산한다.

ex) 질의: 고객 릴레이션에서 나이가 25 이하이고 고객번호가 100인 데이터는?

 

- 관계 데이터 연산과 질의를 효과적으로 표현할 수 있는 관계 대수와 관계 해석이라는 표준화된 표현법이 있다.

 

관계 대수

- 관계 데이터 연산의 기호적 표현법이다.

ex) σ {나이≤25} (고객)

 

관계 해석

- 관계 데이터 연산의 집합적 표현법이다.

ex) {고객 | 고객 and 고객.나이 ≤ 25}

 

- 관계 대수와 관계 해석은 기능과 표현력 측면에서 능력이 동등하다.

- 관계 대수는 질의의 계산 순서가 표현된 '절차 언어(procedural language)'이다.

- 관계 해석은 질의의 계산 순서가 표현되지 않고 질의의 결과물만 기술된 '비절차적 언어(nonprocedural language)' 이다.

- 관계 대수가 관계 해석보다 표현이 쉬워서 더 많이 쓰인다.

 

SQL

- 실제 데이터베이스 시스템에서 관계 대수를 사용하기 위해 정의한 데이터 언어이다.

- 관계적으로 완전(relationally complete)하다.

-> 관계 대수로 기술할 수 있는 모든 질의를 기술할 수 있다.

 

02 관계 대수

- 관계 대수는 입출력에 대해 닫혀 있다. -> 입출력이 모두 릴레이션이다.

 

입력에 따른 분류

- 단항 연산자 : 릴레이션 한 개를 입력으로 받는 연산자이다.

- 다항 연산자 : 릴레이션 한 개 이상을 입력으로 받는 연산자이다.

 

대체 가능성에 따른 분류

- 필수 연산자 : 다른 연산자로 기능을 대체할 수 없는 연산자이다.

- 유도된 연산자 : 필수 연산자 조합으로 기능을 대체할 수 있는 연산자이다.

-> 세타 조인은 카디션 곱과 설렉션 연산자 조합으로 대체 가능하다.

 

셀렉션 (selection)

- 입력 : 릴레이션, 조건식

- 출력 : 입력 릴레이션에서 조건식을 만족하는 튜플로 선택된 릴레이션

- 관계대수 표현법 : σ{조건식}(릴레이션)

 

조건식 (predicate, 프레디킷)

- 속성 및 상수로 이루어진 비교식이다.

- 비교 연산자, 논리 연산자를 사용한다.

 

셀렉션의 특징

- 셀렉션은 행에 대한 부분집합 연산이다.

-> 결과 릴레이션의 카디날리티는 입력 릴레이션의 카디날리티보다 작거나 같다.

-셀렉션은 열에 대해서 무관하다.

-> 결과 릴레이션 차수와 입력 릴레이션 차수와 같다.

 

- 교환법칙이 성립한다.

-> 순서는 다르지만 결과는 같다.

 

프로젝션 (projection)

- 입력 : 릴레이션, 속성리스트

- 출력 : 입력 릴레이션에서 속성리스트의 속성들로 선택된 릴레이션

- 관계대수 표현법 : 𝜋{속성리스트}(릴레이션)

-> 중복이 있으면 안 된다.

 

프로젝션 특징

- 프로젝션은 열에 대한 부분집합 연산이다.

-> 결과 릴레이션의 차수는 입력 릴레이션의 차수보다 작거나 같다.

- 프로젝션은 행에 대해서 무관하다.

-> 결과 릴레이션의 카디널리티는 입력 릴레이션의 카디널리티와 같다.

 

집합 연산자 3종

- 합집합, 차집합, 교집합이 있다.

- 릴레이션은 집합형 자료형임으로 일반 집합 연산이 동일하게 릴레이션에 적용 가능하다.

- 필수 연산자 : 합집합, 차집합

- 유도 연산자 : 교집합

- 집합 연산자는 합병 가능 (union-compatible) 조건을 만족해야 한다.

 

합병 가능 (union-compatible) 조건

- 두 릴레이션의 차수가 같아야 한다.

- 두 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 한다. (속성 이름은 무관하다.)

 

합집합 (union)

- 입력 : 두 릴레이션

- 출력 : 두 릴레이션의 합집합 릴레이션

- 전체 조건 : 두 릴레이션은 합병 가능 (union-compatible) 해야 한다.

- 관계대수 표현법 : 릴레이션 1 ∪ 릴레이션 2

합집합(union)의 특징

- 차수는 결과 릴레이션과 입력 릴레이션이 같다.

- 카디널리티는 결과 릴레이션이 입력 릴레이션보다 크거나 같다.

- 교환법칙과 결합법칙이 성립한다.

 

교집합 (intersection)

- 입력 : 두 릴레이션

- 출력 : 두 릴레이션의 교집합 릴레이션

- 전체 조건 : 두 릴레이션은 합병 가능 (union-compatible) 해야 한다.

- 관계대수 표현법 : 릴레이션 1릴레이션 2

 

교집합(intersection)의 특징

- 차수는 결과 릴레이션과 입력 릴레이션이 같다.

- 카디널리티는 결과 릴레이션이 입력 릴레이션보다 작거나 같다.

- 교환법칙과 결합법칙이 성립한다.

 

차집합 (difference)

- 입력 : 두 릴레이션

- 출력 : 두 릴레이션의 차집합 릴레이션

- 전체 조건 : 두 릴레이션은 합병 가능 (union-compatible) 해야 한다.

- 관계대수 표현법 : 릴레이션 1 - 릴레이션 2

차집합(difference)의 특징

- 차수는 불변

- R-S의 카디널리티는 릴레이션 R의 카디널리티와 작거나 같다.

- 교환/결합법칙 성립하지 않는다.

 

카디션 곱 (카티선 프로덕트, cartesian product)

- 입력 : 두 릴레이션

- 출력 : 두 릴레이션의 모든 조합 튜플로 이루어진 릴레이션

- 관계 대수 표현법 : 릴레이션 1 x 릴레이션 2

 

카티션 곱의 특징

- 차수는 두 입력 릴레이션의 차수의 합이다.

- 카디널리티는 두 입력 릴레이션 카디널리티의 곱이다.

- 교환법칙/결합법칙이 성립한다.