Stack Building
[05] 관계대수와 관계해석 본문
관계 데이터 모델에서 릴레이션을 조작하기 위한 연산에는 관계대수relational algebra와 관계해석relational calculus이 있다. 이 연산은 사용자 입장에서 볼 때 데이터를 처리하는 데이터 언어가 되는데, 이를 얼마나 자세하게 명시하느냐에 따라 절차언어procedural language와 비절차언어로 구분한다. 관계대수는 절차언어, 관계해석은 비절차언어로 구분할 수 있다.
1. 관계대수
"목표 데이터를 얻기 위해 어떻게 해야 하는가?"
각 연산의 피연산자operand가 모두 릴레이션이고, 결과도 릴레이션이다. 크게 일반집합연산인 합집합union, 교집합intersect, 차집합difference, 카티션 프로덕트cartesian product와 순수관계연산인 셀렉트select, 프로젝트project, 조인join, 디비전division이 있다.
이 중 합집합, 차집합, 카티션 프로덕트, 셀렉트, 프로젝트는 기본 연산, 나머지는 복합 연산이라고 부른다. 복합 연산은 기본 연산의 조합으로 대체 가능하다.
(1) 일반 집합 연산자
카티션 프로덕트를 제외하고는 피연산자로서의 릴레이션은 서로 합병 가능해야 한다. 합병가능union-compatible하다는 말의 의미는 두 릴레이션의 차수(애트리뷰트 수)가 같고 대응 애트리뷰트 별로 도메인이 같다는 것을 말한다. 합집합, 교집합, 차집합은 일반적인 수학 이론에서 다루는 것과 동일하다. 카티션 프로덕트는 릴레이션 RXS라고 표현할 때, R에 속한 각 투플 r에 대해 S에 속한 각 투플 s를 모두 접속시킨 투플 r-s로 구성된 릴레이션이다. 차집합을 제외한 세 연산은 결합적associative이며, 교환적commutative이다. 수학 이론의 결합 법칙과 교환 법칙이 성립한다는 의미다.
(2) 순수 관계 연산자
SELECT 연산은 σ(시그마)로 표현한다. 릴레이션에서 주어진 조건을 만족하는 투플들을 선택한다. σ에 표현된 조건식(또는 비교식, 프레디킷predicate)을 참으로 만드는 투플을 선택한다. 데이터 언어에서는 WHERE로 표현한다.
PROJECT 연산은 릴레이션의 애트리뷰트를 연산 대상으로 한다. 이는 π(파이)로 표현한다. 프로젝트 연산의 결과 릴레이션은 명세된 애트리뷰트 값만 선택하게 되어 릴레이션의 수직적 부분집합vertical subset으로 볼 수 있다.
JOIN 연산은 조인 조건을 만족하는 모든 투플 r과 s를 접속해서 만든다. 비교 연산자를 Θ로 표현하기 때문에 Θ로 표현될 수 있는 조인을 세타 조인이라고 한다. Θ가 =인 조인은 동일조인equijoin, 일반적으로 두 릴레이션을 결합했을 때 기대하는 대로 중복되는 애트리뷰트를 제거하도록 하는 조인을 자연조인natural join이라고 부른다.
DIVISION은 정수 나눗셈과 유사하다. 릴레이션 R(X)와 S(Y)에 대해 Y가 X의 부분집합이고 X-Y=D일 때, R(X)는 R(D,Y)로 표현할 수 있는데, R과 S의 디비전 연산 수행 결과는 R(D)가 된다.
개명 연산은 릴레이션을 참조하기 위해 이름을 붙이는 것이다. p(rho)로 표현한다.
2. 관계해석
"무슨 데이터를 원하는가?"
(1) 투플 관계 해석: 원하는 릴레이션을 투플 해석식으로 정의하는 표기법.
(2) 도메인 관계 해석: 투플 관계 해석과 기본 골격이 같고, 투플 변수 대신 도메인 변수를 사용.
3. 참고
데이터베이스론 (이석호 저)
'DB' 카테고리의 다른 글
[04] 관계 데이터베이스 (0) | 2019.08.06 |
---|---|
[03] 데이터베이스 시스템의 구성 (0) | 2019.08.02 |
[02] 데이터베이스 관리 시스템 (0) | 2019.07.19 |
[01] 정보 환경 (0) | 2019.07.16 |
OLAP과 OLTP (0) | 2019.03.16 |