정처기/데이터베이스 구축

5. 관계연산 SQL - 44. 관계대수, 연산자

hyehh 2023. 6. 7. 02:18
728x90
반응형
SMALL
728x90
반응형
SMALL

44. 관계대수, 연산자

1. 관계대수

2. 관계해석 자유 변수

3. 순수관계연산자 종류

4. 집합연산자


SQL은 절차적 언어이다.

SQL이 만들어지게 된 이론적 바탕이 관계연산이다. 


1. 관계 대수 (Relational Algebra)

원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 방법이다.

주어진 릴레이션 조작을 위한 연산의 집합이다.

 

일반 집합 연산과 순수 관계 연산으로 구분된다.

질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.

 

수학여행 갈 때 대절 버스 탄다.

대수-절차 버스로 기억하기 


관계 해석 (Relational Calculus)

원하는 정보가 무엇이라는 것만 정의하는 비절차적인 방법이다.

도메인 관계 해석과 튜플 관계 해석이 있다. 


2. 관계 해석 자유 변수

 

∀ 

A를 뒤집어 놓은 기호

for all (모든 것에 대하여), 전칭 정량자 (Universal quantifier : 일반적(모든 것)인 양을 측정할 때 쓴다.)

 

E를 뒤집어 놓은 기호

"There exists", "For Some", 존재 정량자 (Existential quantifier : 존재하는 것의 양을 측정한다.)


3. 순수 관계 연산자의 종류

Select (σ :  시그마) 

튜플 집합을 검색한다. (행을 검색할 때 사용)

 

Project (π : 파이) 

속성 집합을 검색한다. (필드를 검색)

 

Join ()

두 릴레이션의 공통 속성을 연결한다.

 

Division (÷)

두 릴레이션에서 특정 속성을 제외한 속성만 검색한다.


Select (선택)

릴레이션의 행에 해당하는 튜플을 선택하는 것이므로 수평적 연산이라고도 한다.

연산자의 기호는 시그마(δ)를 사용한다.


Project (추출)

Project(추출)은 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직적 연산이라고도 한다.

연산자의 기호는 파이(π)를 사용한다.


Join (결합)

공통 속성을 기준으로 두 릴레이션을 합하여 새로운 릴레이션을 만드는 연산이다.

연산자의 기호는 ⋈를 사용한다.


Division (나누기)

Division에서 나누어지는 릴레이션(학생 릴레이션)은 나누는 릴레이션(학과 릴레이션)의 모든 속성을 전부 포함하고 있다.

연산자의 기호는 ÷를 사용한다.


순수 관계 연산자 예제

σ 학과 = '전자과' (학생) : 학생 릴레이션에서 학과가 전자과인 학생의 튜플을 검색하시오.

<학생>

학번 이름 학과 졸업연도
b101 박수준 국문과 2025
c101 강희영 전자과 2026
c103 두목이 전자과 2027
d101 면처리 영문과 2028

⬇️

<결과>

학번 학과 이름 졸업연도
c101 강희영 전자과 2026
c103 두목이 전자과 2027

4. 일반 집합 연산자의 종류

합집합

두 릴레이션의 튜플의 합집합을 구하는 연산이다.

 

교집합 ∩

두 릴레이션의 튜플의 교집합을 구하는 연산이다.

 

차집합 -

두 릴레이션의 튜플의 차집합을 구하는 연산이다.

 

교차곱 x

두 릴레이션의 투플들의 교차곱(순서쌍)을 구하는 연산이다.


Union (합집합)

Union(합집합)은 두 개의 릴레이션을 합쳐 하나의 릴레이션을 생성한다.

연산자의 기호는 U를 사용한다.


Intersection (교집합)

Intersection(교집합)은 연관성이 있는 두 개의 릴레이션에서 중복되는 레코드를 선택하여 릴레이션을 생성한다.

연산자의 기호는 를 사용한다.


Difference (차집합)

Difference(차집합)은 연관성이 있는 두 개의 릴레이션에서 중복되는 레코드를 제거하여 릴레이션을 생성한다.

연산자의 기호는 - 를 사용한다.


Cartesian Product (교차곱)

두 릴레이션의 튜플을 교차 곱하여 생성한다. 

연산자의 기호는 x 를 사용한다.

예 ) 테이블 한쪽에 A, B 레코드가 있고, 다른 쪽에 이름 레코드가 있다.

A- 박

A- 나

B- 박

B- 나

각각 한번씩 연결한다.

이렇게 연결한다면 곱하기한 것과 같이 4개의 레코드가 나온다.

 

양쪽에 있는 튜플의 개수를 곱하면 그 결과가 나오게 된다라는 것이 교차곱이다

4개가 나올 수 있게 곱한다.


교차곱 예제

릴레이션 R의 차수가 4이고 카디널리티가 5이며, 릴레이션 S의 차수가 6이고 카디널리티가 7일 때, 두 개의 릴레이션을 카티션 프로덕트한 결과의 새로운 릴레이션의 차수와 카디널리티는 얼마인가?

Cartesion Product는 속성의 개수는 더하고 각 튜플을 곱하는 것을 의미한다.

릴레이션R - 차수 4, 카디널리티 5

릴레이션S - 차수 6, 카디널리티 7

답: 차수(Degree) 10, 카디널리티 35


문제 풀이

1. 조건을 만족하는 릴레이션의 수평적 부분 집합으로 구성하며, 연산자의 기호는 그리스 문자 시그마(σ)를 사용하는 관계 대수 연산은?

(각각의 튜플을 검색) Select

 

2. 관계 대수 연산에서 두 릴레이션이 공통으로 가지고 있는 속성을 이용하여 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산은?

Join 

 

3.  관계 대수 연산에서 두 릴레이션이 공통으로 가지고 있는 속성을 이용하여 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산은? 

① ⨝

② ⊃

③ ⫪

σ

1번

 

4. 관계 대수의 순수 관계 연산자가 아닌 것은?

① Select

② Cartesion Product

③ Division

④ Project

2번 

 

5. 관계 대수에 대한 설명으로 틀린 것은?

① 주어진 릴레이션 조작을 위한 연산의 집합이다.

② 일반 집합 연산과 순수 관계 연산으로 구분된다.

③ 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.

④ 원하는 정보와 그 정보를 어떻게 유도하는 가를 기술하는 비절차적 방법이다.

4번  - 대절버스 관계 대수는 절차적인 방법이다.


 

 

728x90
반응형
LIST