IT 프로그래밍/데이터베이스

[FT][데이터베이스] 관계 대수

기술1 2025. 3. 28. 21:30

관계 대수(Relational Algebra)

관계 대수는 릴레이션(Relation) 에 원하는 결과를 얻기 위해 수학적 연산을 수행하는 질의 언어입니다.
절차적 언어로, 하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션이 생성되는 과정을 확인하는 방법을 제공합니다.

  • SQL 언어: 관계 해석(Relational Calculus) 기반
  • DBMS 내부 연산: 관계 대수(Relational Algebra) 기반

집합 이론과 관계 대수

관계 대수는 집합 이론(Set Theory) 을 기반으로 연산을 정의합니다.

집합 연산

  1. 합집합 (∪): 두 릴레이션의 모든 튜플을 포함하는 연산
  2. 교집합 (∩): 두 릴레이션에서 공통으로 존재하는 튜플 반환
  3. 차집합 (-): 첫 번째 릴레이션에 속하고 두 번째에는 없는 튜플 반환
  4. 카티션 프로덕트 (×): 두 릴레이션의 튜플을 곱집합으로 생성 (모든 조합을 반환)

예제
집합 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): 두 개의 릴레이션에 적용 (예: 조인, 합집합, 차집합)

정리

관계 대수는 릴레이션(테이블)에 대해 연산을 수행하는 수학적 질의 언어입니다.

  • 릴레이션에서 행(튜플)을 선택하는 연산셀렉션(σ)
  • 릴레이션에서 열(속성)을 선택하는 연산프로젝션(π)
  • 두 릴레이션을 공통 속성 기준으로 결합조인(⨝)
  • 모든 속성을 포함하는 튜플 찾기디비전(÷)
  • 두 릴레이션의 모든 조합 반환카티션 프로덕트(×)