반응형

관계 데이터 연산 

- 관계형 모델에서 제공하는 데이터를 다루기 위한 방법

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

- 관계대수: 원하는 결과를 얻기 위해 데이터의 처리과정을 순서대로 기술

- 관계해석: 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술

 

관계대수와 관계해석

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

=> 언어가 적합한지(관계대수/해석으로 할 수 있는 것을 제시한 언어 문법체계로 다 구현가능한지?)

관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어 = 관계적으로 완전

 

관계 해석

어떻게 검색(X)

무엇을 검색(O)

무엇을 검색할것인가만 기술하는 선언적 표현법을 사용하는 비절차적 질의어

SQL등 많은 상업용 관계언어들이 관계해석에 기반을 두고있음

 

 

관계대수

- 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어(절차 언어)

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

- 폐쇄 특성이 존재(닫힌 성질) => 피 연산자도 릴레이션이고, 연산의 결과도 릴레이션임, input형태 = output형태 동일

 

관계대수와 관계해석 차이

- 관계해석 : 하나의 선언적, 해석식으로 검색질의를 명시, 비절차적 언어

- 관계대수 : 연산들을 순차적으로 사용하므로 절차적인 성질을 가짐

두 표현의 표현력은 동등

 

 

관계대수 연산자

1. 일반 집합 연산자

합집합 => 교환적, 결합적 특징, 차수는 릴레이션들의 차수와 동일, 카디널리티(행의 수)는 두 릴레이션의 카디널리티를 더한 것과 같거나 작음

교집합 => 교환적, 결합적 특징, 차수(컬럼수)는 두 릴레이션의 차수와 동일, 카디널리티(행 수)는 두 릴레이션 중 어떤 카디널리티보다 크지 않다.

차집합 (R-S) => R에는 존재하지만,  S에는 존재하지 않느 투플로 결과 릴레이션 구성, 차수는 R,S의 차수와 같음, 카디널리티는 R의 카디널리티와 같거나 적음, 교환적, 결합적 특징이 없음

 

카티션 프로덕트 => 교환적, 결합적 특징, R에 속한 투플과 S에 속한 투플을 모두 연결함. 차수는 R,S의 차수를 합한것과 동일, 카티널리티는 R과 S의 카디널리티를 곱한것과 같음

 

- 피연산자가 2개 필요하다

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

(합병가능 : 두 릴레이션의 차수(컬럼의 수)가 동일, 두 릴레이션에서 서로 대응되는 속성(칼럼)의 도메인이 같아야함(자료형이 동일해야)

 

순수 관계 연산자 => 릴레이션의 구조와 특성을 이용

셀렉트 σ(조건)(R) => 릴레이션 R에서 조건을 만족하는 투플들(행)을 반환 (행단위로 반환)

"릴레이션 where 조건식" 과 동일

비교연산자, 논리 연산자(∧, ∨, ¬(and, or, not))를 이용하여 작성

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

σ(등급 = 'gold')(고객) = 고객 where 등급 = 'gold'

 

프로젝트  π(속성 리스트)(R) => 릴레이션 R에서 주어진 속성들의 값으로만 구성된 투플을 반환 (열단위로 반환)

ex) 고객이름, 등급, 적립금을 검색

π(고객이름, 등급, 적립금)(고객)

 

조인 R⋈S(자연조인) => 공통 속성을 이용하여 R,S의 투플들을 연결함

고객 ⋈ 주문

외래키는 지정이 되지 않아도 조인시 문제가 없지만 무결성 문제가 발생한다.

공통속성인 (고객.고객아이디), (주문.주문고객)은 한번만 나타난다. => 고객 아이디만 나타남

차수(속성)의 개수 = 두차수의 합 - 공통 속성의 개수

 

세타조인 R⋈(JOIN 조건)S => 자연조인에 비해 일반화된 조인, 

주어진 조인조건을 만족하는 두 릴레이션의 모든 투플을 연결하여 생성된 새로운 투플이 결과 릴레이션

결과 릴레이션의 차수는 두 릴레이션의 차수를 더한것

ex) 

고객⋈(고객아이디=주문고객)S

자연조인과 다르게 공통 속성이 둘다 표시된다.

 

디비전 R ÷ S => 릴레이션 S의 모든 투플과 관련 있는 릴레이션 R의 투플 반환

R이 S의 모든 속성을 포함하고 있어야 연산이 가능하다

고객 릴레이션에서 gold 등급을 가진 투플을 고름. 나누기에서 몫과 유사

 

 

 

외부 조인 (R ⋈+ S)=> 자연조인 연산에서 제외되는 투플도 결과 릴레이션에 포함시킴, 즉 두 릴레이션에 잇는 모든 투플을 결과 릴레이션에 포함 시킴

 

 

 

관계대수 예시)

1. 모든 부서의 이름과 지역명을 보이시오

2. 모든 사원의 이름과 담당업무를 보이시오

3. 담당업무가 ‘salesman’ 인 사원의 이름, 입사일자를 보이시오

4. 입사일자가 ‘1999-02-31’ 이후인 사원의 사원번호, 이름, 입사일자를 보이시오

5. 모든 사원의 이름과 부서명을 보이시오

6. 급여액(연봉)1000 이상인 사원의 이름, 급여액, 부서명을 보이시오

7. 입사일자가 ‘1999-02-31’ 이후인 사원의 사원번호, 이름, 부서명을 보이시오.

8. ‘Dalls’ 에 근무하는 사원의 이름, 급여액을 보이시오

9. 입사일자가 ‘1998-01-01’ 이전인 사원중 급여액이 1000 미만인 사원의 사원번호, 이름, 부서명을 보이시오.

 

728x90
반응형

'공부 > 데이터베이스' 카테고리의 다른 글

회복과 병행제어 - 병행제어  (0) 2021.06.04
회복과 병행제어 - 회복  (0) 2021.06.03
파이썬 연동 예제  (0) 2021.06.02
index  (0) 2021.06.02
데이터 베이스 보안  (0) 2021.06.02
블로그 이미지

아상관없어

,