💡관계대수
관계대수(Relational Algebra)는 릴레이션에서 원하는 값을 얻기 위해 수학 연산을 이용해 질의하는 방법을 기술하는 언어이다.
관계대수는 수학 연산(+, -...)을 하는데, 피연산자가 테이블(릴레이션)이라는 점이 특징이다.
예를 들어서 A라는 테이블과 B라는 테이블이 있다고 할 때, 관계대수 연산을 이용하여 A테이블 + B테이블과 같이 더하는 작업을 할 수 있다.
💡관계대수 연산
관계대수 식에는 셀렉션, 프로젝션, 합집합, 교집합, 차집합, 카티션 프로덕션이 있다.
연산자 대상과 이름, 설명이 중요하며, 우리가 실제로 기호를 써가면서 표기할 일은 없다.
하나의 테이블을 가지고 연산을 하면 단항 연산, 두 개의 테이블을 가지고 연산을 하면 이항 연산이라고 부른다.
셀렉션과 프로젝션은 단항 연산을 하며, 합집합, 차집합, 조인, 카티션 프로덕션은 이항 연산을 한다.
A컬럼은 동일한 값을 가지지만, B와 C는 조금 다른 구조를 가지고 있는 두 개의 테이블이 있다.
이를 가지고 각종 관계대수 연산을 해보도록 하자.
셀렉션과 프로젝션
셀렉션
셀렉션과 프로젝션은 가장 기본적인 연산으로, 하나의 테이블을 가지고 단일 연산을 한다.
셀렉션은 레코드를 선택하는 연산을 한다.
σ 조건 (R)
σ 가격 <= 5000 (도서)
도서 테이블에서 가격이 5000원 이하인 도서만 찾아 추출할 수 있다.
조건이 여러 개라면 AND, OR, NOT 기호를 이용할 수 있다.
프로젝션
SQL에서 SELECT절에서 특정 속성(컬럼)을 추출할 때 컬럼 이름을 적었다.
프로젝션은 SELECT절과 유사하다.
Π 속성리스트 (R)
Π 이름, 주소, 핸드폰 (고객)
위 연산은 고객 테이블로부터 이름, 주소, 핸드폰 3개의 컬럼만 가져오라는 의미이다.
합집합
R ∪ S
합집합 연산을 하면 두 테이블의 중복된 값을 제외하고 합쳐진 테이블 출력한다.
두 개의 테이블을 하나로 합칠 때 사용한다.
교집합
R ∩ S
교집합 연산을 하면 두 테이블의 중복된 값만을 가진 테이블을 출력한다.
차집합
R - S
차집합 연산을 하면 두 테이블을 빼고 남은 결과를 테이블로 출력한다.
카티션 프로덕트
R × S
카티션 프로덕트는 두 개의 테이블을 곱하기 작업을 한다.
합집합은 세로로 합쳤다면, 카티션 프로덕트는 가로로 테이블을 합친다.