728x90
- 관계 대수와 관계 해석
- 관계 대수 : 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술
- 관계 해석 : 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술
- 관계 대수 연산자
- 일반 집합 연산자 : 2 가지 조건을 만족해야함.
- 1. 연산하는 두 릴레이션의 차수가 같아야 한다. (열, atrribute의 개수가 같아야 한다.)
- 2. 두 릴레이션에서 서로 공통되는 속성(대응되는 속성)의 도메인이 같아야 한다.
- 합집합
- 교집합
- 차집합
- 카티션 프로덕트
- 두 릴레이션의 튜플을 모두 연결하여 새로운 튜플을 반환한다.
- 두 릴레이션이 합병 불가능한 경우에도 카티션 연산은 가능하다.
- R, S를 카티션 수행 후 릴레이션의 차수 : R차수+S차수, 카디널리티 : R차수*S차수
- 순수 관계 연산자
- 셀렉트
- 릴레이션에서 조건을 만족하는 튜플들을 반환
- 튜플이 '행'에 해당되므로, 셀렉트는 수평적 연산자
- 프로젝트
- 릴레이션에서 주어진 속성의 값으로만 구성된 튜플을 반환
- 릴레이션에서 선택한 속성에 해당되는 값으로 릴레이션을 구성, 따라서 프로텍트는 수직적 연산자
- 조인 (R join S)
- R과 S의 공통 속성을 이용해 튜플을 연결해 만들어진 튜플을 반환
- 자연 조인과 세타 조인
- 세미 조인과 외부 조인(결과 릴레이션에 자연 조인에서 제외된 튜플들을 모두 포함시킴)
- 디비전(R division S)
- S의 모든 튜플과 관련 있는 R의 튜플을 반환
- R이 S의 모든 속성을 포함하고 있어야지 연산이 가능하다.
- 셀렉트
- 일반 집합 연산자 : 2 가지 조건을 만족해야함.
Q. Join의 종류와 간단한 설명. ex) select x from A join B
Inner join : A와 B 테이블에서 교집합을 추출한다.
Left join : from에 해당되는 A 테이블에서 교집합을 추출한다.
Right join : join하는 B 테이블에서 교집합을 추출한다.
Outer join : A, B에 모두 해당하는 합집합을 추출한다. join 조건에 만족하지 않는 행도 나타낸다.
self join : 한 테이블 내에서 두 개의 칼럼을 연결하는 것을 의미한다.
Q. join의 방식을 설명하시오.
join의 방식에는 Nested loop Join(중첩 반복 조인), Merge Join(병합 조인), Hash Join(해시 조인) 등이 있다.
1. Nested loop Join(중첩 반복 조인)
정의 : 2개 이상의 테이블에서 하나의 테이블을 기준으로 상대방 행을 결합해 원하는 결과를 추출하는 방식이다.
사용 : 두 테이블의 입력이 차이나면서 (한쪽은 작고, 한쪽은 크고) join하는 테이블에 인덱스가 있는 경우에 사용한다.
장점 : 메모리 사용량이 가장 적다. 순차적으로 접근한다.
단점 : 순차적으로 처리하기 때문에 안쪽 테이블에 인덱스가 필요한데, 테이블을 엑세스 할 때 랜덤 I/O가 발생하고 대용량 데이터를 처리할 때 적합하지 않다.
2. Merge Join(병합 조인)
정의 : 양 테이블을 각각 접근해 결과를 정렬하고, 정렬한 결과를 scan 하며 연결하며 join하는 방식이다.
사용 : 두 테이블의 열이 정렬된 상태에 있는 경우, 연결 고리에 인덱스가 전혀 없는 경우, 대용량 자료인 경우 사용한다.
장점 : 동시에 처리할 수 있고, 독립적이다. 인덱스 유무가 중요하지 않다.
단점 : 정렬에 따라 메모리 사용량이 증가할 수 있다.
성능 개선 : 테이블을 access하는 과정에서 적절한 scan을 사용해 속도를 향상시킨다. join컬럼을 미리 정렬시킨다.
3. Hash Join(해시 조인)
정의 : 두 테이블 중 하나를 해시 테이블로 설정하여, 테이블의 key값을 해시 알고리즘으로 비교하여 join을 수행한다.
사용 : 집합 일치 연산, 중복 제거, 그룹핑을 할 때, join 컬럼에 적당한 인덱스가 없어 NL join을 사용할 수 없을 때, 대용량 데이터를 조인할 때 사용한다.
728x90
'Database > DB' 카테고리의 다른 글
Database Chapter 8 - 데이터베이스 설계 (0) | 2022.03.25 |
---|---|
Database Chapter 7 - SQL연산, View (0) | 2022.03.22 |
Database Chapter 5 - 관계 데이터 모델 (0) | 2022.03.19 |
Join, subquery (0) | 2022.03.17 |
Database Chapter 4 - 데이터 모델링 (0) | 2022.03.12 |
댓글