[데이터베이스] Ch2 Introduction to Relational Model (2)

Junyoung Park·2022년 8월 12일

데이터베이스

목록 보기
3/6
post-thumbnail

Introduction to Relational Model (2)

관계대수 Relational Algebra

  • 한 개 또는 두 개의 릴레이션을 입력값으로 받아 연산 과정에 따른 하나의 새로운 릴레이션을 출력하는 절차적 언어

Select

  • 셀렉션 프리디케이트(술어, predicate)를 만족하는 튜플을 선택하는 연산
  • σp(r)\sigma_{p}(r): 프리디케이트 pp를 만족하는 튜플을 특정 릴레이션의 인스턴스 rr에서 선택한다는 뜻
  • E.g.) instructor 릴레이션에서 department 어트리뷰트 값이 Physics인 모든 instructor 튜플을 셀렉트: σdept_name="Physics"(instructor)\sigma_{dept\_name="Physics"}(instructor)
  • 논리 연산 적용 가능: \wedge AND, veevee OR, ¬\neg NOT 모두 적용 가능
  • E.g.) instructor 릴레이션에서 department 어트리뷰트 값이 Physics이고 salary 어트리뷰트 값이 90000 이상인 모든 instructor 튜플을 셀릭트: σdept_name="Physics"salary>90000(instructor)\sigma_{dept\_name="Physics"\wedge salary \gt 90000}(instructor)

Project

  • 특정 릴레이션의 특정 어트리뷰트만을 리턴하는 유너리 연산
  • ΠA1,A2,A3...,Ak(r)\Pi_{A_1,A_2,A_3...,A_k}(r): 특정 어트리뷰트만을 리턴함
  • 릴레이션이 집합이기 때문에 중복 행은 삭제
  • E.g.) instructor 릴레이션의 dept_name 어트리뷰트만을 보고 싶을 때: Πdept_name(instructor)\Pi_{dept\_name}(instructor)

여러 개의 연산을 복합적(Composition)으로 사용 가능

  • E.g.) instructor 릴레이션에서 부서가 Physics인 튜플의 이름만을 보고 싶을 때: Πname(σdept_name"Physics"(instructor))\Pi_{name}(\sigma_{dept\_name"Physics"}(instructor)). 먼저 담당 부서가 물리학인 모든 강사의 튜플을 셀렉트한 뒤 이름만을 얻어내는 명령어

Cartesian Product

  • 두 릴레이션으로부터 정보를 결합하는 연산
  • R1×R2R_1 \times R_2: 모든 가능한 튜플 쌍을 만드는 연산. 중복 어트리뷰트가 있을 때 각각 R1.AR_1.A, R2.AR_2.A로 표시

Join

  • 데카르트 곱 연산이 모든 가능한 튜플 쌍을 만들어냄 → 대부분 매칭이 되지 않는 정보로 비효율적 연산
  • E.g.) instructor 테이블과 teaches 테이블에서 지칭하는 튜플이 서로 같은 대상이어야 의미가 있음: σinstructor.id=teaches.id(instructor×teaches)\sigma_{instructor.id=teaches.id}(instructor \times teaches)를 통해 간추릴 수 있음
  • 조인 연산: 데카르트 곱 연산 및 셀렉트 연산의 복합 사용이 아니라 단일한 명령어를 통해 조인 기능 제공
  • rθs=σθ(r×s)r \bowtie_{\theta}s=\sigma_{\theta}(r \times s)
  • E.g.) σinstructor.id=teaches.id(instructor×teaches)=instructorinstructor.id=teaches.idteaches\sigma_{instructor.id=teaches.id}(instructor \times teaches)=instructor\bowtie_{instructor.id=teaches.id}teaches

Union

  • 두 개의 릴레이션 합집합을 제공하는 연산
  • rsr \cup s: 합집합이 성공하기 위해서는 두 릴레이션 rr, ss가 같은 arity(어트리뷰트 개수)를 가져야 하고, 어트리뷰트 도메인이 compatible(특정 칼럼의 어트리뷰트가 동일한 타입)해야 함

Set Intersection

  • 두 개의 릴레이션 교집합을 제공하는 연산
  • rsr \cap s: 합집합과 같은 제약 조건 필요. 같은 arity 및 어트리뷰트 도메인의 compatible 필요

Set Difference

  • 두 개의 릴레이션 차집합을 제공하는 연산
  • rsr - s: 같은 arity, 어트리뷰트 도메인 compatible

Assignment

  • 복잡한 릴레이셔널 알제브라 수식을 간단한 변수로 할당하는 방법
  • ARAA \leftarrow RA: 복잡한 표현이 하나의 단일한 변수로 할당됨

Rename

  • 릴레이셔널 알제브라 결과값이 특정한 이름을 가지고 있지 않기 때문에 리네임을 통해 이후에도 활용
  • ρx(E)\rho_x(E): 특정 수식 EE의 결과를 xx로 명명하는 연산

서로 같은 쿼리

  • 동일한 쿼리를 쓰는 방법이 다양함
  • E.g.) Physics 부서에서 일하는 강사가 가르치는 강의 정보를 찾기: (1). σdept_name="Physics"(instructorinsturctor.ID=teaches.IDteaches)\sigma_{dept\_name="Physics"}(instructor\bowtie_{insturctor.ID=teaches.ID}teaches) (2). (σdept_name="Physics"(instructor))instructor.ID=teaches.IDteaches(\sigma_{dept\_name="Physics"}(instructor))\bowtie_{instructor.ID=teaches.ID}teaches
profile
JUST DO IT

0개의 댓글