5. Bags and Extended Relational Algebra

2021. 5. 2. 20:06Computer Sciences/Database

Relational Operations on Bags

  • Set: 중복된 튜플을 제거한 릴레이션
  • Bag(Multiset): 중복된 튜플을 포함할 수 있는 릴레이션
  • Bag을 사용하는 이유
    • 효율성(속도)
    • Set으로 합집합 연산을 하게 되면 두 릴레이션을 합한 후 일일이 중복을 찾아내 제거하는 연산을 하게 됨
    • Bag으로 합집합 연산을 하게 되면 두 릴레이션을 합한 후 연산이 종료되므로 속도가 훨씬 빠름
  • Bag 연산으로 두 릴레이션을 합집합하면 중복되는 튜플이 사라지지 않고 합해지므로 결과가 달라질 수 있음(합계, 평균, 카운트 등)
  • 프로젝션 연산은 중복된 컬럼을 제거하지만 Bag연산으로 하면 중복을 포함함
  • 즉 각 튜플마다 독립적으로 수행됨(셀렉션도 마찬가지)

Extended Operators to Relational Algebra

  1. 중복 제거 연산자(델타)
    • δ(R)
  1. 집합 연산자
    • SUM - 컬럼의 합을 반환
    • AVG - 컬럼의 평균을 반환
    • MIN, MAX - 컬럼의 최솟값, 최댓값을 반환
    • COUNT - 컬럼의 개수를 반환(별다른 언급이 없을 시 중복 포함)
  1. 그룹 연산자(감마)
    • γ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)이라 불린다.
  1. 확장된 프로젝션 연산자
    • 기존 프로젝션 연산자는 컬럼에 대한 추출만을 할 수 있어서 조건을 붙이려면 셀렉션을 사용해야 했다. 확장된 프로젝션 연산자는 직접 조건을 추가할 수 있다.
    • 화살표는 속성 이름을 지정한다는 의미이다.
  1. 정렬 연산자(타우)
    • τLτ_L
      • L 기준으로 튜플을 정렬한다. L 외에 다른 값이 달라도 따로 정렬되지는 않는다.
    • τA1,A2τ_
      • 한 가지 기준으로 모두 정렬되지 않을 때 위와 같이 조건을 여러 개 둘 수 있다.
      • A1에 대하여 튜플들을 정렬한 후 A1에 대한 값이 같으면 A2를 기준으로 정렬하는 것을 의미한다.
    • 정렬은 릴레이션을 순서를 가지게 만들어준다
    • 따라서 정렬은 가장 마지막에 해야 한다
  • 외부 조인
    • 자연 조인 시 같은 어트리뷰트를 가지지 않는 컬럼들은 조인되지 않았다
    • 외부 조인을 사용하면 같은 어트리뷰트를 가지지 않는 컬럼들도 탈락되지 않고 릴레이션에 포함된다
    • 이때 탈락되던 튜플의 빈 칸에는 NULL(ㅗ)로 표시한다
    • 여기에 세타 조인과 같이 조건을 추가할 수도 있다

'Computer Sciences > Database' 카테고리의 다른 글

6-2. 디자인 원칙  (0) 2021.05.02
6-1. E/R 모델  (0) 2021.05.02
4. Relational Algebra  (0) 2021.05.02
3. Defining a Schema in SQL  (0) 2021.05.02
2. Relational Data Model  (0) 2021.05.02