
관계대수 개요
관계대수 vs 관계해석 vs SQL(이론적 기초)
관계대수의 성격(절차적 질의)
기본 연산자
선택(Selection, σ)
프로젝트(Projection, Π)
이름변경/중간 릴레이션 네이밍
집합 연산
합집합/교집합/차집합
합집합 호환성(union compatibility)
카테시안 프로덕트
곱(×) 개념 및 결과 크기
관계적 완전성
완전 집합 {σ, Π, ∪, −, ×}
“관계적으로 완전”의 의미
확장 연산
조인(Join)과 조인 조건
셀프 조인(Self join)
(확장 언급) division/집단함수/그룹화/외부조인 등
한계
산술연산/집단함수/정렬/갱신연산 부재
무조건 중복배제
관계대수
| 관계 해석 | 관계 대수 |
| 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는다 |
SQL 이론의 기초. 릴레이션에 대한 연산자를 사용한다. |
| 선언적 언어 | 선언적 언어 |

관계 대수는 릴레이션에 대한 연산자(관계 연산자)를 사용한다.
연산자의 종류로는 다음과 같은 것들이 있다
셀렉션, 프로젝션 합집합, 차집합, 카티션 곱은 필수 연산자로 완전연산자이다.


관계연산자
셀렉션(Selection)
표기방법: σc (R) :: σ조건문 (릴레이션 이름)
- r(R)에서 선택조건 c를 만족하는 튜플들을 선택한다.
- 결과 릴레이션은 R과 동일한 애트리뷰트들을 가진다.
- 행(Row)을 선택한다.
예시

1번은 q부서 번호(DNO)가 3번인 사원(EMPLOYEE)들의 정보를 모두 선택히리는 의미이다.2번이나 3번처럼 부등호나 OR, AND연산도 가능하다.
프로젝션(Projection)
표기방법:

:: L = 애트리뷰트의 리스트, R = 릴레이션의 이름
- r(R)에서 리스트 L에 표기된 특정 속성(애트리뷰트)만 추출한다.
- 결과 릴레이션에 중복이 있다면 삭제한다.
- 열(Column)을 선택한다.
예시

1번은 EMPLOYEE 중에 EMPNAME과 SALARY
연산 순서와 이름 변경
- 관계연산자에서는 다수의 연산을 결합할 수 있다.
예를들어

셀렉션과 프로젝션을 함께 사용할 수 있다.
- 각 중간 단계의 임시 릴레이션에 이름을 부여할 수 있다.

- 결과 릴레이션의 애트리뷰트 이름을 새롭게 변경할 수 있다

집합연산
조건: 스키마가 동일한 두 릴레이션에 대해서만 집합 연산이 가능하다.
- 이 조건을 합집합 호환성(union compatibility)라고 한다.
합집합( ∪ )과 차집합( - )을 이용할 수 있다

예시
EMPLOYEE(EMPNO, EMPNAME, TITLE, MANAGER, SALARY, DNO)
DEPARTMENT(DEPTNO, DEPTNAME, FLOOR)
이 두 릴레이션 스키마는 애트리뷰트의 수가 다르므로 합집합 호환이 되지 않는다.
그렇기에 애트리뷰트의 수를 맞춰줄 필요가 있다.


예를 들어 이 사진에서는 합집합을 위해 EMPLOYEE 릴레이션 스키마에 셀렉션과 프로젝션을 진행해서 DNO만을 받아왔다.
이후 DEPARTMENT 릴레이션에도 셀렉션, 스키마를 진행해 DEPTNO만을 가져온다.
이제 속성 수가 똑같으니 합집합을 진행한다.

교집합의 경우는 다음과 같다.
역시나 교집합을 위해서 속성수를 맞춰준 걸 볼 수 있다.

이번에는 차집합이다.
카테시안 프로덕트(Cartesian Product)
- 두 릴레이션의 모든 튜플 조합이다.
- 결과 크기 급증이 가능하다.
- 곱이라고 볼 수 있는데,
- 실무에서는 거의 단독으로 사용되지 않고 이후 설명할 조인(Join)의 출발점이다

이처럼 그 릴레이션의 크기가 커지게 된다
만약 R1에 n1개의 튜플이 있고, R2에 n2개의 튜플이 있다면 카테시안 프로덕트 후
생성되는 총 튜플의 개수는 n1*n2개 이다.
카테시안 프로덕트를 사용한 후에는 어떤 데이터가 나에게 필요한지를 찾아내야한다.

이 2가지 릴레이션을 곱하게 되면 아래와 같이 엄청나게 많은 튜플들이 생성된다.
여기서 우리는 맞는 값들을 찾아내야 한다.
예를들어 DNO와 DEPTNO는 서로 참조된다.
따라서 우리는 이를 셀렉션한다.

지금까지의 셀렉션, 프로젝션, 합집합, 차집합, 카티션 프로덕트 연산들을
관계 대수 연산자의 완전 집합(Complete Set)라고 부른다.
이 연산자 집합과 동등한 모든 질의 언어들은 관계적으로 완전하다(Relationally Complete)라고 정의한다.
조인(Join)
- 카테시안 프로덕트와 셀렉션의 조합이다.
- 서로 성격이 다른 여러 릴레이션의 연산이다.
- (합집합의 경우 성격이 비슷한 여러 릴레이션의 연산이었다)
- 릴레이션 분해 이후 데이터 재결합의 핵심 수단이다.
- 관련성의 여부를 조건으로 표시하는데 이를 조인 조건이라고 한다.

예시를 보자. 현재 DEPARTMENT의 MGRSSN과 EMPLOYEE의 SSN은
두 릴레이션에 공통으로 있으며,
셀프조인 또한 가능하다.
하나의 릴레이션에 대한 조인으로
“모든 EMPLOYEE의 이름과 그의 SUPERVISOR의 이름을 검색하라”
와 같은 질의에 사용한다.

관계 대수의 한계
관계 대수에는 한계가 있다.
- 산술 연산이 없다
- 집단 함수가 없다
- 정렬이 없다
- 갱신 연산이 없다
- 무조건적으로 중복을 배제한다
'개발' 카테고리의 다른 글
| [데이터베이스] SQL (1) | 2025.12.18 |
|---|---|
| [데이터베이스] 트렌젝션 (0) | 2025.12.17 |
| [데이터베이스] 정규화 (1) | 2025.12.16 |
| [데이터베이스] ER 모델에서 관계형 데이터 모델로의 변환 (1) | 2025.11.25 |
| [데이터베이스] ER 모델 (1) | 2025.11.25 |