← 목록으로
✏️ Study

데이터베이스 설계 | 5. 관계 대수 개념과 기본 연산자

2024년 5월 24일

1. 관계 대수 개념

  • 쿼리는 관계 인스턴스에 적용되며 쿼리 결과도 관계 인스턴스
  • 쿼리에 대한 입력 관계의 스키마가 고정되어 있다
  • 주어진 쿼리 결과에 대한 스키마도 고정되어 있다
  • 스키마는 쿼리 언어 구조의 정의에 의해 결정된다

2. 관계 대수 연산자

  • 일반 집합 연산자

    • 합집합(R∪S) : degree(A 또는 B의 차수), cardinality(|A∪B| =< |A| + |B|)
    • 교집합(R∩S) : degree(A 또는 B의차수), cardinality(|A∩B| =< MIN(|A|, |B|)
    • 차집합(R-S) : degree(A 또는 B의 차수), cardinality(|A-B| =< |A|)
    • 카티션프로덕트(RXS) : 릴레이션 R의 각 투플과 릴레이션 S의 각 투플을 모두 연결하여 만든 새로운 투플을 반환, degree(A와 B의 차수 합), cardinality(|A×B| = |A| x |B|)
  • 순수 관계 연산자

    • Select (σ(조건)(R)) : 릴레이션 R에서 조건을 만족하는 투플들을 반환
    • Project (π(속성 리스트)(R)) : 릴레이션 R에서 주어진 속성들의 값으로만 구성된 투플들을 반환
    • Join (R⨝S) : 공통 속성을 이용해 릴레이션 R과 S의 투플들을 연결하여 만든 새로운 투플들을 반환
    • Division (R/S) : 릴레이션 S의 모든 투플과 관련이 있는 릴레이션 R의 투플들을 반환
  • 기본 연산자 : 다른 연산으로 대체할 수 없는 하나의 논리적 기능을 수행하는 연산

    • Select (σ) : 관계에서 행의 하위 집합을 선택
    • Project (π) : 관계에서 원하지 않는 열을 삭제
    • Union (∪) : 관계 1 또는 관계 2에 있는 튜플
    • Difference (-) : 관계 1에는 있지만 관계 2에는 없는 튜플
    • 카티션 프로덕트(X) : 두 관계를 결합할 수 있다
  • 복합 연산자 : 몇 개의 기본 연산으로 대체할 수 있는 연산

    • Intersect (∩) : 관계 1과 관계 2의 튜플
    • Join (⨝) : 둘 이상의 관계에서 정보 결합
    • Division (/) : 모든 보트를 예약한 선원의 이름 찾기
  • Project (π)

    • 프로젝트 목록에 없는 속성을 삭제
    • 결과 스키마는 프로젝트 목록에 있는 필드를 정확히 포함하며 (유일한) 입력 관계에 있는 것과 동일한 이름을 갖는다
    • 중복을 제거
    • 참고 : 실제 시스템은 사용자가 명시적으로 요청하지 않는 한 일반적으로 중복 제거를 수행하지 않는다
  • Select (σ)

    • 선택 조건을 충족하는 행을 선택
    • 결과에 중복 없음
    • 하나의 결과 릴레이션이 또 다른 연산에 입력될 수 있음
    • 입력 관계의 스키마와 동일한 결과 스키마
    • 교환적 특성 (ex.σage>30(σrating>8(S2)) = σrating>8(σage>30(S2)))
  • Traditional Set Operators

    • 합병 가능
      • 합집합, 교집합, 차집합
      • 속성의 개수 (차수)가 같음
      • 서로 대응되는 속성의 도메인이 같음
      • 속성의 이름은 달라도 됨
      • 중복된 결과는 제거
  • Join (⨝)

    image.png

    • R ⨝c S=σc(R XS) (카티션 프로덕트, SELECT로 구성 가능 ⇒ 복합 연산자)
    • c는 Condition(조건)이고 Θ(<, >, =, <> 등) 비교 연산자가 들어갈 수 있음
    • 동등 조인(Equijoin) : S1⨝ sid R1 (조건 조인의 특수한 경우 조건 C에는 등식만 포함된다, 중복되는 것도 보여줌)
    • 자연 조인(Natural join) : S1⨝ R1 (동등 조인에서 공통된 속성을 제거)
    • Semi Join (⋉) : 릴레이션의 S의 조인 속성으로만 구성(프로젝트)한 릴레이션을 릴레이션 R에 자연 조인하는 것
    • Outer Join : 매칭이 안 된것들을 매칭시키고 싶을 때 사용
  • Expressing A/B Using Primitive Operators

    • A/B의 경우 B의 일부 y값으로 ‘실격’되지 않은 모든 x값을 계산한다 ⇒ 만약 우리가 B에서 y값을 붙여서 A에 없는 xy 튜플을 얻는다면 x값은 자격이 없다 Disqualified x values : πX((πX(A) X B) A) Qualified x value = πx(A) Disqualified x value A/B = πx(A) disqualified x values = πx(A)- πx((πx(A) X B) A)
    • Division은 프로젝트, 카티션 프로덕트,차집합 3개의 기본 연산자로 구성 가능(복합 연산자)

3. 정리

image.png

image.png