Chapter 6. 관계 데이터 연산
관계 데이터 연산
01 관계 데이터 연산의 개념
02 관계 대수
03 관계 해석
목표
▪ 관계 데이터 연산의 개념과 종류를 알아본다.
▪ 일반 집합 연산자와 순수 관계 연산자의 차이를 이해한다.
▪ 일반 집합 연산자와 순수 관계 연산자를 이용해 질의를 표현하는 방법을 익힌다.
▪ 관계 해석의 개념을 간단히 정리해본다.
01 관계 데이터 연산의 개념
◆ 데이터모델 = 데이터구조 + 연산 + 제약조건
◆ 관계 데이터 연산(relational data operation)
- 관계 데이터 모델의 연산
- 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
- 관계대수와 관계해석
◆ 관계대수와 관계해석의 역할
- 데이터 언어의 유용성을 검증하는 기준
- 관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어
-> 관계적으로 완전(relationally complete)하다고 판단
- query(질의) : 데이터에 대한 처리 요구
◆ 관계대수(relational algebra)의 개념
절차언어(procedural language)
원하는 결과를 얻기 위해 릴레이션의 처리과정을 순서대로 기술하는 언어
릴레이션을 처리한느 연산자들의 모임
대표연산자 8개
일반 집합연산자와 순수관계 연산자로 분류
폐쇄 특성(closure property)
피연산자도 릴레이션, 연산의 결과도 릴레이션
02 관계 대수
◆ 일반 집합 연산자의 특성
피연산자가 2개 필요, 2개의 릴레이션을 대상으로 연산수행
합집합, 교집합, 차집합은 피연산자인 두 릴레이션이 합병가능해야함.
합병가능조건
두 릴레이션의 차수가 같아야함
두 릴레이션에서 서로 대응되는 속성의 도메인이 같아야함
◆ 일반 집합 연산자- 합집합(union)
합병 가능한 두 릴레이션 R,S의 합집합 : R∪S
- 릴레이션 R에 속하거나 릴레이션 S에 속하는 모든 투플로 결과 릴레이션 구성
결과 릴레이션의 특성
차수는 R,S의 차수와 같음
카디널리티는 R,S의 카디널리xl를 더한것과 같거나 적어짐
교환과 결합의 특징이 있다.
• R∪S = S∪R
• (R∪S)∪T = R∪(S∪T)
◆ 일반 집합 연산자- 교집합(intersection)
합병 가능한 두 릴레이션 R,S의 교집합 : R∩S
- 릴레이션 R과 S에 공통으로 속하는 투플로 결과 릴레이션 구성
결과 릴레이션의 특성
차수는 R,S의 차수와 같음
카디널리티는 R,S의 어떤 카디널리티보다 크지 않음
교환과 결합의 특징이 있다.
• R∩S = S∩R
• (R∩S)∩T = R∩(S∩T)
◆ 일반 집합 연산자- 차집합(difference)
합병 가능한 두 릴레이션 R,S의 차집합 : R-S
- 릴레이션 R에는 존재하지만 릴레이션 S에는 존재하지 않는 투플로 결과 릴레이션 구성
결과 릴레이션의 특성
차수는 릴레이션 R과 S의 차수와 같음
R–S의 카디널리티는 릴레이션 R의 카디널리티와 같거나 적음
S–R의 카디널리티는 릴레이션 S의 카디널리티와 같거나 적음
교환과 결합의 특징이 없음
◆ 일반 집합 연산자- 카티션 프로덕트(cartesian product)
두 릴레이션 R과 S의 카티션 프로덕트 : RXS
- 릴레이션 R에 속한 각 투플과 릴레이션 S에 속한 각 투플을 모두 연결하여 만들어진 새로운 투플로 결과 릴레이션을 구성
결과 릴레이션의 특성
차수는 릴레이션 R과 S의 차수를 더한 것과 같음
카디널리티는 릴레이션 R과 S의 카디널리티를 곱한 것과 같음
교환과 결합의 특성이 있음
• RXS = SXR
• (RXS)XT = RX(SXT)
◆ 순수 관계 연산자(relational operation)
릴레이션의 구조와 특성을 이용하는 연산자
◆ 순수 관계 연산자 - 셀렉트(select)
릴레이션에서 조건을 만족하는 투플만 선택하여 결과 릴레이션을 구성
하나의 릴레이션을 대상으로 연산을 수행
수학적 표현 : σ조건식(릴레이션)
데이터 언어적 표현 : 릴레이션 where 조건식
조건식
비교식, 프레디킷(predicate)이라고도 함
속성과 상수의 비교나 속성들 간의 비교로 표현
비교 연산자(>, ≥, <, ≤, =, ≠)와 논리 연산자(∧, ∨, ¬)를 이용해 작성
◆ 순수 관계 연산자 - 프로젝트(project)
릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성
하나의 릴레이션을 대상으로 연산을 수행
수학적 표현 : 𝜋속성리스트(릴레이션)
데이터 언어적 표현 : 릴레이션[속성리스트]
◆ 순수 관계 연산자 - 조인(join)
조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성
조인 속성의 값이 같은 투플만 연결하여 생성된 투플을 결과 릴레이션에 포함
표현법 : 릴레이션1 ⋈ 릴레이션2
동등 조인(equi-join)이라고도 함
◆ 세타 조인(theta-join, 𝜽-join)
동등 조인에 비해 더 일반화된 조인
주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결하여 생성된 새로운 투플로 결과 릴레이션을 구성
결과 릴레이션의 차수는 두 릴레이션의 차수를 더한 것과 같음
표현법 : 릴레이션1 ⋈A𝜃B 릴레이션2
𝜽는 비교 연산자(>, ≥, <, ≤, =, ≠)를 의미
◆ 동등 조인(equi-join)
𝜽 연산자가 “=”인 세타 조인을 의미
표현법 : 릴레이션1 ⋈A=B 릴레이션2
예) 고객 ⋈고객.고객아이디=주문.고객아이디 주문
◆ 자연 조인(natural join)
동등 조인의 결과 릴레이션에서 조인 속성이 한 번만 나타나게 하는 연산
표현법 : 릴레이션1 ⋈N 릴레이션2
◆ 순수 관계 연산자 - 디비전(division)
표현법 : 릴레이션1 ÷ 릴레이션2
릴레이션2의 모든 투플과 관련이 있는 릴레이션1의 투플로 결과 릴레 이션을 구성
• 단, 릴레이션1이 릴레이션2의 모든 속성을 포함하고 있어야 연산이 가능함 (도메인이 같아야 함)
◆ 관계 대수를 이용한 쿼리 표현 예)
◆ 확장된 관계 대수 연산자
기본 연산자를 확장한 연산자들이 제안
예) 자연 조인 연산을 확장한 세미 조인과 외부 조인
◆ 확장된 관계 대수 연산자 – 세미 조인(semi-join)
조인 속성으로 프로젝트 연산을 수행한 릴레이션을 이용하는 조인
표현법 : 릴레이션1 ⋉ 릴레이션2
릴레이션2를 조인 속성으로 프로젝트 연산한 후, 릴레이션1에 자연 조인 하여 결과 릴레이션을 구성
불필요한 속성을 미리 제거하여 조인 연산 비용을 줄이는 장점이 있음
• R ⋉ S ≠ S ⋉ R
◆ 확장된 관계 대수 연산자 – 외부 조인(outer-join)
자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시키는 조인
결과 릴레이션에서 속성 값이 없는 경우는 널 값으로 처리
모든 투플을 결과 릴레이션으로 가져오는 릴레이션이 무엇이냐에 따라 분류(자연 조인 연산에서 제외되는 투플도 포함)
분류
- 왼쪽(left) 외부 조인
- 오른쪽(right) 외부 조인
- 완전(full) 외부 조인
왼쪽 외부 조인
왼쪽에 있는 릴레이션1에 존재하는 모든 투플을 결과 릴레이션에 포함시킴
오른쪽 외부 조인
오른쪽에 있는 릴레이션2에 존재하는 모든 투플을 결과 릴레이션에 포함시킴
완전 외부 조인
두 릴레이션에 있는 모든 투플을 결과 릴레이션에 포함시킴
◆ 예: 주문한 고객아이디는 모르는 새로운 주문 내역 투플이 주문 릴레이션에 추가된 상황
03 관계 해석
◆ 관계 해석(relational calculus)
- 처리를 원하는 데이터가 무엇인지만 기술하는 언어
- 비절차 언어(nonprocedural language)
- 수학의 프레디킷 해석(predicate calculus)에 기반을 두고 있음
- 기능과 표현력 측면에서 관계 대수와 동등한 능력을 가짐
분류
- 투플 관계 해석(tuple relational calculus)
- 도메인 관계 해석(domain relational calculus)