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의 속성값 반환
'Computer > Database' 카테고리의 다른 글
# My SQL로 배우는 데이터베이스 개론과 실습 연습문제 2 # (0) | 2021.10.22 |
---|---|
# MySQL로 배우는 데이터베이스 개론과 실습 - 1장 연습문제 # (0) | 2021.10.22 |
03 관계 데이터 모델 (1) (0) | 2021.10.20 |
02 데이터베이스 시스템(2) (0) | 2021.10.19 |
01. 데이터베이스 시스템 (1) (0) | 2021.10.19 |