Relational Algebra on Bags
Bag은 집합과 같지만 요소가 두 번 이상 나타날 수 있습니다.
Multiset은 Bag의 또 다른 이름입니다.
예시:
{1,2,1,3}은 Bag입니다.
{1,2,3}도 집합인 Bag입니다.
bag은 list와 비슷하지만 bag의 순서는 중요하지 않습니다.
예: bag에서는 {1,2,1} = {1,1,2} 이지만 리스트에서는 [1,2,1] != [1,1,2]입니다.
bag의 사용이유
관계형 데이터베이스의 가장 중요한 쿼리 언어인 SQL은 bag 언어입니다.
SQL은 중복을 제거하지만 일반적으로 명시적으로 그렇게 하도록 요청하는 경우에만 가능합니다.
프로젝션과 같은 일부 작업은 집합보다 bag에서 훨씬 더 효율적입니다.
-프로젝션: 다른 속성을 삭제하는 것 외에는 더 이상 작업이 없다.
Operations on Bag
- Selection:
각 튜플에 적용되며,
bag에 미치는 영향은 세트에 미치는 영향과 같습니다. - Projection
bag operator로서 우리는 중복을 제거하지 않습니다. - Product and joins
각 쌍의 튜플에 대해 수행되므로 가방의 복제본은 우리가 작동하는 방식에 영향을 미치지 않습니다.
Example:
Bag Union, Intersection, Difference
Bag Union, Intersection, Difference(합집합, 교집합 및 차이)는 새로운 정의가 필요합니다.
Union: 각 백에 나타나는 횟수의 합으로 두 백의 합집합에 요소가 나타납니다.
예: {1,2,1} U {1,1,2,3,1} = {1,1,1,1,1,2,2,3}
Intersection: 요소는 두 백의 합집합에서 최소 횟수만큼 나타납니다.
예: {1,2,1} ∩ {1,2,3} = {1,2}.
Difference: 요소가 A에 나타나는 횟수에서 B에 나타나는 횟수를 뺀 만큼 가방의 차이 A – B에 나타납니다.
단, 0회 미만은 절대 아닙니다.
예: {1,2,1} – {1,2,3} = {1}.
주의 ! Bag규칙과 집합규칙은 다르다!
집합에 적용되는 모든 대수 법칙이 백에도 적용되는 것은 아닙니다.
예: 합집합의 교환법칙(R UNION S = S UNION R )은 백에 적용됩니다.
덧셈은 가환적이기 때문에 x가 R과 S에 나타나는 횟수를 더하는 것은 R과 S의 순서에 의존하지 않습니다.
반대 예:
합집합은 멱등적이며 S UNION S = S를 의미합니다.
그러나 가방의 경우 x가 S에서 n번 나타나면 S UNION S에서 2n번 나타납니다.
따라서 S UNION S != S 이다.
The Extended Algebra
- δ: 백에서 중복을 제거합니다.
- τL: 튜플을 정렬합니다.
- L은 속성 목록입니다.
- 정렬 결과: list(두 가방 모두 설정되지 않음) - 확장 프로젝션: 산술, 열 복제.
- γ: grouping 및 aggregation.
- OUTERJOIN (⋈): dangling tuples( 아무것도 결합하지 않는 튜플)을 피합니다.
Extended Projection
동일한 Π L 연산자를 사용하여 목록 L이 속성과 관련된 임의의 표현을 포함하도록 허용합니다.
예를 들면 다음과 같습니다.
- 속성에 대한 산술 연산(예: A+B).
- 동일한 속성의 중복 발생.
- 예: ΠA+B,A,A (R)
Aggregation Operators
aggregation 연산자는 관계 대수의 연산자가 아닙니다.
오히려 테이블의 전체 열에 적용되고 단일 결과를 생성합니다.
가장 중요한 예: SUM, AVG, COUNT, MIN 및 MAX.
Grouping Operator
R1:=γL(R2).
- L은 다음 중 하나에 해당하는 요소 목록입니다.
- 개별(그룹화) 속성.
- AGG(A), 여기서 AGG는 집계 연산자 중 하나이고 A는 속성입니다.
예시:
- StarsIn(제목, 연도, 별 이름)
- γ starName, MIN(연도)-> minYear,Count(제목) -> ctTitle (StarsIn)
- 세 번 이상 출연한 각 스타에 대해 영화에 출연한 가장 초기 연도를 찾으십시오.
- R1:= γ starName, MIN(연도) -> minYear, Count(title) -> ctTitle (StarsIn)
- R2 := SELECT ctTitle 선택 >= 3 (R1)
- R3 := PROJECT minYear(R2)
Outerjoin
우리가 R S에 합류한다고 가정합니다.
조인하는 S의 튜플이 없는 R의 튜플을 댕글링(dangling)이라고 합니다.
마찬가지로 S의 튜플에 대해서도 마찬가지입니다.
Outerjoin은 결과에 특수 NULL 기호를 채워서 매달린 튜플을 보존합니다.
- R⋈S
'Computer Science > 데이터베이스' 카테고리의 다른 글
트랜잭션 (0) | 2022.12.15 |
---|---|
관계데이터모델5 - Design Theory for Relational Databases (1) | 2022.12.15 |
관계 데이터 모델3- UML to Relational Model (0) | 2022.10.13 |
관계 데이터 모델1- 관계 모델의 기본 (0) | 2022.10.13 |
UML 클래스 다이어그램3 - Weak Entity Sets, E-R Model (0) | 2022.10.10 |