개요
데이터베이스에서 쓰이는 연산자들을 정리한 문서이다.
연산자는 필수연산자와 편의를 위해 유도된 연산자로 나뉜다.
필수연산자
셀렉션, 프로젝션, 합집합, 차집합, 카티션 곱
편의를 위해 유도된 연산자
조인, 디비전
셀렉션
셀렉션 조건을 만족하는 튜플들의 집합을 생성한다.
입력 릴레이션을 하나 받는 단항 연산자이다.
결과 릴레이션의 차수는 입력 릴레이션의 차수와 같고, 결과 릴레이션의 카디널리티는 입력 릴레이션보다 작거나 같다.
조건을 만족하는 튜플이 없을 수도 있다. (카디널리티가 0이 될 수 있다.)
3번 부서에 소속된 사원(DNO=3)을 셀렉션하는 예시이다.
프로젝션
애트리뷰트의 부분 집합을 생성한다.
입력 릴레이션을 하나 받는 단항 연산자이다.
결과 릴레이션의 차수는 입력 릴레이션의 차수와 작거나 같고, 결과 릴레이션의 카디널리티는 입력 릴레이션의 카디널리티와 같다. (단, 차수는 0이 될 수 없다.)
중복되는 튜플이 존재할 수 있으며, 최종 결과는 중복이 제거된 튜플들로 구성된다.
직급 애트리뷰트만 추출하는 예시이다.
최종 결과에서는 중복이 제거된다.
집합연산자
합집합, 차집합, 교집합이 있다.
입력 릴레이션을 두 개 받는 이항연산자이다.
입력으로 사용되는 릴레이션은 합집합 호환이어야 한다.
합집합 호환
$R1(A1, A2, \cdots , An), R2(B1, B2, \cdots, Bm)$일 때,
$n = m$이고 $ 1 <= i <= n $에 대해 $domain(Ai) = domain(Bi)$여야 함.
합집합
R, S의 합집합 $R \cup U$는 R 또는 S에 있거나 R, S 모두에 속한 튜플들로 이루어진 집합이다.
결과 릴레이션의 중복된 튜플은 제거된다.
결과 릴레이션의 차수는 R, S의 차수와 같고 애트리뷰트 이름들 또한 R, S와 같다.
(김창섭이 속한 부서)와 (개발 부서)의 합집합이므로 각각을 먼저 구한다.
김창섭이 속한 부서의 부서번호(RESULT1)를 구하기 위해 위와 같은 연산을 한다.
개발 부서의 부서번호(RESULT2)를 구하기 위해 위와 같은 연산을 한다.
RESULT1과 RESULT2는 합집합 호환이므로 합집합 연산을 할 수 있다.
최종 결과 RESULT3을 중복을 제거해 생성한다.
차집합
R - S는 R에는 속하지만 S에는 속하지 않는 튜플들로 이루어진 집합이다.
결과 릴레이션의 차수는 R, S와 같고 애트리뷰트 이름도 R, S와 같다.
전체 부서의 부서 번호(REUSLT1)에서 소속 직원이 있는 부서의 부서 번호(RESULT2)를 뺀다.
RESULT1을 구하기 위해 위와 같은 연산을 실행한다.
소속 직원이 있는 부서의 부서 번호(RESULT2)를 구한다.
RESULT1과 RESULT2는 합집합 호환이므로 차집합 연산이 가능하다.
최종 결과 RESULT3을 생성한다.
교집합
R, S의 교집합 $R \cap S$는 R과 S에 모두 포함된 튜플들로 이루어진 집합이다.
결과 릴레이션의 차수는 R, S와 같고 애트리뷰트 이름도 R, S와 같다.
(김창섭 또는 최종철이 속한 부서의 부서번호)와 (기획 부서의 부서번호)의 교집합을 구한다.
김창섭 또는 최종철이 속한 부서의 부서번호(RESULT1)를 위와 같은 연산을 실행한다.
기획 부서의 부서번호(RESULT2)를 찾는다.
RESULT1과 RESULT2는 합집합 호환이므로 교집합 연산을 이용해 RESULT3을 구한다.
카티션 곱
R과 S의 튜플들의 모든 가능한 조합으로 이루어진다.
카티션 곱 연산자는 매우 크므로 실제 사용시에는 결과 릴레이션의 일부만 사용한다.
EMPNO(카디널리티 : 3)와 DEPTNO(카디널리티 : 2)의 카티션 곱 예시이다.
'CS > DB' 카테고리의 다른 글
[SQL] Table 생성 및 수정, 삭제 (0) | 2022.04.25 |
---|---|
[SQL] 내포된 SQL (0) | 2022.04.24 |
[DB] 무결성 제약 조건 (0) | 2022.03.18 |
[DB] 릴레이션 키 (1) | 2022.03.17 |
[DB] 트랜잭션 (0) | 2022.03.15 |