반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

관계 데이터 연산 본문

학교/데이터베이스

관계 데이터 연산

5_hyun 2021. 9. 27. 19:33

  • 관계 데이터 연산의 개념

-데이터 모델 = 데이터 구조 + 연산 + 제약조건

제약조건
1. 개체무결성
2. 참조 무결성
3. 도메인 무결성(타입을 맞춰야한다. 나이 속성에 이름 못집어 넣음)

 

-관계 데이터 연산(relational data operation)

관계 데이터 모델의 연산

원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것

관계 대수와 관계 해석이 있음(기능과 표현력 측면에서 능력이 동등함)

 

-관계 대수와 관계 해석의 역할

데이터 언어의 유용성을 검증하는 기준

관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어를 관계적으로 완전(relationally complete)하다고 판단함, 질의(query): 데이터에 대한 처리 요구

 

  • 관계 대수

-관계 대수(relational algebra)의 개념

1. 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어

절차 언어(procedural language)

2. 릴레이션을 처리하는 연산자들의 모임

대표 연산자 8개, 일반 집합 연산자와 순수 관계 연산자로 분류됨

3. 폐쇄 특성(closure property)이 존재함

피연산자도 릴레이션이고 연산의 결과도 릴레이션임

 

-관계 대수의 연산자

 

-일반 집합 연산자(set operation)

릴레이션이 투플의 집합이라는 개념을 이용하는 연산자

 

-일반 집합 연산자의 특성

1. 피연산자가 2개 필요함

2개의 릴레이션을 대상으로 연산을 수행

 

2. 합집합, 교집합, 차집합은 피연산자인 두 릴레이션이 합병 가능해야 함

합병 가능(union-compatible) 조건

1) 두 릴레이션의 차수가 같아야 함

2) 두 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 함

 

합병이 불가능한 예
합병이 가능한 예

 

-일반 집합 연산자 - 합집합(union)

1. 합병 가능한 두 릴레이션 R과 S의 합집합: R∪S

릴레이션 R에 속하거나 릴레이션 S에 속하는 모든 투플로 결과 릴레이션 구성

2. 결과 릴레이션의 특성

차수는 릴레이션 R과 S의 차수와 같음

카디널리티는 릴레이션 R과 S의 카디널리티를 더한 것과 같거나 적어짐

3. 교환적 특징이 있음

R∪S = S∪R

4. 결합적 특징이 있음

(R∪S)∪T = R∪(S∪T)

 

합집합 연산의 예

 

-일반 집합 연산자 - 교집합(intersection)

1. 합병 가능한 두 릴레이션 R과 S의 교집합: R∩S

릴레이션 R과 S에 공통으로 속하는 투플로 결과 릴레이션 구성

2. 결과 릴레이션의 특성

차수는 릴레이션 R과 S의 차수와 같음

카디널리티는 릴레이션 R과 S의 어떤 카디널리티보다 크지 않음

3. 교환적 특징이 있음

R∩S = S∩R

4. 결합적 특징이 있음

(R∩S)∩T = R∩(S∩T)

 

교집합 연산의 예

 

-일반 집합 연산자 - 차집합(difference)

1. 합병 가능한 두 릴레이션 R과 S의 차집합: R-S

릴레이션 R에는 존재하지만 릴레이션 S에는 존재하지 않는 투플로 결과 릴레이션 구성

2. 결과 릴레이션의 특성

차수는 릴레이션 R과 S의 차수와 같음

R-S의 카디널리티는 릴레이션 R의 카디널리티와 같거나 적음

S-R의 카디널리티는 릴레이션 S의 카디널리티와 같거나 적음

3. 교환적, 결합적 특징이 없음

 

차집합 연산의 예

 

-일반 집합 연산자 - 카티션 프로덕트(cartesian product)

1. 두 릴레이션 R과 S의 카티션 프로덕트: R X S

릴레이션 R에 속한 각 투플과 릴레이션 S에 속한 각 투플을 모두 연결하여 만들어진 새로운 투플로 결과 릴레이션을 구성

2. 결과 릴레이션의 특성

차수는 릴레이션 R과 S의 차수를 더한 것과 같음

카디널리티는 릴레이션 R과 S의 카디널리티를 곱한 것과 같음

3. 교환적 특징이 있음

R X S = S X R

4. 결합적 특징이 있음

(R X S) X T = R X (S X T)

 

카티션 프로덕트 연산의 예

 

-순수 관계 연산자(relational operation)

릴레이션의 구조와 특성을 이용하는 연산자

 

-순수 관계 연산자 - 셀렉트(select)

