728x90
< 목차 >
0. TL;DR
1. 관계대수
2. 관계연산
3. 집합연산
4. 조인
5. 디비전 (division)
0. TL;DR
- 관계대수: 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용해 질의하는 방법을 기술하는 것
- 관계연산
- 셀렉션: 릴레이션의 튜플을 추출하기 위한 연산
- 프로젝션: 릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자
- 집합연산: 합집합(∪), 교집합(∩), 카티션프로덕트(X)
- 합집합 (union): 2개의 테이블(릴레이션)을 합해서 하나의 테이블을 반환
- 교집합 (intersection): 2개의 테이블이 공통으로 가지고 있는 튜플을 반환
- 차집합 (set-difference): 첫 번째 릴레이션엔 속하고, 두 번째 릴레이션엔 속하지 않는 튜플 반환
- 카티션프로덕트 (cartesian product): 2개의 릴레이션을 연결해 하나의 릴레이션 반환 ⇒ 경우의 수만큼 데이터 발생
- 조인: 두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플을 수평으로 결합한 연산
- 디비전 (division): 릴레이션의 속성값의 집합으로 연산 수행
1. 관계대수
: 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용해 질의하는 방법을 기술하는 것
절차적 언어로, 하나 이상의 릴레이션에 연산을 수행해 결과 릴레이션이 나오기까지의 절차를 확인할 수 있는 방법을 제공한다. SQL 언어는 관계해석을 기반으로 하고, DBMS 내부에선 관계대수에 기반을 둔 연산을 수행한다.
관계의 수학적 의미
- 관계 데이터베이스는 릴레이션이라는 수학적 개념에 기초함
- 집합: 숫자, 문자, 사람 등 객체의 모임
- 도메인: 카티션프로덕트의 기초 집합 A, B, C 각각이 가질 수 있는 값의 범위
- 집합 A의 도메인: {1, 3, 5}
- 집합연산: 합집합(∪), 교집합(∩), 카티션프로덕트(X)
관계대수 연산자
수학에서 연산자(operator)란 ‘피연산자에 적용되는 연산기호’를 말한다.
e.g. 2 + 3에서 2와 3은 피연산자, +기호는 연산자, 결과는 5
관계대수 연산자는 2가지로 나눌 수 있다.
- 관계 데이터 모델을 위한 순수 관계 연산(relational operations): 셀렉션, 프로젝션, 조인, 디비전, 리네임
- 수학적 집합 이론에 차용된 일반 집합연산(set operations): 합집합, 교집합, 차집합, 카티션프로덕트
피연산 개수가 1개면 단항 연산자, 2개면 이항 연산자다.
2. 관계연산
(1) 셀렉션
: 릴레이션의 튜플을 추출하기 위한 연산
- 하나의 릴레이션을 대상으로 하는 단항 연산자 or 찾고자 하는 튜플의 조건을 명시하고, 조건에 만족하는 튜플을 반환함
- 결과 릴레이션의 차수: 대상 릴레이션과 동일하고, 카디널리티는 대상 릴레이션보다 작거나 같음
- 조건: <속성>=<상수값 or 속성> 형태
- Q<조건>(R)
- e.g. 부트캠프의 강의 목록 중, 데이터베이스인 강의를 검색하세요.
(2) 프로젝션
: 릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자
- 결과 릴레이션의 차수: 대상 릴레이션의 차수보다 작거나 같고, 카디널리티는 동일
- π<조건>(R)
- e.g. 카달로그를 발송하기 위한 주소록을 만드세요.
- π<이름, 주소, 전화번호>(고객)
3. 집합연산
(1) 합집합 (union)
: 2개의 테이블(릴레이션)을 합해서 하나의 테이블을 반환
- 수학의 합집합과 동일한 개념
- ∪ 기호 사용
- 2개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 함
- 반환되는 결과는 첫 번째 릴레이션의 속성명을 가짐
- R ∪ S로 표현
- e.g. 모든 매장에서 판매하는 상품의 목록을 추출하세요.
(2) 교집합 (intersection)
: 2개의 테이블이 공통으로 가지고 있는 튜플을 반환
- 수학의 교집합과 동일한 개념
- ∩ 기호 사용
- 2개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 함
- 반환되는 결과는 첫 번째 릴레이션의 속성명을 가짐
- R ∩ S로 표현
- e.g. 두 매장에서 동일하게 보유 중인 상품 목록을 추출하세요.
(3) 차집합 (set-difference)
: 첫 번째 릴레이션엔 속하고, 두 번째 릴레이션엔 속하지 않는 튜플 반환
- - 기호 사용
- 2개의 릴레이션은 서로 같은 속성과 도메인을 가져야 함
- 반환되는 결과는 첫 번째로 릴레이션의 속성명을 가짐
- R - S로 표현
- e.g. 두 매장 중 A 매장에서만 보유하고 있는 상품을 추출하세요.
(4) 카티션프로덕트 (cartesian product)
: 2개의 릴레이션을 연결해 하나의 릴레이션 반환 ⇒ 경우의 수만큼 데이터 발생
- 수학의 곱집합과 동일한 개념
- X 기호 사용
- 반환되는 결과는 첫 번째 릴레이션 오른쪽에 두 번째 릴레이션의 모든 튜플을 순서대로 배열
- 2개의 릴레이션은 서로 같은 속성 순서와 도메인일 필요 없음
- 결과 릴레이션의 차수는 두 릴레이션 차수의 합이고, 카디널리티는 두 릴레이션의 카디널리티의 곱
- e.g. 첫 번째 릴레이션의 차수 4, 카디널리티 3, 두 번째 릴레이션의 차수 5, 카디널리티 4일 때
- 결과 차수는 9(4+5), 카디널리티는 12(3*4)
- 결과 릴레이션은 9개의 속성과 12개의 튜플을 가짐
- e.g. 첫 번째 릴레이션의 차수 4, 카디널리티 3, 두 번째 릴레이션의 차수 5, 카디널리티 4일 때
- R X S로 표현
4. 조인
: 두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플을 수평으로 결합한 연산
수평으로 확장이 되고, 동일한 값을 조회할 때 사용한다.
- 두 릴레이션을 카티션 프로덕트로 연산 → 셀렉션 연산을 한 것과 동일한 정의임 (셀렉션의 <조건>은 속성값이 같은지 비교)
- ⋈ 기호 사용
- 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성돼 있어야 함
- 조인 연산의 결과는 공통 속성의 속성값이 동일한 튜플만 반환
- 조인 연산
- 기본 조인 연산: 두 릴레이션 간의 속성값 비교 (세타 조인, 동등 조인, 자연 조인)
- 확장된 조인 연산: 두 릴레이션을 조인한 후, 한 릴레이션의 튜플만 반환 (세미 조인, 외부 조인)
5. 디비전 (division)
: 릴레이션의 속성값의 집합으로 연산 수행
- 특정 값들을 모두 갖고 있는 튜플을 찾을 때 사용
- 실제 자주 사용되진 않음
- 조인 연산의 조합으로 같은 디비전 연산을 수행
728x90
'CS (Computer Science)' 카테고리의 다른 글
[개발 공부 102일차] DB 개론 | 데이터베이스 보안과 권한 관리 (0) | 2024.09.24 |
---|---|
[개발 공부 101일차] DB 개론 | 트랜잭션과 동시성 (0) | 2024.09.23 |
[개발 공부 99일차] DB 개론 | 관계형 데이터 모델 (25) | 2024.09.21 |
[개발 공부 97일차] DB 개론 | 데이터베이스의 유형 및 특징 (5) | 2024.09.08 |
[개발 공부 96일차] DB 개론 | 데이터베이스 및 관리 시스템 (6) | 2024.09.06 |