데이터 모델은 구조(struct), 연산(operation), 제약조건(constraint)으로 구성된다.
연산이란 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리를 요구하는 것이다.
대표적인 관계 데이터 연산으로 관계 대수와 관계 해석이 있다.
관계 대수와 관계해석은 상용화된 데이터베이스에서는 잘 사용되지 않는 개념이다.
언어의 유용성을 검증하는데 검정의 기준 역할을 한다. 관계 대수와 관계 해석으로 기술할 수 있는 질의(query)를 해당 언어로 기술할 수 있으면 유용한 언어이다.
관계 대수는 원하는 겨로가를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어이다.
관계 대수 연산자는 특성에 따라 일반 집합 연산자(set operation)와 순수 관계 연산자(relational operation)으로 분류한다.
피연산자와 연산 결과 모두 릴레이션이다.
일반집합 연산자는 수학의 집합 관련 연산자를 차용하여 릴레이션을 투플의 집합으로 간주하고 연산을 수행한다.
두 집합이 합병 가능해야 한다.
R에 속하거나 S에 속하는 모든 투플로 결과 릴레이션을 구성한다.
R과 S에 공통으로 속하는 투플로 결과 릴레이션을 구성한다.
R에는 존재하지만 S에는 존재하지 않는 투플로 결과를 구성한다.
릴레이션 R에 속한 각 투플과 S에 속한 각 투플을 모두 연결하여 결과 릴레이션을 구성한다.
합병이 불가능한 경우에도 카티션 프로덕트 연산은 가능하다. (차수와 대응 도메인이 달라도 연산이 가능하다.)
교환적 특성, 결합적 특성이 성립한다.
릴레이션의 구조와 특성을 이용하는 연산자이다.
주어진 조건만 만족하는 투플만 선택하여 결과 릴레이션을 구성한다.
조건식은 비교 연산자(>, ≥, <, ≤, =, ≠)와 논리 연산자(∧, ∨, ¬)를 이용해 작성한다.
릴레이션의 수평적 부분집합을 생성하는 것과 같다.
릴레이션 where 조건식
고객 where 등급 = gold and 적립금>=2000
릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성한다.
릴레이션[속성1, ..., 속성n]
결과를 얻기 위해 여러 릴레이션을 함께 사용해야하는 경우 join
연산을 이용한다.
조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성한다.
릴레이션1 ⋈ 릴레이션2
주문 릴레이션의 외래키인 고객아이디
는 조인 속성이다.
고객아이디
값을 통해 주문 릴레이션과 고객 릴레이션 구성요소간 관계를 알 수 있다.
특정 고객이 주문한 제품 데이터가 필요한 경우 고객과 주문에 대한 데이터가 모두 필요하다. 때문에 조인 연산으로 결과 릴레이션을 구성한 후 조건에 맞는 투플을 찾는다.
일반적으로 조인은 자연조인을 의미한다.
릴레이션1 ⋈A𝜃B 릴레이션2
𝜽는 비교 연산자(>, ≥, <, ≤, =, ≠)를 의미
=
인 조인R÷S는 S의 모든 투플과 관련 있는 릴레이션 R의 투플로 결과 릴레이션을 구성한다.
릴레이션1 ÷ 릴레이션2
조인 연산의 확장 버전이다.
R ⋉ S
S 의 조인 속성으로만 구성한 릴레이션을 릴레이션 R에 자연조인 하는 것이다.
자연 조인 연산을 수행할 때 제외되는 투플을 결과 릴레이션에 포함시킨다.
두 피연산자 중 기준을 어디로 잡느냐에 따라 분류된다.
왼쪽에 있는 릴레이션의 모든 투플을 결과 릴레이션에 포함 시킨다.
오른쪽에 있는 릴레이션의 모든 투플을 결과 릴레이션에 포함 시킨다.
양쪽 릴레이션의 모든 투플을 결과 릴레이션에 포함시킨다.