1. 릴레이션에서 조건을 만족하는 투플만 선택하여 결과 릴레이션을 구성

2. 하나의 릴레이션을 대상으로 연산을 수행

3. 수학적 표현법: σ조건식(릴레이션)

4. 데이터 언어적 표현법: 릴레이션 where 조건식

5. 조건식

비교식, 프레디킷(predicate)이라고도 함속성과 상수의 비교나 속성들 간의 비교로 표현

비교 연산자(>, ≥, <, ≤, =, ≠)와 논리 연산자(, , ¬)를 이용해 작성

 

예제1) 고객 릴레이션에서 등급이 gold인 투플을 검색하시오.

=> σ등급='gold'고객 or 고객 where 등급='gold'

 

결과

 

예제2) 고객 릴레이션에서 등급이 gold이고, 적립금이 2000 이상인 투플을 검색하시오.

=> σ등급='gold'^적립금2000(고객) or 고객 where 등급='gold' and 적립금 2000

 

결과

=> 결과 릴레이션은 연산 대상 릴레이션의 수평적 부분집합

 

-교환적 특징이 있음

σ조건식1(σ조건식2(릴레이션)) = σ조건식2(σ조건식1(릴레이션)) = σ조건식1^조건식2(릴레이션)

ex) σ적립금≥2000(σ등급='gold'(고객)) = σ등급='gold'(σ적립금≥2000(고객)) = σ적립금≥2000^σ등급='gold'(고객)

 

-순수 관계 연산자 - 프로젝트(project)

1. 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성2. 하나의 릴레이션을 대상으로 연산을 수행

3. 수학적 표현법: π속성리스트(릴레이션)

4. 데이터 언어적 표현법: 릴레이션[속성리스트]

 

예제1) 고객 릴레이션에서 고객이름, 등급, 적립금을 검색하시오.

=> π고객이름, 등급, 적림금(고객) or 고객[고객이름, 등급, 적립금]

 

결과

 

예제2) 고객 릴레이션에서 등급을 검색하시오.

=> π등급(고객) or 고객[등급]

 

결과

=>  결과 릴레이션에서 동일한 투플은 중복되지 않고 한 번만 나타남

 

=> 결과 릴레이션은 연산 대상 릴레이션의 수직적 부분집합

 

-순수 관계 연산자 - 조인(join)

1. 조인 속성을 이용해 두 릴레이션을 조합하여 결과 릴레이션을 구성

조인 속성의 값이 같은 투플만 연결하여 생성된 투플을 결과 릴레이션에 포함

조인 속성: 두 릴레이션이 공통으로 가지고 있는 속성

2. 표현법: 릴레이션1 ⋈ 릴레이션2

3. 자연 조인(natural join)이라고도 함

표현법: 릴레이션1 N 릴레이션2

중복된 속성이 제거됨

4. 세타 조인(=동등 조인)

중복된 속성이 카티션 프로덕트처럼 만들어진거

 

=> 자연(중복 제거) <-> 세타, 동등(중복 허용)

자연 조인은 중복을 제외하고 동등 조인과 같다.

동등 조인은 = 을 사용, 나머지 =을 제외한 부등호는 세타 조인, 동등(=)이면서 중복 허용을 하지 않으면 자연 조인

두 R과 S는 외래키가 있어야한다.

 

고객 릴레이션이 R, 주문 릴레이션이 S라 하면 R의 키는 고객아이디이고 S의 키는 주문번호이며, S의 주문고객은 R의 기본키여서 외래키이다. 

=>고객⋈주문

 

-결과

자연조인으로 만들어진 것이다. 중복제거하고 주문고객이랑 같은 것을 찾았기때문

select 고객ID, 고객 이름, 나이, 등급, 주문번호, 주문제품, 수량 from 고객, 주문

where 고객 ID=주문고객

 

만약 주문고객을 더 추가하면 동등 조인이다 => 중복 허용, 같은 것을 찾았기 때문

 

세타 조인은 비교 연산자 사용 가능하고 중복허용

 

사진은 중복을 미허용해줬다 => 자연조인

중복되는 것도 써주면 동등 조인

비교 연산자에는 =이 포함된다. 비교연산자: >, ≥, <, ≤, =, ≠

 

-세타 조인(theta join, θ-join)

1. 자연 조인에 비해 더 일반화된 조인

2. 주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플(중복 허용)을 연결하여 생성된 새로운 투플로 결과 릴레이션을 구성

3. 결과 릴레이션의 차수는 두 릴레이션의 차수를 더한 것과 같음 => 중복을 허용하기 때문

