포스트

9. 관계 대수와 관계 해석

9. 관계 대수와 관계 해석

9. 관계 대수와 관계해석 (23. 11. 17)

관계 대수

  • 관계 대수식(Relational Algebra Expression)은 연산자들의 모임을 사용해서 구성된 대수식
  • 하나 또는 두 개의 릴레이션을 파라미터로 하나의 릴레이션 인스턴스를 반환
  • 연산자들을 조합해서 복잡한 질의를 만들기 쉬움
  • 릴레이션, 단항(Unary) 연산자와 이항(Binary) 연산자로 순환적으로 정의
  • 셀렉션, 프로젝션, 합집합, 차집합, 카티션 프로덕트등의 기본 연산자의 조합으로 구성
  • 관계 질의는 연산자의 적용 순서를 통해 원하는 답을 구하는 계산 절차를 한 단계씩 묘사한 것
    • 대수식은 질의 수행을 위한 계획으로 생각할 수 있음
    • 관계 시스템은 대수식을 질의 수행 계획으로 표현하는데 이용

셀렉션과프로텍션

  • 관계에 있어 튜플을 선택할수 있는 연산자 시그마( δ )
  • 필드들을 추출(Projection)할 수 있는 연산자 파이 ( π )
  • 단일 관계에 있어 데이터 조작하는데 사용
파일럿번호파일럿이름등급나이
13홍길동144
32이순신1044
4안중근732

아래의 관계 대수식은

δ등급>5(Pilot1)

아래와 같은 릴레이션을 산출

파일럿번호파일럿이름등급나이
32이순신1047
44안중근732

집합 연산

  • 합집합, 교집합, 차집합, 카티션 프로덕트와 같은 표준 집합 연산
  • 합집합(Union, ∪)

    인스턴스 R이나 인스턴스 S 모두에 속하는 투플들을 포함하는 릴레이션 인스턴스를 만듦

    R과 S는 합병 가능해야 하며, 결과 스키마는 R의 스키마와 동일

  • 교집합(Intersection, ∩)

    R ∩ S는 양쪽에 함께 속하는 모든 투플로 구성된 릴레이션 인스턴스를 만듦

  • 차집합(Set-different, – )

    R – S는 R에는 속하고 S에는 속하지 않는 투플로 구성된 릴레이션 인스턴스를 만듦

  • 카디션 프로덕트(Cartisian Product, X )

    R X S는 R의 모든 필드와 S의 모든 필드를 순서대로 가지는 스키마의 릴레이션 인스턴스를 만듦

    R X S는 r∈R, s∈S 쌍에 대하여 투플 <r, s>를 하나씩 가짐

이름 바꾸기

  • 릴레이션에서 필드의 이름을 변경(Renaming)할 수 있는 연산자 로우( ρ )
  • 관계 대수식 안에서 이름 충돌이 발생할 수 있음
  • 관계 대수식 안에서 릴레이션 인스턴스의 이름을 주는 것이 편리함
  • 긴 대수식을 작은 부분으로 나누어 결과 인스턴스에 이름을 줄 수 있도록 하는 것이 편리함

Join

  • 둘 이상의 릴레이션으로 부터 정보를 조합하는 연산 (⋈)
  • 유도된 연산으로, 카티션 프로덕트와 프로젝션 연산을 함께 실행하여 얻은 결과와 동일
종류기호기능
동등 조인두 릴레이션간의 값을 가진 집합
세타 조인⋈θ두 릴레이션 간의 비교 조건에 만족하는 집합
자연 조인⋈N동등 조인에서 중복 속성을 제거
세미 조인⋉ and ⋊자연 조인 후 기호의 열린쪽의 속성을 제거
외부 조인 Left자연 조인 후 왼쪽의 모든 값을 추출, 값이 없을 경우 한쪽의 값을 NULL로 채용
외부 조인 Right자연 조인 후 오른쪽의 모든 값을 추출, 값이 없을 경우 한 쪽의 값을 NULL로 채용
외부 조인 Full자연 조인 후 양쪽의 모든 값을 추출, 값이 없을 경우 한 쪽의 값을 NULL로 채용

Quiz

관계 대수 질의

아래와 같은 릴레이션 스키마가 있고,

파일럿(파일럿번호: 정수, 파일럿이름: 문자열, 등급: 정수, 나이: 실수) 비행기(비행기번호: 정수, 비행기이름: 문자열, 비행기종류: 문자열) 운항(파일럿번호: 정수, 비행기번호: 정수, 운항일자: 날짜)

각 릴레이션의 인스턴스가 아래와 같다고 할 때,

Pilot1

파일럿번호파일럿이름등급나이
13홍길동144
32이순신1044
44안중근732

AirCraft

비행기번호비행기이름비행기종류
101에놀라게이폭격기
102톰캣전투기
102블랙버드정찰기

Flight

파일럿번호비행기번호운항일자
131012022-10-09
441022022-11-23
  1. 비행기 101을 운항하는 파일럿의 이름을 구하세요.

    π파일럿이름, Aircraft(δ비행기 번호 = 101)

  2. 문제 1을 응용하여 개명 연산을 사용하여 각 대수식을 작은 부분으로 분할한 다음 합쳐 연산하는 관계 대수식을 작성하세요.

    ρ(101번비행기(σ비행기 번호 = 101) ∪ ρ(101번비행기이름(π파일럿이름)

  3. 전투기를 운항하는 파일럿의 이름을 구하세요.

    δ비행기 종류(전투기), π파일럿이름

관계 해석

  • **T(투플 변수)p(T)(Formula - T를 묘시하는 식) }** 형식으로 투플 간의 관계를 해석
  • 투플 변수
    • 어느 릴레이션 스키마의 투플들을 값을 갖는 변수.
    • 주어진 투플 변수에 대입되는 값들은 모두 동일한 개수와 타입의 필드들을 가짐
  • Rel이 릴레이션 이름이고 R과 S를 투플 변수로, a를 R의 한 애트리뷰트로, b를 S의 한 애트리뷰트라고 하고, op를 집합 { <, >, =, ≤, ≥, ≠ }에 속하는 연산자라고 할 때, 원자식은
    • R ∈ Rel
    • R.a op S.b
    • R.a op 상수 또는 상수 op R.a
  • 식 (Formula)은 다음 중 하나로 순환적으로 정의
    • 원자식
    • ㄱp, p∧q, p∨q, 또는 p ⇒q
    • ∃R(p(R)). 이때 R은 투플 변수
    • ∀R(p(R)). 이때 R은 투플 변수
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

© 김규형. 일부 권리 보유

Powered by Jekyll with Chirpy theme