Computer Science/Database, SQL

[HUFS/데이터베이스] #6 관계 대수

성중 2021. 9. 22. 15:28

관계형데이터베이스는 비절차적 질의를 절차적 언어로 변환하는 작업을 수행한다

즉, DB가 실질적으로 다루는 언어는 절차적 언어인 것이다

관계 대수(Relational Algebra)

= 절차적 언어 <-> 비절차적 질의는 관계 해석(relational calculus)이라고 한다

* 두 방법은 표현과 기능면에서 동등하기 때문에 DB에 비절차적 질의를 사용한다

 

DB의 데이터인 Relation(tuple의 집합)이 관계 대수의 피연산자이며 다양한 연산이 가능하다

 

관계 대수의 연산자 / 일반 집합 연산자 & 순수 관계 연산자

일반 집한 연산자

카티션 프로덕트는 각 집합 모든 원소의 쌍을 만드는 것이다
relation의 집합은 결합적, 교환적이고 합집합은 두 집합의 차수(속성 개수)와 도메인이 같아야 한다!
relation 관련 기호 (tuple과 attribute)

순수 관계 연산자

SELECT 연산

SELECT 연산 예시 ~ σ(sigma)기호로 표현한다 / 조건에 맞는 tuple 검색

* 선택되는 tuple의 비율을 선택도(selectivity)라고 하는데 이 경우 3/5이니까 60%다

 

SELECT 연산 예시

PROJECT 연산

PROJECT 연산 예시 ~ π(파이) 기호로 표현한다 / 원하는 attribute를 고르는 수직적 부분집합

DIVISION 연산

DIVISION 연산 예시 ~ ÷ 기호로 표현한다 / 사실상 조건으로 찾는 연산

RENAME 연산

중간 처리 결과 relation이나 attribute의 이름을 적당히 변경하는 것을 개명(RENAME) 연산이라고 한다

 

개명 연산 기호

기본 연산과 복합 연산

기본 연산(primitive operations): 다른 연산으로 대체할 수 없는 논리적 기능을 수행하는 연산

복합 연산(composite operations): 기본 연산들로 대체할 수 있는 연산 (표현보다 연산중시)

 

복합 연산의 예시

조인(join)

거대한 relation은 보통 이상현상을 방지하기위해 연결고리를 기준으로 분리되어 있다

이러한 relation을 카티션 프로덕트 하고 연결고리의 공통 요소만 걸러낸 것을 동일 조인(equijoin)한다고 한다

 

학번을 매개로 한 동일 조인의 예시

동일 조인의 결과에서 연결고리인 중복 attribute를 제거한 것자연 조인(natural join)이다

 

중복되는 학번을 하나 삭제했다 / 가장 일반적인 조인이라고 할 수 있다

조인의 조건이 = 뿐만 아니라 <, > 등의 부등호가 오는 모든 조인을 세타 조인이라고 한다

 

relation S와 자연 조인이 가능한 R의 tuple의 집합을 세미 조인(semijoin)이라고 한다

 

세미 조인의 기호
세미 조인의 예시 / PROJECT 연산을 기준으로 자연 조인이 가능한 tuple 집합

relation에 대응되는 tuple 값이 없을 경우 null로 결과에 포함시키는 조인을 외부 조인(outerjoin)이라고 한다

 

외부 조인의 기호
누락되는 tuple도 표시해 정보 손실을 막는다

아예 합병이 불가능한 두 relation을 억지로 합쳐 null로 표현한 경우는 외부 합집합이다

 

외부 합집합 예시

관계 대수에 다양한 연산을 적용하는 집계(aggregation) 연산이 가능하다

 

관계 대수 예제

합집합과 차집합으로 삽입과 삭제가 가능하다