본문 바로가기
DB & SQL/데이터베이스 개론

관계 데이터 연산

by k-mozzi 2022. 2. 13.
반응형
Preface

 

이번 장에선 관계 데이터 연산의 방법 중 관계 대수에서 사용되는 다양한 연산자에 대해 공부했다.

 

일반 집합 연산자는 평소에 자주 봤던 기호들이라 친근했지만, 순수 관계 연산자들의 역할을 구분하여 예제를 푸는 것은 다소 복잡하고 헷갈렸다.

 

관계 대수와 관계 해석은 실질적으로 사용되지 않고 단지 새로운 언어의 유용성 검증 기준을 위한 도구라고 하는데, 그렇다면 SQL을 이용해 DB를 설계할 때 위의 연산자들은 전혀 쓰이지 않는 것인지 궁금하다.

 

SQL을 본격적으로 소개하는 다음 장에서 그 해답을 얻을 수 있을 것 같다.

 

→ 글을 검토하며 다시 생각해보니 일반 언어에선 특정 문법을 통해 결과(출력물)를 얻으므로, 관계 데이터 연산은 새로운 언어의 문법이 정상적으로 작동하는지 검사할 때만 사용될 뿐, 평소에 사용되지 않는 것이 맞는 것 같다.

 

제발 쓰여있는 글들을 읽기만 하지 말고 왜그런지에 대해 고민하면서 천천히 깊게 생각좀 하자.


 

1. 관계 데이터 연산의 개념

 

 

- 관계 데이터 연산: 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것

→ 실제로 사용되지 않는 개념적 언어이지만, 새로운 데이터 언어의 유용성 검증 기준 역할을 한다.

1) 관계 대수: 절차 언어

2) 관계 해석: 비절차 언어

 

 

- 질의: 데이터에 대한 처리 요구

 


 

2. 관계 대수

 

 

- 관계 대수: 원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어

1) 피연산자가 릴레이션이다.

2) 폐쇄 특성을 지닌다.

→ 피연산자인 릴레이션에 연산자를 적용해 얻은 결과도 릴레이션이다.

 

 

 

- 일반 집합 연산자: 릴레이션이 튜플의 집합이라는 개념을 이용

 

 

 

- 일반 집합 연산자의 제약 조건

1) 일반 집합 연산자는 연산을 위해 피연산자가 2개 필요하다.

2) 합집합, 교집합, 차집합은 피연산자인 2개의 릴레이션이 합병 가능해야 한다.

→ 합병 가능 조건

① 두 릴레이션의 차수가 같다.

② 2개의 릴레이션에서 서로 대응되는 속성의 도메인이 같다.

※ 카티션 프로덕트는 합병 가능 여부와 상관없이 연산 가능

 

 

- 일반 집합 연산자의 종류


1. 합집합: 합병 가능한 두 릴레이션 R과 S의 합집합은 R ∪ S로 표현한다.

1) 합집합 연산의 결과도 릴레이션이므로 중복 튜플이 존재할 수 없다.

2) 교환적 특징: 순서가 바뀌어도 결과 릴레이션은 동일

3) 결합적 특징: 순서가 바뀌어도 결과 릴레이션은 동일

 

 

2. 교집합: 합병 가능한 두 릴레이션 R과 S의 교집합은 R ∩ S로 표현한다.

1) 교환적 특징

2) 결합적 특징

 

 

3. 차집합: 합병 가능한 두 릴레이션 R과 S의 차집합은 R - S로 표현한다.

1) 교환적 특징 X

2) 결합적 특징 X

 

 

4. 카티션 프로덕트: 두 릴레이션 R과 S의 카티션 프로덕트는 R × S로 표현한다.

→ 릴레이션 R과 릴레이션 S에 속한 각 튜플을 모두 연결하여 만들어진 새로운 튜플로 결과 릴레이션을 구성

1) 두 릴레이션이 합병 불가능한 경우에도 연산 가능

2) 이름이 같은 속성이 있을 경우 '릴레이션 이름.속성이름'형식으로 표기

3) 차수: 릴레이션 R과 S의 차수를 더한 것과 동일

4) 카티덜리티: 릴레이션 R과 S의 카티덜리티를 곱한 것과 동일

5) 교환적 특징

6) 결합적 특징


 


 

- 순수 관계 연산자: 릴레이션의 구조와 특성을 이용하는 것으로, 관계 데이터 모델에서 새로 제시된 연산자

 

 

 

- 순수 관계 연산자의 종류


1. 셀렉트(σ): 릴레이션에서 주어진 조건을 만족하는 튜플만 선택하여 결과 릴레이션을 구성

1) 하나의 릴레이션을 대상으로 수행

2) 조건식(비교식, 프레디킷)은 비교 연산자를 이용해 구성

3) 수평적 연산자

4) 교환적 특징

 

 

2. 프로젝트(𝜋): 릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성

1) 수직적 연산자

 

 

3. 조인(⋈): 조인 속성을 이용해 두 릴레이션을 조합하여 하나의 결과 릴레이션을 구성

→ 관계 있는 릴레이션을 구성한 후 조건에 맞는 튜플을 찾기 위해 사용한다.

→ 조인 속성: 두 릴레이션이 공통으로 가지고 있는 속성

1) 자연 조인: 기본적인 조인

2) 세타 조인: 주어진 조인 조건을 만족하는 두 릴레이션의 모든 튜플을 연결한 새로운 튜플로 결과 릴레이션을 구성

→ ex) 릴레이션1 ⋈A𝜃B 릴레이션2

→ 동일 조인: 𝜃 연산자가 '='인 세타 조인으로, 결과 릴레이션에서 속성이 중복되어 나타남

3) 세미 조인: 릴레이션 S의 조인 속성으로만 구성한 릴레이션을 릴레이션 R에 자연 조인하는 것

4) 외부 조인: 연산에 참여하는 두 릴레이션에 있는 모든 튜플을 결과 릴레이션에 포함하는 것

 

 

4. 디비전(÷): 릴레이션 S의 모든 튜플과 관련 있는 릴레이션 R의 튜플로 결과 릴레이션을 구성

→ 릴레이션 R이 릴레이션 S의 모든 속성을 포함해야 연산이 가능하다.


 


 

3. 관계 해석

 

 

- 관계 해석: 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어

1) 튜플 관계 해석

2) 도메인 관계 해석

 

728x90
반응형

'DB & SQL > 데이터베이스 개론' 카테고리의 다른 글

데이터베이스 설계  (0) 2022.02.21
데이터베이스 언어 SQL  (0) 2022.02.17
관계 데이터 모델  (0) 2022.02.11
데이터 모델링  (0) 2022.01.31
데이터베이스 시스템  (0) 2022.01.26

댓글