UXO Studio
  • 데이터베이스 13 : 관계 대수 Relationship Algebra - 추가 연산자
    2024년 10월 01일 15시 19분 33초에 업로드 된 글입니다.
    작성자: UXO Studio

     

     

    01 Set Intersection

    02 Join

    03 Division

     

     

     

     

    01 Set Intersection

     

     

     Notation: r ∩ s

     - r과 s에 모두 포함되는 레코드들로 구성된 새로운 릴레이션을 생성

        card(r ∩ s) ≤ min{card(r), card(s)}

     - r과 s는 동일한 스키마를 가져야 함

     - r ∩ s = r – (r – s)

     

     

     Example

        대출 계좌와 예금 계좌를 모두 가진 고객 이름

        πcustomer-name(borrower) ∩ πcustomer-name(depositor)

     

     

    02 Join

     : 공통 속성을 중심으로 두 개의 릴레이션을 합쳐 새로운 릴레이션을 생성

     

     

    021 Natural Join

     

     

     Notation: 𝑟 ⋈ 𝑠

     - 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합치는 연산. 중복되는 부분을 최소화

     -  𝑟 ⋈ 𝑠 = π R∪S(r.A1 = s.A1 ∧ r.A2 = s.A2 ∧ … ∧ r.An = s.An (r × s))

     -  If R ∩ S = ∅, then 𝑟 ⋅ 𝑠 = 𝑟 × 𝑠

     

     

     Example

     - ‘Harrison’에 살고 있는 고객이 예금하는 은행?

        πbranch-name(σcustomer-city=‘Harrison’(customer ⋈ depositor ⋈ account))

     -  Find all customers who have both a loan and an account

        πcustomer-name(borrower ⋈ depositor)

     

     

    022 Theta Join, Equi Join

     

     

     Theta Join: 𝑟 ⋈θ 𝑠

     - 정의 : σθ(r × s)

     

     

     Equi Join

     - Theta join에서 조건이 '='인 연산

     - 주의 : 공통 속성을 중복하여 출력 → Natural Join

     

     

     Example

     

     

    023  Outer Join

     

     

     정보 손실을 피하기 위하여 join 연산을 확장

     ex) 두 개의 릴레이션을 가정

     - 사원(empid, ename, dept, addr, salary, hiredate)

     - 부양가족(empid*, dname, relationship, phone)

     

     

     사원과 부양가족 정보를 같이 표현하기 위하여 사원과 부양가족 릴레이션을 조인(사원 ⋈ 부양가족)할 경우 문제점?

     

     

     Outer Join의 개념: 다른 테이블에 대응되는 레코드가 없는 레코드들을 join 결과에 추가 (Null 값 이용)

     - Left Outer Join

     - Right Outer Join

     - Full Outer Join

     

     

     Example

     

     

    03 Division

     

     

     Notation: r ÷ s

     - "For All"에 관련된 질의에 사용

        s의 레코드 값을 모두 가진 r의 레코드

     - r(A, B) ÷ s(B)

     

     

     Example

     - ‘Brooklyn’에 위치한 모든 은행에 계좌를 가진 고객

        πcustomer-name, branch-name(depositor ⋈ account) ÷ πbranch-name(σbranch-city=‘Brooklyn’ (branch))

     

     

     Note

     - r ÷ s = πR-S(r) – πR-S((πR-S(r) × s) – πR-S,S(r))

     

     

     

     

    #SetIntersection #Join #NaturalJoin #ThetaJoin #EquiJoin #OuterJoin #LeftOuterJoin #RightOuterJoin #FullOuterJoin #Division #관계형연산 #데이터베이스 #SQL #릴레이션연산 #집합교집합 #관계대수 #데이터베이스조인 #NaturalJoin설명 #ThetaJoin설명 #EquiJoin설명 #OuterJoin설명 #SQLJoin #데이터베이스SetIntersection #Division연산 #관계형데이터베이스 #SQL쿼리 #데이터베이스설계 #DBMS

    댓글