Relational Operations on Bags
- Set: 중복된 튜플을 제거한 릴레이션
- Bag(Multiset): 중복된 튜플을 포함할 수 있는 릴레이션
- Bag을 사용하는 이유
- 효율성(속도)
- Set으로 합집합 연산을 하게 되면 두 릴레이션을 합한 후 일일이 중복을 찾아내 제거하는 연산을 하게 됨
- Bag으로 합집합 연산을 하게 되면 두 릴레이션을 합한 후 연산이 종료되므로 속도가 훨씬 빠름
- Bag 연산으로 두 릴레이션을 합집합하면 중복되는 튜플이 사라지지 않고 합해지므로 결과가 달라질 수 있음(합계, 평균, 카운트 등)
- 프로젝션 연산은 중복된 컬럼을 제거하지만 Bag연산으로 하면 중복을 포함함
- 즉 각 튜플마다 독립적으로 수행됨(셀렉션도 마찬가지)
Extended Operators to Relational Algebra
- 중복 제거 연산자(델타)
- δ(R)
- 집합 연산자
- SUM - 컬럼의 합을 반환
- AVG - 컬럼의 평균을 반환
- MIN, MAX - 컬럼의 최솟값, 최댓값을 반환
- COUNT - 컬럼의 개수를 반환(별다른 언급이 없을 시 중복 포함)
- 그룹 연산자(감마)
- γL(R)
- 중복을 제거한다.
- StarsIn(title, year, starName)이라는 릴레이션이 있다고 해보자. 여기서 우리는 starName을 기준으로 가장 예전에 찍은 연도와 제목의 개수를 알고 싶다. 그렇다면 질의는 다음과 같이 할 수 있다.
- γstarName,MIN(year)−>minYear,Count(title)−>ctTitle)(StartsIn)γ_(StartsIn)
- 위와 같이 질의하면 starName으로 먼저 그룹핑을 한다.
- 그러면 같은 starName을 가진 튜플들로 그룹화된다.
- 그 후에 각 그룹에서 year의 최솟값과 title 컬럼의 count를 구한 뒤 그룹별 결과를 낸다.
예시
starName minYear ctTitle 장동건 태극기 휘날리며 3 주지훈 신과함께-죄와 벌 8 조인성 화장실 어디에요? 15 - 델타는 감마의 특별한 케이스다
- 기술적으로 델타 연산자는 불필요하다. 만약 R(A1, A2, An) 릴레이션이 있다면 델타(R)은 감마A1,A2,An(R)과 같다. 이건 중복을 제거하는 것이다. 즉 델타는 Aggregation 없이 모든 Columns를 각각 그룹화하는 것과 같다. 그럼에도 델타를 사용하는 이유는 더 일반적이고 중요한 연산자이기 때문이다.
- 누군가는 감마(그룹핑)를 Set Operation의 확장(Extension)이라 여긴다. 즉 γA1,A2,An(R) = πA1,A2,An(R)이다. 물론 Set에 한정된다. 그러므로 감마는 종종 일반화된 추출(Generalized Projection)이라 불린다.
- 확장된 프로젝션 연산자
- 기존 프로젝션 연산자는 컬럼에 대한 추출만을 할 수 있어서 조건을 붙이려면 셀렉션을 사용해야 했다. 확장된 프로젝션 연산자는 직접 조건을 추가할 수 있다.
- 화살표는 속성 이름을 지정한다는 의미이다.
- 정렬 연산자(타우)
- τLτ_L
- L 기준으로 튜플을 정렬한다. L 외에 다른 값이 달라도 따로 정렬되지는 않는다.
- τA1,A2τ_
- 한 가지 기준으로 모두 정렬되지 않을 때 위와 같이 조건을 여러 개 둘 수 있다.
- A1에 대하여 튜플들을 정렬한 후 A1에 대한 값이 같으면 A2를 기준으로 정렬하는 것을 의미한다.
- 정렬은 릴레이션을 순서를 가지게 만들어준다
- 따라서 정렬은 가장 마지막에 해야 한다
- τLτ_L
- 외부 조인
- 자연 조인 시 같은 어트리뷰트를 가지지 않는 컬럼들은 조인되지 않았다
- 외부 조인을 사용하면 같은 어트리뷰트를 가지지 않는 컬럼들도 탈락되지 않고 릴레이션에 포함된다
- 이때 탈락되던 튜플의 빈 칸에는 NULL(ㅗ)로 표시한다
- 여기에 세타 조인과 같이 조건을 추가할 수도 있다
Uploaded by Notion2Tistory v1.1.0