관계 대수에 들어가기에 앞서, 관계 해석과 대수가 어떤 차이점을 가지고 있는지 알아보자.
관계 해석(relational calculus)이란 원하는 데이터만 명시하고 질의를 어떻게 수행할지는 명시하지 않는 선언적 언어이다. 그에 비해 관계 대수(relational algebra)는 어떻게 질의를 수행할지에 대해서도 명시하는 절차적 언어이며, SQL을 구현하고 최적화하기 위해 DBMS 내부 언어로도 사용되고 있다.
그렇다면 관계 대수에서의 연산자들에 대해 알아보자.
1. selection 연산자 : selection 조건(=predicate)을 만족하는 tuple들의 부분 집합
2. projection 연산자 : attribute list에 명시된 attribute만 가지는 attribute들의 부분 집합
3. 집합 연산자 : 합집합, 교집합, 차집합
4. 카티션 곱 연산자(R×S) : R과 S의 tuple들의 모든 가능한 조합으로 이루어짐
5. join 연산자 : 두 relation으로부터 연관된 tuple을 결합
- 세타 조인(theta join) : 카티션 곱에 조인 조건을 적용
- 동등 조인(equijoin) : 세타 조인 중 비교 연산자가 =
- 자연 조인(natural join) : 공통된 attribute에 대해 동등 조인 수행
- 외부 조인(outer join) : 하나의 relation에 대응되지 않는 값이 있는 경우 사용 (left / right / full outer join)
- 세미 조인(semijoin) : 한쪽 relation에만 있는 attribute 보여줌
6. division 연산자(R÷S) : S의 조건에 모두 속하는 tuple에 대해 R에도 존재하는 tuple의 집합 (모든 ...에 대해 ~하는)
1~4는 관계 대수의 필수적인 연산자로, 임의의 질의어가 위 대수 연산자들만큼의 표현력을 갖고 있으면 관계적으로 완전(relationally complete)하다고 말한다.
반응형
'COMPUTER SCIENCE > DATABASE' 카테고리의 다른 글
[SQL] 4. SQL (0) | 2019.04.25 |
---|---|
[SQL] 1. 데이터베이스 시스템 (0) | 2019.04.24 |
[SQL] 2. 관계 데이터 모델과 제약조건 (0) | 2019.03.30 |