관계 데이터 연산
by Frinee이 글은 김연희 저 - "데이터베이스 개론 3판"을 공부하고 정리하여 작성하였습니다.
1. 관계 데이터 연산의 개념
- 관계 데이터 모델에서 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
- 관계 데이터 연산
- 관계 대수
- 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술
- 절차 언어
- 관계 해석
- 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술
- 비절차 언어
- 관계 대수
2. 관계 대수
2.1. 관계 대수의 개념과 연산자
- 관계 대수는 원하는 결과를 얻기 위해 릴레이션을 처리하는 과정을 순서대로 기술하는 언어
- 관계 대수에서는 피연산자가 릴레이션
- 일반 집합 연산자
연산자 기호 표현 의미 교집합 ∩ R ∩ S 릴레이션 R과 S의 교집합을 반환 차집합 - R - S 릴레이션 R과 S의 차집합을 반환 카디션
프로젝트× R x S 릴레이션 R의 각 튜플과 릴레이션 S의 각 튜플을 모두 연결하여 만든 새로운 튜플 반환 합집합 ∪ R ∪ S 릴레이션 R과 S의 합집합을 반환 - 순수 관계 연산자
연산자 기호 표현 의미 셀렉트 σ σ조건(R) 릴레이션 R에서 조건을 만족하는 튜플들을 반환 프로젝트 π π속성리스트(R) 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플들을 반환 조인 ⋈ R ⋈ S 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결하여 만든 새로운 튜플들을 반환 디비전 ÷ R ÷ S 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환
2.2. 일반 집합 연산자
- 집합 연산자를 쓰기 위한 제약 조건
- 일반 집합 연산자는 연산을 위해 피연산자 2개가 필요함
- 2개의 릴레이션이 합병 가능해야 함.
- 두 릴레이션의 차수가 같아야 함.
- 2개의 릴레이션에서 서로 대응되는 속성의 도메인이 같다
- 합집합
- 릴레이션 R에 속하거나 릴레이션 S에 속하는 모든 튜플로 결과 릴레이션을 구성
- 교집합
- 릴레이션 R과 릴레이션 S에 공통으로 속하는 튜플로 결과 릴레이션을 구성
- 차집합
- 릴레이션 R에는 존재하지만 릴레이션 S에는 존재하지 않는 튜플들로 결과 릴레이션을 구성
- 카디션 프로덕트
- 릴레이션 R에 속한 각 튜플과 릴레이션 S에 속한 튜플을 모두 연결하여 만들어진 새로운 튜플로 결과 릴레이션을 구성
2.3. 순수 관계 연산자
- 릴레이션의 구조와 특성을 이용하는 연산자
- 셀렉트
- 릴레이션에서 주어진 조건을 만족하는 튜플만 선택하여 결과 릴레이션을 구성
- 표기: σ조건식(릴레이션)
- 데이터 언어 형식: 릴레이션 where 조건식
- 조건식은 비교 연산자를 이용해 구성하는데 이를 비교식 또는 프레디킷(predicate)라 함
- 교환적 특징을 가짐
- σ조건식1(σ조건식2(릴레이션))=σ조건식2(σ조건식1(릴레이션))=σ조건식1∧조건식2(릴레이션)
- 프로젝트
- 릴레이션에서 선탟한 속성에 해당하는 값으로 결과 릴레이션을 구성
- 표기: π속성리스트(릴레이션)
- 데이터 언어 형식: 릴레이션[속성리스트]
- 조인
- 조인 속성을 이용해 두 릴레이션을 조합하여 하나의 결과 릴레이션을 구성
- 표기: 릴레이션1 ⋈ 릴레이션2
- 일반적으로 동등 조인의 표기로 사용되며 그 외의 조인은 조금씩 다르게 표기
- 세타 조인(theta-join)
- 주어진 조인 조건을 만족하는 두 릴레이션의 모든 튜플을 연결한 새로운 튜플로 결과 릴레이션 구성
- 표기: 릴레이션1 ⋈AθB 릴레이션2
- θ(theta)에는 비교연산자가 들어가는데 θ 연산자가 =인 조인이 동등 조인
- 자연 조인(Natural-join)
- 동등 조인의 결과 릴레이션에서 조인 속성이 중복되지 않고 한 번만 표현
- 표기: 릴레이션1 ⋈N 릴레이션2
- 디비전
- S의 모든 튜플과 관련 있는 릴레이션 R의 튜플로 결과 릴레이션을 구성
- 릴레이션 R이 릴레이션 S의 모든 속성을 포함하고 있어야 연산이 가능
2.4. 확장된 관계 대수 연산자
- 세미 조인(R⋉ )
- 릴레이션 S의 조인 속성으로만 구성한 릴레이션을 릴레이션 R에 자연 조인
- 결과적으로 자연 조인 연산에 참여할 수 있는 튜플만 선택해 결과 릴레이션 구성
- 세미 조인을 활용하면 검색에 불필요한 속성을 미리 제거하여 비용을 줄일 수 있음
- 외부 조인(R \Join_{\text{outer}} S )
- 두 릴레이션에 자연 조인 연산을 수행할 때 조인 속성 값이 같은 튜플이 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 모든 튜플을 결과 릴레이션에 포함
- 완전 외부 조인을 사용하면 두 릴레이션에 있는 모든 튜플을 릴레이션에 포함시킴
3. 관계 해석
- 관계해석은 처리를 원하는 데이터가 무엇인지만 기술하는 비절차적 언어이고 관계 데이터 연산의 한 종류
- 데이터를 처리하는 기능과 처리를 요구하는 표현력에서의 능력은 관계 대수와 동일
- 관계 데이터 모델의 제안자인 코드가 수학의 프레디킷 해석에 기반을 두고 제안
- 튜플 관계 해석과 도메인 관계 해석으로 분류
자료
- 데이터베이스 개론 3판 (김연희 저, 2024.1)
블로그의 정보
프리니의 코드저장소
Frinee