컴공돌이의 취미 블로그

기초데이터베이스 [4]. 관계대수와 관계해석 본문

Study/기초데이터베이스

기초데이터베이스 [4]. 관계대수와 관계해석

컴공돌이​​ 2017. 10. 23. 17:30

기초데이터베이스 [4]. 관계대수와 관계해석


● Relational Query Languages(관계 질의 언어) : 

→ Query Languages(질의 언어)는 데이터베이스안의 데이터를 조작, 검색하는데 도와주는 언어

→ Relational Model(관계 모델)은 심플하고 강력한 Query Languages를 지원함

→ Query Languages 는 Programming Language와 다름


→ 2개의 수학적 Query Language 형식은 실제 언어(SQL)의 기반을 구성하고 구현

→ Relational Algebra(관계 대수)는 실행 계획을 표현하는데 적합

→ Relational Calculus(관계 해석)는 사용자가 원하는 것을 계산하는 방법보다는 원하는 것 자체를 설명


→ Query는 Relation Instance(관계 인스턴스)에 적용되며, Query의 결과도 Relation Instance로 나타냄

→ 공식적인 정의를 위해서는 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의 각각의 행과 짝을 이루어 결합함

→ 결과 SchemaRelation1Relation2에 있는 필드를 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 Relation1Relation2에서 동일한 이름을 가지고 있는 모든 필드의 동등조건에 맞는 행을 선택


<조건 조인>


<동등조인 & 자연조인>


8. /(Division)

 모든이라는 특정한 종류의 Query를 표현하는데 유용

 Relation1x,y 필드가 있고 Relation2y라는 필드가 있을 때 y의 모든 값을 가지고 있는 xR1/R2로 표현 


9. ρ(Renaming)

→ 필드의 이름을 변경하고 싶을 때 사용

→ 두 개의 Relation을 합쳤을 때 중복되는 필드명이 있을 경우 이를 구분하기 위해서 이름을 재설정하기 위해 사용


● Relational Algebra(관계 대수) 요점: 

1. Relation Model(관계 모델)은 엄밀하게 정의된 심플하면서도 강력한 Query Language(질의 언어)를 가지고 있음

2. Relational Algebra(관계 대수)는 좀 더 함수적이고, 질의 평가 계획을 내부적으로 표현할 때 유용함

3. 주어진 Query(질의)는 여러 가지 방법으로 표현할 수 있고 이 중 가장 효율적인 방법을 선택해야 함

반응형