본문 바로가기
백엔드/SQL

관계형 데이터 모델과 관계대수(2)

by dustnn 2025. 4. 2.
Relational Algebra(관계 대수)

 

관계 대수는 한 개 또는 두 개 릴레이션을 피연산자로 하여 연산 결과로 새로운 릴레이션을 반환

 

 

<Relational Query Languages(관계 질의어)>
: 데이터베이스로부터 데이터를 조회하기 위한 언어

* Pure Query Language

: 데이터 조회만을 위한 언어(정의, 조작 지원x)

선언적 성격이 강한 SQL이 동일하게 동작하여 쿼리최적화할 수 있는 절차적 "관계 대수" 필요

(쿼리최적화의 핵심은 내부적으로 절차적인 관계 대수로 표현해두는 것)

 

관계 대수 기본 연산

 

1. Select

- select predicate에 비교 연산자 사용 가능

- 여러 조건을 걸어줄 때 논리 연산자로 연결 가능

- select predicate에서 두 속성의 값 비교 가능

 

<예제>

 

 

2. Project

 

"학번"이라는 속성이 기본키가 아니기 때문에 "학번" 컬럼만 빼고 project할 경우 중복값 발생 가능

 

<예제>

<예제>-Composition of Relational Operation(관계 연산 합성)

: 관계 대수의 피연산자도 릴레이션, 연산 결과도 릴레이션 관계 대수 표현의 합성 가능

 

3. Cartesian Product

<예제>

그럼 실제로 교수가 가르친 과목만 보여줄 수 있는 방법은? => "JOIN"

 

4. Join

 

cartesian 곱은 그냥 존재하는 모든 조합을 보여줌

=> 의미상 맞는 튜플만 고르기 위해, 조건을 주어 SELECT => "JOIN"

 

5. Union & Set-Intersection, Set Difference

 

<두 릴레이션 간 집합 연산 가능 조건>

각 릴레이션의 i번째 애트리뷰트끼리의 도메인이 호환되어야 하고(데이터 타입 같아야)

두 릴레이션의 애트리뷰트 수도 같아야

 

<예제>

 

 

8. Rename

Assignment는 거의 안 쓰므로 참고만 하자.

 

<Equivalent Queries: 쿼리 최적화의 핵심>-예제

: 성능 더 좋은 방법 고르기

'백엔드 > SQL' 카테고리의 다른 글

SQL을 활용한 데이터 정의와 조작  (0) 2025.04.04
관계대수 연습문제  (0) 2025.04.03
관계형 데이터 모델과 관계대수(1)  (0) 2025.03.30
데이터 언어 & 사용자  (0) 2025.03.29
SQL 첫걸음 3~4장  (0) 2025.03.29