이번 포스팅은 데이터 모델링에 관한 기본적인 이해를 전제로 합니다. 데이터 모델링에 대해 알지 못하는 경우, 따로 공부를 하거나 "이 포스팅"을 참고한 후 이번 포스팅을 읽기 바랍니다.
관계 데이터 연산의 개념
관계 데이터 연산이란 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것이다. 대표적인 관계 데이터 연산으로는 "관계 대수"와 "관계 해석"이 있다. 그러나 관계 대수와 관계 해석은 상용화된 관계형 데이터베이스에서는 잘 사용되지 않는 개념적 언어이다. 그럼에도 이를 이해하고 공부하는 것이 상용화된 데이터 언어를 이해하는데 도움이 된다.
- 관계 대수(Relational Algebra): 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술한다. (절차 언어)
- 관계 해석(Relational Calculus): 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술한다. (비절차 언어)
관계 대수
원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 "관계 대수"에서는 피연산자가 릴레이션이다. 릴레이션들에 연산자를 적용하여 연산하고 그를 통해 도출한 결과 또한 릴레이션이다.
관계 대수에는 대표적인 연산자가 8개 있는데 특성에 따라 "일반 집합 연산자"와 "순수 관계 연산자"로 분류된다.
일반 집합 연산자
일반 집합 연산자들은 수학의 집합 관련 연산자들을 차용한 것으로, 릴레이션이 "튜플의 집합"임을 이용하여 연산한다. 연산자의 종류는 다음과 같다.
연산자 | 기호 | 표현 | 의미 |
합집합 | 릴레이션 R과 S의 합집합을 반환한다. | ||
교집합 | 릴레이션 R과 S의 교집합을 반환한다. | ||
차집합 | 릴레이션 R과 S의 차집합을 반환한다. | ||
카티션 프로덕트 | 릴레이션 R의 각 튜플과 릴레이션 S의 각 튜플을 모두 연결하여 만든 새로운 튜플을 반환한다. (곱집합 반환) |
이때 합집합, 교집합, 차집합은 피연산자인 2개의 릴레이션이 합병이 가능해야 한다.
- 두 릴레이션의 차수가 같아야 한다. (속성이 같아야 한다)
- 2개의 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 한다.
순수 관계 연산자
순수 관계 연산자는 릴레이션의 구조와 특성을 이용하는 연산자로, 릴레이션에 저장된 데이터를 다양하게 처리하는데 자주 사용한다. 연산자의 종류는 다음과 같다.
연산자 | 기호 | 표현 | 의미 |
셀렉트 | 릴레이션 R에서 조건을 만족하는 튜플들을 반환한다. | ||
프로젝트 | 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플들을 반환한다. | ||
조인 | 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결하여 만든 새로운 튜플들을 반환한다. | ||
디비전 | 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환한다. |
관계 해석
관계 해석은 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어이다. 데이터를 처리하는 기능과 처리를 요구하는 표현력에서 관계 대수와 관계 해석은 동일하다. 관계 해석의 특징은 다음과 같다.
- 수학의 프레디킷 해석에 기반을 둔다.
- 튜플 관계 해석과 도메인 관계 해석으로 분류한다.