관계대수(Relational Algebra)
'무엇을 어떻게 구할 것인가'를 기술하는
절차적(Procedural) 데이터 질의 언어임
- 관계형 데이터베이스에서 원하는 정보를 얻기 위해
어떤 연산을 어떤 순서로 수행할지를 기술하는 절차적 언어
- 연산의 피연산자와 결과가 모두 릴레이션
- 수학적 집합 이론(집합 연산) + 순수 관계 연산자로 구성
- 관계대수는 릴레이션을 입력으로 받아 새로운 릴레이션을 생성하는 절차적 질의 언어
순수 관계 연산자
- Select(σ)
- 조건을 만족하는 튜플(행) 선택
- 수평적 연산 (행 중심)
- Project(π)
- 특정 속성(열) 추출
- 수직적 연산 (열 중심)
- Join(⋈)
- 두 릴레이션을 공통 속성 기준으로 결합
- 내부적으로 교차곱 후 선택(σ) 수행한 것과 동일
- R ⋈ S = σ조건(R × S)
- Division(÷)
- 한 릴레이션에서 다른 릴레이션의 속성값을 모두 포함하는 튜플 선택
- 조건을 모두 만족하는 집합 추출
일반 집합 연산자
수학적 집합 이론을 데이터베이스에 적용한 연산들
합병 조건을 만족해야 함
→ 속성의 개수와 데이터 타입이 동일해야 함
- 합집합 (UNION)
- ∪
- 두 릴레이션의 모든 튜플 합집합
- 중복 제거
합집합
- 교집합(INTERSECTION)
- ∩
- 두 릴레이션의 공동 튜플
- R과 S에 모두 존재하는 튜플만 선택
교집합
차집합
교차곱
관계해석(Relational Calculus)
'무엇을 구할 것인가'를 기술하는
비절차적 질의 언어
- 관계 데이터 모델의 제안자 코드가 수학의 술어해석(Predicate Calculus) 개념을 기반으로 제안
- 관계대수와 달리, 어떤 절차로 구하는지 기술하지 않고, 무엇을 구할지만 정의
- 사용자가 원하는 정보를 논리식 형태로 기술
- 결과를 얻는 과정이 아니라, 원하는 데이터의 조건을 논리식으로 표현하는 비절차적 언어
관계대수 vs 관계해석
| 구분 |
관계대수 |
관계해석 |
| 정의 |
데이터를 어떻게 검색할지 기술 |
어떤 데이터를 검색할지 기술 |
| 언어 유형 |
절차적 언어 |
비절차적 언어 |
| 결과 형태 |
새로운 릴레이션 |
조건을 만족하는 데이터 |
| 기반 개념 |
집합 이론 |
술어 해석 |
| 결과물 |
새로운 릴레이션 생성 |
원하는 조건의 데이터 |