728x90
관계 대수는 관계형 데이터베이스에서 데이터를 검색하는 방법을 정의하는 이론적 연산 체계입니다. 관계 대수에는 여러 가지 연산이 있으며, 이 연산들은 기본적으로 릴레이션(테이블)들을 다루고 처리합니다. 주요 관계 대수 연산은 순수 관계 연산자와 일반 집합 연산자로 나뉩니다.
1. 순수 관계 연산자
(1) 선택(σ, Selection)
- 목적: 릴레이션에서 특정 조건을 만족하는 튜플(행)을 반환합니다.
- 표기법: σ 조건 (R)
- 설명: 주어진 조건을 만족하는 튜플만 선택하여 반환하는 연산입니다.
- 예시: σ 학과 = '컴퓨터공학' (학생)
- '학생' 릴레이션에서 컴퓨터공학 학과인 학생들만 반환합니다.
(2) 투사(π, Projection)
- 목적: 릴레이션에서 특정 속성(열)만을 선택하여 반환합니다.
- 표기법: π 속성 리스트 (R)
- 설명: 주어진 속성(열)들만 선택하여 중복을 제거한 결과를 반환합니다.
- 예시: π 이름, 학과 (학생)
- '학생' 릴레이션에서 이름과 학과 열만 선택하여 반환합니다.
(3) 조인(⨝, Join)
- 목적: 두 릴레이션을 결합하여 새로운 릴레이션을 만듭니다.
- 표기법: R ⨝ 조건 S
- 설명: 두 릴레이션에서 공통 속성(키)을 기준으로 조건을 만족하는 튜플들을 결합하여 반환합니다.
- 예시: 학생 ⨝ 학생.학과 = 교수.학과 교수
- 학생 릴레이션과 교수 릴레이션을 학과 속성을 기준으로 결합합니다.
(4) 세타 조인(θ-Join)
- 목적: 두 릴레이션에서 주어진 조건에 맞는 튜플들을 결합하는 연산입니다.
- 표기법: R ⨝_θ S
- 설명: 두 릴레이션의 속성 중 주어진 조건(θ)을 만족하는 튜플들만 결합하여 반환합니다.
- 예시: 학생 ⨝ 학생.학번 < 교수.학번 교수
- 학생과 교수 릴레이션을 학번의 조건에 따라 결합합니다.
(5) 디비전(÷, Division)
- 목적: 특정 속성 값을 공유하는 튜플들을 반환하는 연산입니다.
- 표기법: R ÷ S
- 설명: B 릴레이션에 있는 조건을 모두 만족하는 A 릴레이션의 튜플을 반환합니다.
- 예시: 수강 ÷ 과목
- 수강 릴레이션에서 특정 과목을 모두 수강한 학생들을 반환합니다.
2. 일반 집합 연산자
(1) 합집합(∪, Union)
- 목적: 두 릴레이션의 모든 튜플을 합친 결과를 반환합니다.
- 표기법: R ∪ S
- 설명: 두 릴레이션에 속하는 튜플을 모두 반환하되, 중복되는 튜플은 한 번만 반환합니다.
- 예시: 학생 ∪ 졸업생
- 학생과 졸업생 릴레이션에 있는 모든 학생을 반환합니다.
(2) 차집합(−, Difference)
- 목적: 첫 번째 릴레이션에만 있는 튜플을 반환합니다.
- 표기법: R − S
- 설명: R에 속하지만 S에 속하지 않는 튜플을 반환합니다.
- 예시: 학생 − 졸업생
- 학생 릴레이션에 있지만 졸업생 릴레이션에 없는 학생을 반환합니다.
(3) 교집합(∩, Intersection)
- 목적: 두 릴레이션에 공통으로 있는 튜플을 반환합니다.
- 표기법: R ∩ S
- 설명: R과 S에 모두 속하는 튜플을 반환합니다.
- 예시: 학생 ∩ 졸업생
- 학생 릴레이션과 졸업생 릴레이션에 모두 속하는 학생을 반환합니다.
(4) 카티션 곱(×, Cartesian Product)
- 목적: 두 릴레이션의 모든 튜플을 서로 결합하여 반환합니다.
- 표기법: R × S
- 설명: R의 각 튜플과 S의 각 튜플을 모두 결합한 결과를 반환합니다.
- 예시: 학생 × 교수
- 학생 릴레이션과 교수 릴레이션의 모든 튜플을 결합한 결과를 반환합니다.
이러한 관계 대수 연산자들은 관계형 데이터베이스에서 데이터를 조작하고 검색하는 데 중요한 역할을 합니다. SELECT, WHERE, JOIN, GROUP BY와 같은 SQL 구문도 이 관계 대수 개념에 기반을 두고 있습니다.
Select | σ | 특정 조건을 만족하는 튜플(행)을 선택 | σ age > 30 (Employees) |
Project | Π | 특정 속성(열)만 선택 | Π name, age (Employees) |
Join | ⋈ | 두 테이블을 공통 속성을 기준으로 결합 | Employees ⋈ Departments |
Division | ÷ | 테이블의 나눗셈 연산 | R ÷ S |
Union | ∪ | 두 테이블의 합집합 | Π name (Customers) ∪ Π name (Employees) |
Intersection | ∩ | 두 테이블의 교집합 | Π name (Customers) ∩ Π name (Employees) |
Difference | - | 두 테이블 간의 차집합 | Π name (Customers) - Π name (Employees) |
Cartesian Product | × | 두 테이블의 모든 튜플 조합 | Employees × Departments |
관계 대수의 특징
- 절차적 언어: 관계 대수는 데이터를 검색하는 절차적 방법을 제공합니다. 즉, 어떤 순서로 데이터를 조작해야 하는지 명확히 정의합니다.
- 집합 연산 기반: 관계 대수는 집합 이론에 기초하고 있으며, 테이블을 집합으로 보고 연산을 수행합니다.
- 기본 데이터 조작: 관계 대수의 연산은 관계형 데이터베이스의 데이터를 검색하고 조작하는 기본 연산으로, SQL의 이론적 기반이 됩니다.
관계 대수는 데이터베이스에서 데이터를 효율적으로 처리하기 위한 수학적 연산 집합입니다. 각 연산은 특정 목적을 위해 사용되며, 테이블 간의 데이터를 결합, 선택, 투영, 또는 나누는 작업을 통해 원하는 데이터를 추출하고 처리할 수 있습니다.
728x90
'Category > 정보처리기사' 카테고리의 다른 글
암호화 알고리즘 정리 (9) | 2024.10.09 |
---|---|
스텁(Stub)과 드라이버(Driver)란? (1) | 2024.10.09 |
참조 무결성(Referential Integrity)이란? (1) | 2024.10.09 |
소프트웨어 테스트 기법 정리 (1) | 2024.10.09 |
Equivalence Partitioning (동등 분할 기법)이란? (1) | 2024.10.09 |