관계 데이터 연산의 개념
💡 Remind
데이터 모델 = 데이터 구조 + 연산 + 제약 조건
관계 데이터 연산
관계 데이터 연산 (Relational data operation)
- 관계 데이터 모델의 연산
- 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
관계 대수와 관계 해석
- 관계 대수
- 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술
- 관계 해석
- 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술
- 관계 대수와 관계 해석 모두 기능과 표현력 측면에서 능력이 동등하다.
- 관계적으로 완전(Relationally complete)한 언어: 관계 대수나 관계 해석을 사용하여 데이터베이스의 모든 유형의 질의를 표현하고 처리할 수 있는 언어
관계 대수 (Relational Algebra)
관계 대수 (Relational Algebra)
- 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어 (procedural language == 절차적 언어)
- 릴레이션을 처리하는 연산자들의 모임: 일반 집합 연산자, 순수 관계 연산자
- 폐쇄 특성 (closure property): 피연산자도 릴레이션이고 연산의 결과도 릴레이션이다.
일반 집합 연산자
일반 집합 연산자 (set operation)
- 릴레이션이 투플의 집합이라는 개념을 이용하는 연산자
일반 집합 연산자의 특성
- 2개의 릴레이션을 대상으로 연산 수행 -> 피연산자가 2개 필요
- 합집합, 교집합, 차집합은 피연산자인 두 릴레이션이 합병 가능해야 함
- 합병 가능 (union-complete) 조건: 두 릴레이션의 차수와 서로 대응되는 속성의 도메인이 같아야 한다.
카디션 프로덕트 (Cartesian Product)
- 두 릴레이션 R과 S의 카디션 프로덕트: R X S
- 결과 릴레이션은 R에 속한 투플과 S에 속한 각 투플을 모두 연결하여 만들어진 새로운 투플
- 차수 = R의 차수 * S의 차수
- 카디널리티 = R의 카디널리티 * S의 카디널리티
순수 관계 연산자
순수 관계 연산자 (relational operation)
- 릴레이션의 구조와 특성을 이용하는 연산자
셀렉트 (Select)
- 릴레이션에서 조건을 만족하는 투플만 선택하여 결과 릴레이션을 구성
- 결과 릴레이션은 연산 대상 릴레이션의 수평적 부분집합
- 릴레이션 where 조건식
프로젝트 (Project)
- 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성
- 결과 릴레이션에서 동일한 투플은 중복되지 않고 한 번만 나타남
- 결과 릴레이션은 연산 대상 릴레이션의 수직적 부분집합
- 릴레이션[속성리스트]
조인 (Join)
- 조인 속성(두 릴레이션이 공통으로 가지고 있는 속성)의 값이 같은 투플만 연결하여 결과 릴레이션을 구성
- 자연 조인 (natural join)이라고도 함: 일반적으로 조인 조건을 명시적으로 지정하지 않고, 공통 열을 기준으로 두 테이블을 조인
- 세타 조인 (theta join): 주어진 조인 조건을 만족하는 두 릴레이션의 모든 투플을 연결
- 동일 조인 (equal join): 세타 조인에서 연산자가 "="인 조인
- 세미 조인 (semi join): 조인 속성으로 프로젝트 연산을 수행한 릴레이션을 이용하는 조인
- 릴레이션2를 조인 속성으로 프로젝트 연산한 후, 릴레이션 1에 자연 조인
- 불필요한 속성을 미리 제거하여 조인 연산 비용을 줄이는 장점
- 외부 조인 (outer join): 자연 조인 연산에서 제외되는 투플도 결과 릴레이션에 포함
- 두 릴레이션에 있는 모든 투플을 결과 릴레이션에 포함
👉 조인 vs 카디션 프로덕트
- 카디션 프로덕트는 두 관계의 모든 가능한 조합을 생성하는데 사용하고, 조인은 두 관계 사이의 특정 관계를 찾는 데 사용된다.
디비전 (Division)
- 릴레이션 1 나누기 릴레이션 2
- 릴레이션2의 모든 투플과 관련이 있는 릴레이션1의 투플로 결과 릴레이션을 구성
- 릴레이션1이 릴레이션2의 모든 속성을 포함해야 연산 가능 (도메인이 같아야 함)
관계 해석 (Relational Calculus)
관계 해석 (Relational Calculus)
- 처리를 원하는 데이터가 무엇인지만 기술하는 언어 (nonprocdural language == 비절차적 언어)
도메인 관계 해석
도메인 관계 해석 (Domain Relational Calculus)
- 관계형 데이터베이스의 도메인(열의 데이터 유형)을 기반으로 데이터를 검색하는 방법을 설명하는 관계 해석의 형태
투플 관계 해석
투플 관계 해석 (Tuple Relational Calculus)
- 관계형 데이터베이스에서 어떤 투플(레코드 또는 행)을 선택하거나 어떤 조건을 만족하는 투플을 찾는 방법을 설명하는 관계 해석의 형태
'CS > 데이터베이스' 카테고리의 다른 글
7. 데이터베이스 설계 (1) | 2023.11.27 |
---|---|
6. SQL 기본 문법 (1) | 2023.11.18 |
04. 데이터 모델링 (0) | 2023.11.06 |
Week3 오라클과 MySQL (0) | 2023.10.30 |
Week2: 관계 데이터 모델 (0) | 2023.10.21 |