4. 표현법: 릴레이션1 AθB 릴레이션2

θ 비교 연산자(>, ≥, <, ≤, =, ≠)를 의미

 

-동일 조인(=동등 조인)(equi-join)

θ(비교) 연산자가 “=”세타 조인을 의미

 

속성의 개수, 차수의 개수가 4+4라 8개를 가진다.

 

-확장된 관계 대수 연산자 - 세미 조인(semi-join)

1. 조인 속성으로 프로젝트 연산을 수행한 릴레이션을 이용하는 조인

2. 표현법: 릴레이션1 릴레이션2 (릴레이션 1을 근간으로 간다)

3. 릴레이션2를 조인 속성으로 프로젝트 연산한 후, 릴레이션1에 자연 조인하여 결과 릴레이션을 구성

4. 불필요한 속성을 미리 제거하여 조인 연산 비용을 줄이는 장점이 있음

5. 교환적 특징이 없음

R S ≠ S R, 릴레이션1을 근간으로 가기 때문 

 

고객 릴레이션 R, 주문 릴레이션 S

R을 근간으로 만드면 고객아이디, 고객이름, 나이, 등급으로 만들어진다. R⋉S

그러면 고객이름에 김현준, 원유선, 정소화이 나온다.

 

S를 근간으로 하면 주문번호, 주문제품, 수량, 주문고객으로 만들어진다. S⋉R

 

-확장된 관계 대수 연산자 - 외부 조인(outer-join)

1. 자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시키는 조인

두 릴레이션에 있는 모든 투플을 결과 릴레이션에 포함시킴

2. 표현법: 릴레이션1 + 릴레이션2

오른쪽 외부조인

왼쪽 외부조인

완전 외부조인

 

 

-자연 조인한 결과

-세타 조인

자연 조인 결과에 주문고객이 추가, 여기에선 동등 조인이라고도 할 수 있다.

 

-세미 조인

고객 릴레이션을 기준으로 만들어짐, 한쪽 릴레이션 값만 반환

 

만약에 주문 릴레이션하고 주문 목록을 세미 조인으로 만들면 (주문⋉

주문스)

 주문번호, 주문고객, 주문제품 이렇게 만들어진다.

 

-외부 조인

외부 조인은 왼쪽, 오른쪽, 완전 외부조인 3가지가 있다.

 

주어진 R, S 테이블

 

자연조인으로 만들면

따라서 조인은

1. 세타

2. 동등

3. 자연

4. 세미

5. 외부

5개가 있고 1, 2는 중복 허용, 3, 4, 5는 중복 미허용

 

-순수 관계 연산자 - 디비전(division)

1. 표현법: 릴레이션1 ÷ 릴레이션2

2. 릴레이션2의 모든 투플과 관련이 있는 릴레이션1의 투플로 결과 릴레이션을 구성

단, 릴레이션1이 릴레이션2의 모든 속성을 포함하고 있어야 연산이 가능함(도메인이 같아야 한다는 의미)

이 표에서 고객번호 400, 고객이름 정소화, 나이 20은 가능하지만 300 고명석 24가 또 있을 수는 없다. 따라서 같은 레코드는 있을 수 없다 => 중복이 있을 수 없다.

 

-관계 대수를 이용한 질의 표현 예

 

예제1) 등급이 gold인 고객의 이름과 나이를 검색하시오.

=> π고객이름, 나이(σ등급='gold'(고객))

예제2) 고객이름이 원유선인 고객의 등급과, 원유선 고객이 주문한 주문제품, 수량을 검색하시오.

=> π등급, 주문제품, 수량(σ고객이름='원유선'(고객⋈주문))

예제3) 주문수량이 10개 미만인 주문 내역을 제외하고 검색하시오.

=>주문 - (σ주문수량<10(주문))

 

  • 관계 해석

-관계 해석(relational calculus)

1. 처리를 원하는 데이터가 무엇인지만 기술하는 언어

비절차 언어(nonprocedural language)

2.  수학의 프레디킷 해석(predicate calculus)에 기반을 두고 있음

3. 분류

투플 관계 해석(tuple relational calculus)

도메인 관계 해석(domain relational calculus)

728x90
반응형

'학교 > 데이터베이스' 카테고리의 다른 글

관계 데이터 모델  (0) 2021.09.21
데이터 모델링  (0) 2021.09.13
데이터베이스 시스템  (0) 2021.09.12
데이터베이스 관리 시스템  (0) 2021.09.12
데이터베이스 기본 개념  (0) 2021.09.12
Comments