반응형
SMALL
📁 데이터 입출력 구현 ⑥ – 관계대수 완전 정리 (기본 연산 + 집합 연산 + 예시)
SQL을 배울 때 가장 헷갈리는 것 중 하나는 왜 이렇게 쓰는가?입니다.
그 근본 개념이 바로 관계대수(Relational Algebra)입니다.
관계대수는 관계형 데이터베이스의 수학적 기반 이론으로,
우리가 사용하는 SQL의 설계 논리를 이해하는 데 핵심적인 역할을 합니다.
이번 포스트에서는
✅ 순수 관계 연산자
✅ 집합 연산자
를 정의와 예시 중심으로 한눈에 정리해드립니다.
1. 관계대수란?
관계형 데이터베이스에서 데이터를 조회, 조작하기 위해 사용하는 절차적 질의 언어
→ “어떤 순서로 데이터를 어떻게 가져올지”를 명시함
2. 순수 관계 연산자 (Basic Operators)
연산 | 기호 | 설명 |
---|---|---|
SELECT | σ | 조건을 만족하는 튜플(행) 추출 → 수평 연산 |
PROJECT | π | 특정 속성(열)만 추출 → 수직 연산 |
RENAME | ρ | 릴레이션 이름 또는 속성명을 변경 |
JOIN | ⨝ | 공통 속성을 기준으로 두 릴레이션을 연결 |
DIVISION | ÷ | 모든 조건을 만족하는 튜플만 추출 |
🧪 SELECT (σ)
정의: 조건을 만족하는 튜플(행)만 추출하는 연산
예시: 이름이 '홍길동'인 고객 조회
σ name = '홍길동' (Customer)
🧪 PROJECT (π)
정의: 특정 속성(열)만 추출하여 새로운 릴레이션 생성
예시: 도서 테이블에서 제목만 출력
π title (Book)
🧪 JOIN (⨝)
정의: 공통 속성을 기준으로 두 릴레이션을 결합
예시: 고객과 주문을 customer_id 기준으로 연결
Customer ⨝ Customer.customer_id = Order.customer_id Order
🧪 DIVISION (÷)
정의: 특정 조건을 모두 만족하는 튜플만 추출하는 연산
예시: 모든 과목(DB, OS)을 수강한 학생 찾기
Student_Subject ÷ Subject
결과: Alice, Charlie (두 과목 모두 수강한 학생)
3. 집합 연산자 (Set Operations)
연산 | 기호 | 설명 |
---|---|---|
합집합 | ∪ | R 또는 S에 존재하는 모든 튜플 (중복 제거) |
교집합 | ∩ | R과 S 모두에 존재하는 튜플 |
차집합 | − | R에는 있고, S에는 없는 튜플 |
교차곱 | × | 모든 가능한 튜플 조합 (JOIN의 기반) |
✅ 예시 릴레이션
Rid | name |
---|---|
1 | 철수 |
2 | 영희 |
3 | 민수 |
id | name |
---|---|
2 | 영희 |
3 | 민수 |
4 | 수지 |
📌 3.1 합집합 (R ∪ S)
1 철수
2 영희
3 민수
4 수지
📌 3.2 교집합 (R ∩ S)
2 영희
3 민수
📌 3.3 차집합 (R − S)
1 철수
📌 3.4 교차곱 (R × S)
결과: R 튜플 수 × S 튜플 수 = 3 × 3 = 9개 튜플
디그리: R의 열 수 + S의 열 수
R.id | R.name | S.id | S.name |
---|---|---|---|
1 | 철수 | 2 | 영희 |
1 | 철수 | 3 | 민수 |
1 | 철수 | 4 | 수지 |
2 | 영희 | 2 | 영희 |
2 | 영희 | 3 | 민수 |
2 | 영희 | 4 | 수지 |
3 | 민수 | 2 | 영희 |
3 | 민수 | 3 | 민수 |
3 | 민수 | 4 | 수지 |
4. 관계대수와 SQL 비교표
관계대수 연산 | SQL 구문 대응 |
---|---|
SELECT (σ) | WHERE |
PROJECT (π) | SELECT |
JOIN (⨝) | JOIN ON |
UNION (∪) | UNION |
INTERSECT (∩) | INTERSECT |
DIFFERENCE (−) | EXCEPT / MINUS |
DIVISION (÷) | GROUP BY + HAVING 등으로 표현 |
✅ 마무리 요약
- SELECT(σ): 조건으로 행 추출
- PROJECT(π): 열만 추출
- JOIN(⨝): 공통 속성으로 결합
- DIVISION(÷): 모든 조건을 만족하는 대상 추출
- 집합 연산자(∪, ∩, −, ×): 튜플 간 집합 연산
→ 관계대수는 SQL의 이론적 기초이며, 쿼리 설계와 최적화의 핵심입니다.
반응형
LIST
'정보처리기사 > 2장 데이터 입출력 구현' 카테고리의 다른 글
관계 이상(Anomaly) (0) | 2025.04.12 |
---|---|
관계해석 정리 (0) | 2025.04.12 |
무결성과 제약조건 완전 정리 (0) | 2025.04.12 |
키(Key)의 종류와 특징 완전 정리 (0) | 2025.04.12 |
릴레이션 모델의 구성 요소 완전 정복 (0) | 2025.04.12 |