6장: 관계 데이터 연산(Relational Data Operations) 완전 정리
데이터베이스에서 데이터를 추출, 결합, 필터링하는 작업은 매우 중요합니다. 이번 장에서는 관계 데이터 모델의 연산 방식인 관계대수와 관계해석의 개념을 배우고, 이를 이용해 데이터를 효율적으로 다루는 방법을 정리합니다.
1. 관계 데이터 연산이란?
관계 데이터 모델은 데이터 구조 + 연산 + 제약조건
으로 구성됩니다. 관계 데이터 연산은 릴레이션(테이블)에 **필요한 데이터를 요청하고 조작하는 방법**입니다. 이 연산이 잘 정의되어야 SQL 같은 데이터 언어가 효용을 가질 수 있습니다.
1. 관계대수(Relational Algebra) – 절차적(어떻게 처리할지 순서대로 기술) 2. 관계해석(Relational Calculus) – 비절차적(무엇을 원하는지만 기술)
2. 관계대수 – 절차적 연산
관계대수는 사용자가 데이터를 어떻게 추출/변환할지 절차적 방식으로 나타내는 언어입니다. 다음은 주요 연산자 8가지입니다:
- 셀렉트(σ): 조건에 맞는 투플 선택(예: σage > 30(Person))
- 프로젝트(π): 특정 속성(열)만 추출(예: πname, city(Person))
- 조인(⋈): 두 릴레이션을 키를 기준으로 결합 (내부, 외부, 자연, 세타, 세미 조인 등)
- 디비전(÷): “모든 A에 대해 B가 있는 투플”의 관계 계산
- 합집합(∪): 두 릴레이션의 행 합집합
- 차집합(−): 한 릴레이션에 없고 다른 릴레이션에만 있는 투플
- 교집합(∩): 두 릴레이션의 행 교집합
- 카티션 곱(×): 두 릴레이션의 가능한 모든 조합 생성
– 일반 집합 연산자 vs 순수 관계 연산자
일반 집합 연산자는 수학적 집합의 관점에서 투플의 집합만 다룹니다.
순수 관계 연산자는 릴레이션(속성 포함)의 구조를 고려하여 더욱 의미 있는 데이터 결합과 처리 방식을 제공합니다.
3. 조인(Join)의 종류 자세히 보기
- 세타 조인(θ-join): 조건(θ)을 기준으로 릴레이션 결합 (예: A.key = B.key)
- 동등 조인(= 조인): 세타 조인의 하나, 동일한 속성 값 활용
- 자연 조인(natural join): 중복 속성 자동 제거 후 결합
- 세미 조인(semi-join ⋉): 왼쪽 릴레이션의 투플 중 연결되는 부분만 반환
- 외부 조인(outer join):
- Left Outer Join: 왼쪽 릴레이션 중심, 오른쪽이 없으면 NULL 채움
- Right Outer Join: 반대 방향
- Full Outer Join: 양쪽 모두 NULL 가능
4. 디비전(Division) 연산
디비전 연산은 다음과 같은 조건을 만족하는 투플 집합을 반환합니다:
“릴레이션 A에서 속성 B집합의 모든 값을 가진 A의 투플”
실제 예: 학생(Student)과 과목(Subject), 수강(Student—Subject 테이블)이 있을 때, “모든 과목을 수강한 학생”을 찾는 것처럼 활용할 수 있습니다.
5. 관계해석(Relational Calculus)
관계해석은 사용자가 무엇을 원하는지 선언적으로 표현하는 방식입니다. 예: “Where age > 30인 사람의 이름을 모두 출력하세요.” 이는 SQL의 SELECT 이름 FROM Person WHERE age > 30;
처럼 기술됩니다.
6. 언제 절차적? 언제 비절차적?
관점 | 절차적 (관계대수) | 비절차적 (관계해석) |
---|---|---|
관심사 | 어떻게 처리할 건지, 순서 명시 | 무엇을 원하는지만 표현 |
예시 | σ, π, ⋈, ÷ 등 |
SELECT, WHERE 등의 조건 |
장점 | 최적화 가능성이 높음 | 사용하기 쉬움 |
✅ 핵심 정리
- 관계대수는 절차적 연산, 관계해석은 선언적(비절차적) 연산 방식입니다.
- 집합 연산자(∪, ∩, −)와 릴레이션 전용 연산자(σ, π, ⋈, ÷)의 차이를 이해해야 합니다.
- 조인과 디비전은 데이터를 결합하거나 조건에 해당하는 모든 투플을 찾는 데 매우 유용합니다.
다음 장에서는 SQL로 실제 데이터베이스 질의 작성을 해보고, 위 연산들이 실제 어떻게 사용되는지 다룹니다.
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] DB DML 기본 – INSERT & SELECT (0) | 2025.06.15 |
---|---|
[데이터베이스] DB DDL (데이터 정의어) 정리 (0) | 2025.06.15 |
[데이터베이스] DB 관계 데이터 모델(Relational Data Model) 완전 정리 (1) | 2025.06.15 |
[데이터베이스] DB 데이터 모델링 및 관계형 모델 (3) | 2025.06.14 |
[데이터베이스] DB 데이터베이스 시스템 이해와 구성 (0) | 2025.06.14 |