Computer/Database

04 관계 데이터 모델 (2)

코머 2021. 10. 20. 03:43

3. 관계 대수

관계대수 

: 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어 (DBMS 내부의 처리 언어)

절차적 언어, 하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션이 나오기까지의 절차를 확인할 수 있는 방법을 제공

 

관계대수 연산자

: 피연산자에 적용되는 연산 기호 (릴레이션을 피연산자로 한다)

1) 순수 관계 연산 : 관계 데이터 모델을 위해 고안

 -  셀렉션(selection), 프로젝션(projection), 조인(join), 디비전(division), 개명(rename)

2) 일반 집합 연산 : 수학의 집합이론에서 차용

- 합집합(union), 차집합(difference), 교집합(intersection), 카티전 프로덕트(cartesian product)

연산자 종류 대상 연산자 이름 기호 설명
기본 단항 셀렉션 σ 릴레이션에서 조건에 만족하는 투플을 선택
기본 단항 프로젝션 릴레이션의 속성을 선택
추가 단항 개명 릴레이션이나 속성의 이름을 변경
유도 이항 디비전 ÷ 부모 릴레이션에 포함된 투플의 값을 모두 갖고 있는 투플을 분자 릴레이션에서 추출
기본 이항 합집합 두 릴레이션의 합집합
기본 이항  차집합 두 릴레이션의 차집합
유도 이항 교집합 두 릴레이션의 교집합
기본  이항 카티전 프로덕트 × 두 릴레이션에 속한 모든 투플의 집합
유도 이항 조인 세타 θ 두 릴레이션 간의 비교 조건에 만족하는 집합
동등 두 딜레이션 간의 같은 값을 가진 집합
자연 N 동등조인에서 중복 속성을 제거
세미 왼쪽 자연조인 후 오른쪽 속성을 제거
오른쪽

자연조인 후 왼쪽 속성을 제거
외부 왼쪽 - 자연조인 후 각각 왼쪽, 오른쪽, 양쪽의 모든 값을 결과로 추출
- 조인이 실패(또는 값이 없을 경우)한 쪽의 값을 NULL로 채움
오른쪽
양쪽

 

관계대수식

: 관계대수 연산을 수행하기 위한 식, 대상이 되는 릴레이션과 연산자로 구성, 관계대수식의 적용순서는 수학 연산과 동일

관계 대수의 결과는 릴레이션으로 반환, 반환된 릴레이션은 릴레이션의 모든 특징을 따름 (중복된 투플은 존재하지 않음)

- 단항 연산자 : 연산자<조건> 릴레이션

- 이항 연산자 : 릴레이션 1 연산자<조건> 릴레이션2

 

셀렉션과 프로젝션

1) 셀렉션

 : 릴레이션의 투플을 추출하기 위한 연산 (다항 연산자)

형식 : σ<조건> (R) , R은 릴레이션을 의미

조건 : '<속성> = <상수값 또는 속성>'

결과 : 결과 릴레이션의 차수(속성 개수)는 대상 릴레이션과 동일, 카다날리티는 대상 릴레이션보다 작거나 같다.

2) 프로젝션

 : 릴레이션의 속성을 추출하기 위한 연산 (다항 연산자)

형식 : ∏<속성리스트> (R)

결과 : 결과 릴레이션의 차수는 속성리스트를 준 정도만큼, 카디날리티는 고객 릴레이션과 동일.

 

집합 연산

1) 합집합

 : 두 개의 릴레이션을 합하여 하나의 릴레이션을 반환

대상 : 두 개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 한다.

형식 : R ∪ S

결과 : 결과 릴레이션은 첫 번째 릴레이션의 속성 이름을 가짐

2) 교집합

 : 두 릴레이션이 공통으로 가지고 있는 투플을 반환

대상 : 합병 가능한 두 릴레이션

형식 : R ∩ S

결과 : 두 릴레이션에 있는 동일한 투플 반환

3) 차집합

 : 첫 번째 릴레이션에는 속하고 두 번째 릴레이션에는 속하지 않는 투플을 반환

대상 : 합병 가능한 두 릴레이션

형식 : R - S

결과 : 첫 번째 릴레이션에 속하면서 두 번째 릴레이션에 속하지 않는 투플 반환

4) 카티전 프로덕트 

 : 두 릴레이션을 연결시켜 하나로 합칠 때 사용 (수평적 연산)

대상 : 속성과 도메인이 동일할 필요는 없다.

형식 : R × S

결과 : 결과 릴레이션은 첫 번째 릴레이션의 오른쪽에 두 번째 릴레이션의 모든 투플을 순서대로 배열하여 반환

          결과 릴레이션의 차수는 두 릴레이션의 차수의 합, 카디날리티는 두 릴레이션의 카디날리티의 곱

if 두 릴레이션이 동일한 속성 이름을 가지고 있을 경우 결과 릴레이션의 속성 이름을 <릴레이션 이름>, <속성 이름>으로 표현하거나 순서(위치)를 사용하여 표현

- 일반적으로 결과에 의미가 없고 유용한 자료로 활용하기 어려움

- 셀렉션이나 프로젝션 연산을 조합하여 두 릴레이션의 관계에 따른 의미가 있는 결과를 찾으면 유용하게 쓰임

 

조인

: 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산

두 릴레이션을 카티전 프로덕트 연산을 거친 후 셀렉션 연산을 한 것으로 정의

대상 : 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성

결과 : 공통 속성의 속성 값이 동일한 투플만을 반환

 

1) 세타조인

 : 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 투플만 반환

형식 : R ⋈ (r 조건 s) S  , R과 S는 릴레이션이며 r은 R의 속성, s는 S의 속성

조건 : { =,≠,≦,≧,<,> } 중 하나

2) 동등조인

 : 세타조인에서 =연산자를 사용한 조인

형식 : R ⋈ (r=s) S

결과 : 결과 릴레이션의 차수는 첫 번째 릴레이션과 두 번째 릴레이션의 차수를 합한 것과 같으며 속성 이름은 두 릴레이션 속성 이름을 그대로 사용 (두 릴레이션 속성 이름이 같은 경우 첫 번째 릴레이션의 속성부터 시작하여 순서대로 나타냄)

3) 자연조인

 : 동등조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두 번째 속성을 제거한 결과를 반환

형식 : R N(r,s) S

결과 : 결과 차수는 (두 릴레이션의 차수의 합 -1)이다. 

4) 외부조인

 : 자연조인 시 조인에 실패한 투플을 모두 보여주되 값이 없는 대응 속성에는 NULL값을 채워서 반환

   모든 속성을 보여주는 기준 릴레이션의 위치에 따라 왼쪽 외부조인, 오른쪽 외부조인, 완전 외부 조인으로 나뉜다.

형식 : R ⟗ (r,s) S

5) 세미조인

 : 자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환

형식 : R ⋉ (r,s) S

결과 : 기호에서 닫힌 쪽 릴레이션의 투플만 반환

6) 디비전 

 : 릴레이션의 속성 값의 집합으로 연산을 수행 (특정 값들을 모두 갖고 있는 투플을 찾을 때 사용)

형식 : R ÷ S1 

결과 : 릴레이션 R과 릴레이션 S1에서 각각의 속성 값이 서로 동일하게 대응하는 릴레이션 R의 속성값 반환