컴공돌이의 취미 블로그
기초데이터베이스 [4]. 관계대수와 관계해석 본문
기초데이터베이스 [4]. 관계대수와 관계해석
● Relational Query Languages(관계 질의 언어) :
→ Query Languages(질의 언어)는 데이터베이스안의 데이터를 조작, 검색하는데 도와주는 언어
→ Relational Model(관계 모델)은 심플하고 강력한 Query Languages를 지원함
→ Query Languages 는 Programming Language와 다름
→ 2개의 수학적 Query Language 형식은 실제 언어(SQL)의 기반을 구성하고 구현
→ Relational Algebra(관계 대수)는 실행 계획을 표현하는데 적합
→ Relational Calculus(관계 해석)는 사용자가 원하는 것을 계산하는 방법보다는 원하는 것 자체를 설명
→ 공식적인 정의를 위해서는 Positional Notation(위치 표기법)이 더 쉽고, Named-Field Notation(필드이름 표기법)은 가독성이 더 좋음
→ SQL 에서는 Positional Notation, Named-Field Notation 양쪽 모두 사용함
● Relational Algebra(관계 대수) :
→ 각각의 함수는 Relation을 반환하기 때문에 여러개의 함수로 구성될 수 있음
→ 관계 대수에는 σ(Selection), π(Projection), ×(Cross-Product), -(Set-Difference), ∪(Union), ∩(Intersection), ⋈(Join), /(Division), ρ(Renaming) 등이 있음
→ σ(Selection), π(Projection), ×(Cross-Product), -(Set-Difference), ∪(Union)는 Basic Operation(기본 함수) 이며 ∩(Intersection), ⋈(Join), /(Division), ρ(Renaming)은 Additional Operation(추가 함수)
<예제 Instance들>
1. σ(Selection)
→ Selection Condition을 만족하는 행을 선택
→ 결과는 중복되지 않음
→ 결과로 나온 Relation은 다른 Relation Algebra의 입력 Relation이 될 수 있음
↓
2 .π(Projection)
→ Projection List에 없는 Attribute들을 삭제
→ 결과 Schema는 입력 Relation에서 Projection List에 있는 필드와 같은 이름을 가진 필드를 가지고 있음
→ Projection은 중복 값을 지워야 함
↓
3. ×(Cross-Product)
→ Relation1의 각각의 행은 Relation2의 각각의 행과 짝을 이루어 결합함
→ 결과 Schema는 Relation1과 Relation2에 있는 필드를 1개씩 가지고 있고 가능한 경우 이름을 상속받아서 사용
→ 2개의 Relation에서 필드의 이름이 같은 경우 Renaming Operator을 사용하여 이름을 바꾸어 주거나 필드명 앞에 Relation명을 붙여서 구분이 가능하게 함
↓
4. -(Set-Difference)
→ 같은 개수와 같은 타입의(Union-Compatible:합병가능) 필드를 가지고 있는 두 개의 입력 Relation을 가짐
→ Relation1에는 속하지만 Relation2 에는 속하지 않는 Tuple들의 집합
↓
5. ∪(Union)
→ 같은 개수와 같은 타입의(Union-Compatible:합병가능) 필드를 가지고 있는 두 개의 입력 Relation을 가짐
→ Relation1에 속하거나 Relation2 에 속하는 Tuple들의 집합
↓
6. ∩(Intersection)
→ 같은 개수와 같은 타입의(Union-Compatible:합병가능) 필드를 가지고 있는 두 개의 입력 Relation을 가짐
→ Relation1에 속하면서 동시에 Relation2에도 속하는 Tuple들의 집합
↓
7. ⋈(Join)
→ Join은 Selection과 Cross-Product의 조합으로 대체할 수 있음
→ Condition Join(조건 조인) : Cross-Product 후 조건에 맞는 행을 선택
→ Equi Join(동등 조인) : Cross-Product 후 조건(A=B 형태의 등식들만으로 구성)에 맞는 행을 선택
→ Natural Join(자연 조인) : 조인 조건을 생략할 수 있고 Cross-Product 후 Relation1과 Relation2에서 동일한 이름을 가지고 있는 모든 필드의 동등조건에 맞는 행을 선택
↓
<조건 조인>
↓
<동등조인 & 자연조인>
8. /(Division)
→ ‘모든’ 이라는 특정한 종류의 Query를 표현하는데 유용
→ Relation1에 x,y 필드가 있고 Relation2에 y라는 필드가 있을 때 y의 모든 값을 가지고 있는 x를 R1/R2로 표현
9. ρ(Renaming)
→ 필드의 이름을 변경하고 싶을 때 사용
→ 두 개의 Relation을 합쳤을 때 중복되는 필드명이 있을 경우 이를 구분하기 위해서 이름을 재설정하기 위해 사용
↓
● Relational Algebra(관계 대수) 요점:
1. Relation Model(관계 모델)은 엄밀하게 정의된 심플하면서도 강력한 Query Language(질의 언어)를 가지고 있음
2. Relational Algebra(관계 대수)는 좀 더 함수적이고, 질의 평가 계획을 내부적으로 표현할 때 유용함
3. 주어진 Query(질의)는 여러 가지 방법으로 표현할 수 있고 이 중 가장 효율적인 방법을 선택해야 함
'Study > 기초데이터베이스' 카테고리의 다른 글
기초데이터베이스 [3]. 관계 모델 (0) | 2017.10.23 |
---|---|
기초데이터베이스 [2]. 데이터베이스 설계의 개요 (0) | 2017.10.09 |
기초데이터베이스 [1]. 데이터베이스 시스템 개요 (0) | 2017.09.12 |