관계대수
질의어 : 삽입, 삭제, 수정, 검색 등의 데이터 조작을 위한 연산들을 표현하기 위한 언어
- 절차적 언어 : 사용자가 원하는 결과를 얻기 위해 어떤 절자로 기술해야 하는지 명시해야 하는 언어 (C,C++)
- 비절차적 언어 : 무엇을 원하는지만 기술. how to do?(수행 절차) 기술하지 않음! 실질적 수행 절차는 시스템 내부적으로 결정해야함(DMBS 내부에서 알아서 절차 만듦) 절차적 언어에 비해 표현방법이 심플함
관계대수
- 비절차적 언어
- 수학에서의 수식구조와 유사
피연산자 : 테이블
연산자 : 단항 연산자, 이항 연산자
선택(selection) : 하나의 테이블에서 주어진 조건을 만족하는 레코드들을 검색하는 기능
<테이블 이름> : 연산의 대상이 되는 테이블의 이름
<조건식> : 비교연산자(<.>,<=) 와 부울 연산자(논리연산자)의 조합
선택 연산에서 null(널)은어떤 조건식에서도 배제됨!
선택 연산은 교환 법칙이 성립됨
추출(project) : 사용자가 원하는 필드만 결과로 보여주는 연산
--> 관계형 모델은 중복된 레코드들을 허용하지 않음 (실제 DBMS에서는 대부분 허용함)
추출연산은 교환 법칙이 성립되지 X
재명명 연산 : 테이블에 이름을 부여하거나 변경하는 연산(SQL에선 이름을 변경하지 않으면 곤란한 상황이 있음)
재명명 연산은 중간 결과나 최종 결과에 대한 테이블명이 변경됨
*실제 데이터베이스에 저장된 테이블명까지 변경되는 것 X
집합 연산
: 집합 연산에 입력이 되는 두 개의 테이블은 서로 호환 가능해야 함!
호환 가능한 테이블들
: 두 테이블의 차수(=필드 개수)가 같고 필드 이름이 동일해야함
: 같은 이름의 필드라 하더라도 도메인이 일치해야함 (타입이 같아야함)
카티션 프로덕트 : 두 개의 테이블을 물리적으로 조합해, 하나의 테이블로 구성하는 것. 두 테이블에서 각각의 레코드들을 서로 결합해 하나의 레코드로 구성하며 가능한 모든 조합의 레코드들로 테이블 생성
<테이블명1>X<테이블명2>
조인(join) 연산 : 카티션 프로덕트인데, 두 테이블로부터 특정 조건을 만족하는 레코드들을 하나의 레코드로 결합하는 연산
카티션 프로덕트는 모든 가능한 조합(서로 관련 없는 레코드들도)에 의해 레코드들을 생성하지만, 조인은 특정 조건을 만족하는 레코드만을 선택
세타(theta) 조인이라고도 함
<조건식>
조인 조건이라 부름 : 조인 조건은 필드간의 동등비교(=)가 대부분이며 이를 동등조인 이라고 함
자연 조인(natural join) : 서로 다른 테이블에서 같은 필드명을 갖는 두 필드에 대한 동등조인 중 하나의 필드를 제거하여 단순히 표현한 연산
공통 필드가 없다면? 모든 필드 다 보여줌 -> 카티션 프로덕트와 같음
외부 조인 : 자연 조인 조건에 만족되지 않은 레코드까지 포함해서 찾아야 될 때 사용하는 연산방법. 서로 매치되지 않는 필드에 대해서는 NULL로 입력함
- 왼쪽 외부조인 : 왼쪽 테이블의 레코드에 대해 오른쪽 테이블에 조인 조건에 부합하는 레코드가 없을 때도 검색 결과에 포함
- 오른쪽 외부조인
- 완전 외부조인
지정(assignment) 연산 : 복잡한 질의를 열 개의 질의로 분리하거나 중간 결과에 이름을 부여해 관계연산을 여러 개 나눠 짤 수 있도록 하는 것 (<- 로 표현)
rename 은 이름을 해서 그 관계대수 안에서 쓰지만, 지정 연산은 이름을 지정해 관계 대수 바깥에서 쓸 수 있음
'Study > DB' 카테고리의 다른 글
SQL 실습 (0) | 2021.08.22 |
---|---|
SQL (0) | 2021.08.22 |
관계대수 실습 (0) | 2021.08.22 |
관계형 데이터베이스 (0) | 2021.08.22 |
Data & Database (0) | 2021.08.22 |