티스토리 뷰
관계대수 - Relation Algebra
- 릴레이션을 내부적으로 처리하기 위한 연산들의 집합
- 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어
- 검색 질의를 기술하는 언어
- 사용자는 SQL을 사용하여 관계 데이터베이스에 릴레이션을 정의하고, 관계 데이터베이스에서 정보를 검색하고, 조작하고, 무결성 제약조건을 명시할 수 있다.
집합연산
집합 연산은 두 개의 릴레이션을 대상으로 하는 이항 연산자로 카티전 프로덕트를 제외한 3개의 연산은 두개의 릴레이션의 차수 및 도메인과 속성의 순서가 동일해야 한다.
즉, 속성의 개수가 같고, 속성의 도메인이 같고, 속성의 순서가 동일해야 합병 가능 (Union compatible) 하다.
Union _ 합집합
- 두 릴레이션의 튜플을 합치는데 이때 중복이 발생하면 제거한다.
- 두 릴레이션 R1과 R2의 합집합이 반환하는 것은 R1 or R2에 속하는 모든 튜플들로 구성된 렐레이션이다.
Intersection _ 교집합
- 두 릴레이션 R1과 R2의 교집합이 반환하는 것은 두개의 릴레이션에 공통으로 존재하는 튜플만으로 구성된 릴레이션이다.
Difference _ 차집합
- 두 릴레이션 R1과 R2의 차집합이 반환하는 것은 첫번째 릴레이션에는 속하지만 두번째 릴레이션에는 속하지 않는 튜플로 구성된 릴레이션이다.
Cartesian product _ 카티전 프로덕트
- 두 릴레이션의 모든 튜플을 수평으로 결합하는 연산이다.
- R1과 R2 릴레이션의 튜플이 만들 수 있는 모든 조합으로 구성된 릴레이션이다.
- 연산할 두 릴레이션의 차수와 속성의 도메인, 속성의 순서가 동일할 필요가 없다.
- 연산 결과로 나오는 릴레이션의 차수는 (R1 차수 + R2 차수), 카디널리티는 (R1 카디널리티 X R2 카디널리티)이다.
- 동일한 속성값이 존재할 경우 충돌이 발생하여 <릴레이션 명>.<속성명>의 속성이 생성된다.
관계 연산
- 릴레이션의 구조적 특성에 기반을 둔 연산
- 관계형 데이터 모델을 위해 고안된 연산
Selection _ 셀렉션
- 연산자 : σ
- σ <조건> (R)
- AND, OR, NOT을 사용할 수 있다. (∧, ∨, ㄱ)
- 선택 조건식을 만족하는 튜플만을 선택하여 반환
서점에서 판매하는 도서 중 8000원 이하인 도서
-> σ 가격 ≤ 8000 (도서)
서점에서 판매하는 도서 중 8000원 이하이면서 재고가 5권이상인 도서
-> σ 가격 ≤ 8000 ∧ 재고 ≥ 5 (도서)
중간고사 성적이 기말고사 성적보다 작은 성적만 조회
-> σ 중간성적 ≤ 기말성적 (성적)
중간고사 성적이 기말고사 성적보다 작고 이름이 홍길동인 학생만 조회
-> σ 중간성적 ≤ 기말성적 ∧ 이름 = '홍길동' (성적)
Projection _ 프로젝션
- 연산자 : π
- π <속성 리스트> (R)
- 릴레이션 R에서 속성 리스트에 나열된 속성 값만으로 구성된 튜플을 반환
고객 중에서 이름, 주소, 핸드폰번호만 추출
-> π 이름, 주소, 핸드폰 번호 (고객)
Division _ 디비젼
- 연산자 : ÷
- R1 ÷ R2
- R1 튜플 중에서 릴레이션 R2의 모든 튜플과 관련 있는 튜플만을 반환한다.
Join _ 조인
- 연산자 : ▷◁
- R1▷◁ <조인 조건식> R2
- 릴레이션 R1과 R2 튜플을 연결한 조합 중에서 조인 조건식을 만족하는 튜플만 반환
- 조인은 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산이다.
- 조인을 수행하기 위해서는 조인에 참여하는 속성이 동일한 도메인이여야 한다.
- 종류 : 세타조인, 동등조인, 자연조인, 세미조인, 외부조인
세타조인
- 세타조인은 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.
- 조건 : {=, ≠, ≤, ≥, <, >}
- R ▷◁ (r 조건 s) S (R, S는 릴레이션, r, s는 각 릴레이션의 속성, 이때 두 속성은 동일한 도메인)
동등조인
- 동등조인은 세타조인에서 조건이 {=}인 경우로 일반적인 조인 연산은 동등조인을 지칭한다.
- R ▷◁ (r = s) S
- 연산 시 나온 릴레이션의 차수는 (R 차수 + S 차수)이다. 조건에 사용된 속성이 둘다 유지된다.
- 동일한 속성값을 첫번째 릴레이션의 속성을 먼저 쓰고, 두번째 릴레이션의 속성을 써서 순서로 구분한다.
고객과 고객별 주문사항을 보여라
-> 고객 ▷◁ (고객.고객번호 = 주문.고객번호) 주문
자연조인
- 자연조인은 동등조인에서 조인에 참여한 조건 속성이 테이블에 두번 나오는 것을 제거하고 릴레이션을 반환한다.
- R ▷◁ N(r, s) S
- 자연조인의 릴레이션의 차수는 (R 차수 + S 차수 - 1) 이다.
고객과 고객별 주문사항을 보이되 같은 속성은 한번만 표기
-> 고객 ▷◁ N (고객.고객번호, 주문.고객번호) 주문
외부조인
- 자연조인의 확장된 형태이다.
- 외부조인은 자연조인 시 조인에 실패한 튜플도 모두 포함해서 보여주되 대응되는 비어있는 속성값은 NULL 처리한다.
- 기준 릴레이션에 따라서 왼쪽 외부 조인, 완전 외부 조인, 오른쪽 외부 조인으로 나뉜다.
고객 릴레이션과 주문 릴레이션을 조인할 때 고객 번호와 주문 릴레이션의 고객 번호를 기준으로 조인하는 경우
- 왼쪽 외부 조인 : 고객 기준으로 주문내역이 없는 고객도 모두 포함해서 주문내역을 보여라
- 완전 외부 조인 : 주문내역이 없는 고객과 고객내역이 없는 주문을 모두 보여라
- 오른쪽 외부 조인 : 주문을 기준으로 고객내역이 없는 주문을 모두 포함해서 주문내역을 보여라
- 왼쪽이 기준일 경우 왼쪽 고객번호가 모두 살고 주문 릴레이션에 해당 고객번호가 없으면 NULL을 채운다.
- 오른쪽이 기준일 경우 오른쪽 고객번호가 모두 살고 고객 릴레이션에 해당 고객번호가 없으면 NULL을 채운다.
- 완전일 경우 왼쪽 + 오른쪽 경우를 모두 합친다.
세미조인
- 자연조인의 확장된 형태이다.
- 자연조인을 한 후 특정 릴레이션의 결과만을 반환한다.
- R ▷< (r, s) S
- 조인 기호에서 닫힌 쪽 릴레이션의 결과를 반환한다.
고객 중 주문 내역이 있는 고객만을 반환한다
-> 고객 ▷< (고객.고객번호, 주문.고객번호) 주문
-> 고객 릴레이션이 나오되 주문 내역이 존재하는 고객의 튜플만이 나오게 된다.
연습
Q. 마당서점의 박지성 고객의 거래 내역 중 주문번호, 이름, 가격을 보여라
- 주문번호, 이름, 가격을 보이기 위해 프로젝션을 사용한다.
- 조건을 확인한다.
- 고객 == 박지성
- 어느 릴레이션에서 검색할지 확인한다.
- 고객별 거래 내역 릴레이션
A. π 주문번호, 이름, 가격 (σ 고객.이름 = '박지성' (고객 ▷◁ N (고객.고객번호, 주문.고객번호) 주문) )
DBMS는 사용자의 질의에 따라 내부에서 질의 최적화 (Query Optimization) 과정을 거쳐 같은 결과를 내는 여러 대수식을 생성하고,
그 중 가장 효율적인 대수식을 선택하여 처리하게 된다.
'CS > 데이터베이스 정리' 카테고리의 다른 글
데이터베이스 개론과 실습 5주차 - 정규화 (1~3 정규형, BCNF) (0) | 2021.10.29 |
---|---|
데이터베이스 개론과 실습 4주차 - 이상현상과 함수종속 (0) | 2021.10.15 |
데이터베이스 개론과 실습 2주차 - 관계 데이터 모델 (0) | 2021.09.19 |
데이터베이스 개론과 실습 1주차 - 데이터베이스 시스템 (0) | 2021.09.11 |
- Total
- Today
- Yesterday