Database: 관계 데이터 연산

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

 

관계 데이터 연산

1. 관계 데이터 모델의 연산

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

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

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

2. 관계 대수나 관계 해석으로 기술할 수 있는 모든 질의를 기술할 수 있는 데이터 언어 -> 관계적으로 완전하다고 판단

3, 질의: 데이터에 대한 처리 요구

 

관계 대수의 개념

1. 절차 언어(procedural language)

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

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

- 대표 연산자 8개

- 일반 집합 연산자와 순수 관계 연산자로 분류

3. 폐쇄 특성

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


일반 집합 연산자(릴레이션이 투플의 개념을 이용하는 연산자)

합집합: 릴레이션 R과 S의 합집합을 반환

교집합: 릴레이션 R과 S의 교집합을 반환

차집합: 릴레이션 R과 S의 차집합을 반환 (순서 바꾸면 결과값 달라짐)

카티션 프로덕트: 릴레이션 R과 각 투플과 릴레이션 S의 각 투플을 모두 연결하여 만든 새로운 투플을 반환 

 

일반 집합 연산자의 특성

1. 피연산자가 2개 필요

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

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

- 합병 가능 조건: 두 릴레이션 차수가 같아야 함, 두 릴레이션에서 서로 대응되는 속성의 도메인이 같아야 함.

 

합집합(Union)

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

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

2. 결과 릴레이션의 특성

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

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

3. RuS = SuR

4. (RuS)uT = Ru(SuT)

 

교집합(intersection)

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

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

2. 결과 릴레이션의 특성

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

- 카디널리티는 릴레이션 R과 S의 어떤 카디널리티보다 크지 않음(같거나 적음)

3. RnS = SnR

4. (RnS)nT = Rn(SnT)

 

차집합(difference)

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

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

2. 결과 릴레이션의 특성

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

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

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

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

 

카티션 프로덕트(cartesian product)

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

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

2. 결과 릴레이션의 특성

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

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

3. RxS = SxR

4. (RxS)xT = Rx(SxT)

5. 카디션 프로덕트는 위 연산자들과 다르게 속성의 도메인이 달라도 상관없음. 그래서 R과S의 차수를 더한것이 결과릴레이션 차수가 되는것임.


순수 관계 연산자(relational operation)

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

- 셀렉트: 릴레이션 R에서 조건을 만족하는 투플을 반환

- 프로젝트: 릴레이션 R에서 주어진 속성들의 값으로만 구성된 투플들을 반환

- 조인: 공통 속성을 이용해 릴레이션 R과 S의 투플들을 연결하여 만든 새로운 투플들을 반환

- 디비전: 릴레이션 S의 모든 투플과 관련이 있는 릴레이션 R의 투플들을 반환

 

셀렉트(select)

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

- 수평적 연산자: 결과 릴레이션은 연산 대상 릴레이션의 수평적 부분 집합

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

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

4. 조건식

- 비교식, 프레디킷(predicate)이라고도 함

- 속성과 상수의 비교나 속성들 간의 비교로 표현

- 비교 연산자와 논리 연산자를 이용해 작성

5. 교환적 특징이 있음

 

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

첫번째는 관계대수 표현 방식으로 표현, 두번째는 sql 방식으로 표

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

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

 

프로젝트(project)

1. 릴레이션에서 선택한 속서의 값으로 결과 릴레이션을 구성

- 수직적 연산자: 결과 릴레이션은 연산 대상 릴레이션의 수직적 부분집합

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

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

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

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

예제3. 등급이 gold인 고객의 이름과 나이를 검색

 

조인(join)

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

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

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

3. 동등 조인(equl-join)이라고도 함

4. 같은 도메인을 갖는 동일한 속성값이 하나라도 있어야 조인이 가능해짐.

 

세타 조인(theta-join)

1. 동등 조인에 비해 더 일반화 된 조인

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

3. 결과 릴레이션의 차수는 두 릴레이션의 차수를 더한 것과 같음

 

동등 조인(equl-join)

1. 세타 연산자가 '='인 세타 조인을 의미함.

 

자연 조인(natural join)

1. 동등 조인의 결과 릴레이션에서 조인 속성이 한 번만 나타나게 하는 연산

2. 동등 조인에서 중복된 속성은 한 번만 나오게 자동으로 처리된 조인

 

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

 

디비전

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

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

예시 사진을 보면 주문내역 디비전 제품1이 이해가 잘 안갈 수 도 있는데,

즉, 제품1 디비전 연산은 이렇게 이해해야 함: 진짜우동그대로만두, 두 제품 모두를 주문한 고객-제조업체 쌍만 보여줘!"


확장된 관계 대수 연산자

세미 조인(semi-join)

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

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

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

4. 교환적 특징은 없음

 

외부 조인(outer-join)

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

- 결과 릴레이션에서 속성 값이 없는 경우는 널 값으로 처리

2. 분류

- 왼쪽 외부조인/ 오른쪽 외부조인/ 완전 외부조인

- 모든 투플을 결과 릴레이션으로 가져오는 릴레이션이 무엇이냐에 따라 분류

3. 왼쪽 외부 조인

- 왼쪽에 있는 릴레이션1에 존재하는 모든 투플의 결과를 릴레이션에 포함시킴

4. 오른쪽 외부 조인

- 오른쪽에 있는 릴레이션2에 존재하는 모든 투플을 결과 릴레이션에 포함시킴.

5. 완전 외부 조인

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

'Database' 카테고리의 다른 글

Database: MySQL 조작  (2) 2025.04.21
Database: MySQL 데이터베이스  (0) 2025.04.21
Database_관계 데이터 모델  (0) 2025.04.20
Database_데이터 모델링  (0) 2025.04.20
Database_데이터베이스 시스템  (0) 2025.04.20