관계 대수(Relational Algebra)
관계 대수는 릴레이션(Relation) 에 원하는 결과를 얻기 위해 수학적 연산을 수행하는 질의 언어입니다.
절차적 언어로, 하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션이 생성되는 과정을 확인하는 방법을 제공합니다.
- SQL 언어: 관계 해석(Relational Calculus) 기반
- DBMS 내부 연산: 관계 대수(Relational Algebra) 기반
집합 이론과 관계 대수
관계 대수는 집합 이론(Set Theory) 을 기반으로 연산을 정의합니다.
집합 연산
- 합집합 (∪): 두 릴레이션의 모든 튜플을 포함하는 연산
- 교집합 (∩): 두 릴레이션에서 공통으로 존재하는 튜플 반환
- 차집합 (-): 첫 번째 릴레이션에 속하고 두 번째에는 없는 튜플 반환
- 카티션 프로덕트 (×): 두 릴레이션의 튜플을 곱집합으로 생성 (모든 조합을 반환)
예제
집합 A = {1,3,5}, B = {2,4}
카티션 프로덕트:
A×B={(1,2),(1,4),(3,2),(3,4),(5,2),(5,4)}A \times B = \{(1,2), (1,4), (3,2), (3,4), (5,2), (5,4)\}
관계 대수의 연산자
관계 대수의 연산자는 릴레이션(테이블)에 적용되는 연산 기호로 나뉩니다.
1. 순수 관계 연산 (관계 데이터 모델을 위한 연산)
- Selection (σ, 셀렉션): 특정 조건을 만족하는 튜플을 선택
- Projection (π, 프로젝션): 특정 속성(열)만 선택
- Join (⨝, 조인): 두 릴레이션을 공통 속성을 기준으로 결합
- Division (÷, 디비전): 특정 속성을 모두 포함하는 튜플 찾기
- Rename (ρ, 리네임): 릴레이션의 속성명을 변경
2. 집합 연산 (수학적 집합 이론 기반 연산)
- 합집합 (∪)
- 교집합 (∩)
- 차집합 (-)
- 카티션 프로덕트 (×)
세부 연산 설명
1. 셀렉션 (Selection, σ)
릴레이션에서 특정 조건을 만족하는 튜플(행) 을 선택하는 연산입니다.
- 카디널리티(튜플 개수): 원본 릴레이션보다 작거나 같음
- 차수(속성 개수): 변하지 않음
2. 프로젝션 (Projection, π)
릴레이션에서 특정 속성(열)만 선택하는 연산입니다.
- 카디널리티(튜플 개수): 변하지 않음
- 차수(속성 개수): 원본 릴레이션보다 작거나 같음
3. 조인 (Join, ⨝)
두 릴레이션의 공통 속성 을 기준으로 튜플을 수평적으로 결합하는 연산입니다.
- 카티션 프로덕트(×) 후 셀렉션(σ) 적용과 동일한 결과
- 공통 속성 값이 일치하는 튜플만 반환
4. 디비전 (Division, ÷)
특정 속성을 모두 포함하는 튜플을 찾을 때 사용하는 연산입니다.
- A ÷ B: A 릴레이션에서 B에 있는 모든 값을 포함하는 튜플을 반환
- 일반적으로 "어떤 사람이 모든 과목을 들었는가?" 같은 질의에 사용
예제
학생(Student) 테이블:학생ID과목
A X A Y B X B Y B Z 과목(Subjects) 테이블:
과목
X Y 연산
→ "모든 X, Y 과목을 수강한 학생"을 찾음
→ 결과: 학생 A
5. 카티션 프로덕트 (Cartesian Product, ×)
두 릴레이션의 모든 튜플을 조합하여 새로운 릴레이션을 생성하는 연산입니다.
- 속성 개수(차수): 두 릴레이션의 속성 개수 합
- 튜플 개수(카디널리티): 두 릴레이션의 튜플 개수 곱
예제:
AB
1 | 2 |
3 | 4 |
CD
5 | 6 |
7 | 8 |
카티션 프로덕트 결과
ABCD
1 | 2 | 5 | 6 |
1 | 2 | 7 | 8 |
3 | 4 | 5 | 6 |
3 | 4 | 7 | 8 |
연산자 개수에 따른 분류
- 단항 연산 (Unary Operators): 한 개의 릴레이션에 적용 (예: 셀렉션, 프로젝션)
- 이항 연산 (Binary Operators): 두 개의 릴레이션에 적용 (예: 조인, 합집합, 차집합)
정리
관계 대수는 릴레이션(테이블)에 대해 연산을 수행하는 수학적 질의 언어입니다.
- 릴레이션에서 행(튜플)을 선택하는 연산 → 셀렉션(σ)
- 릴레이션에서 열(속성)을 선택하는 연산 → 프로젝션(π)
- 두 릴레이션을 공통 속성 기준으로 결합 → 조인(⨝)
- 모든 속성을 포함하는 튜플 찾기 → 디비전(÷)
- 두 릴레이션의 모든 조합 반환 → 카티션 프로덕트(×)
'IT 프로그래밍 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 트랜잭션과 개념 (0) | 2025.03.30 |
---|---|
[데이터베이스] 시스템의 구성 (0) | 2025.03.20 |
[데이터베이스] 유형 및 특징 (0) | 2025.03.11 |
[데이터베이스] 데이터와 정보의 상관관계 (0) | 2025.03.11 |