2. Relational Data Model - relational algebra

Yona·2021년 10월 26일
0

🌙 CS_DataBase

목록 보기
4/10

relational algebra

  • Procedural language
    - 연산자의 순서대로 연산한다.

select σ\sigma

주어진 조건 만족하는 튜플로 이루어진 새로운 테이블 생성

  • σp(r)\sigma_p(r)
    - p : 선택 조건

  • term
    - ⋀(and), ⋁(or), ﹁(not)으로 연결 가능
    - “< attribute> op< attribute>” 또는 “< attribute> op < constant> 형태
    - op는 6개의 비교연산자 중 하나

  • 예시
    - 1
    - 교수 중 CS과에 속한 교수 검색
    - σdeptName="CS"(professor)\sigma_{deptName="CS"}(professor)
    - 2

  • r이라는 테이블에서 작은글씨의 조건에 충족하는걸 검색해라

  • 순서대로 연산해야함 -> A=B이면서 D>4이어야 함

project Π\Pi

임의의 속성(attribute) 만족하는 tuple로 이루어진 새로운 테이블 생성

  • ΠA1,A2...Ak(r)\Pi_{A_1, A_2 ... A_k}(r)
  • 선택 연산이 터플 단위로 원하는 결과를 구하는 것이라면, 투영 연산은 속성 단위로 원하는 결과를 구하는 것이라고 할 수 있다.
  • 중복이 제거된다
  • 예시
    - ex1)
    - proffesor 테이블에서 deptName을 제거 하여 보인다.
    - ΠpID,name,salary(professor)\Pi_{pID, name, salary}(professor)
    - ex2)

union \cup

일반적 합집합 정의와 동일

  • 유효 조건 (- 연산에도 동일)
    - tuple 속성 갯수가 동일해야
    - 대응되는 속성의 도메인이 상호호환적이어야
  • 중복 허용하지 않는다.
  • 예시
  • 2014 가을학기 혹은 2015 봄학기 혹은 모두에서 강의된 course ID 를 모두 찾아라
  • ΠcID(σsemester="FALL"year=2014(teaches))ΠcID(σsemester="Spring"year=2015(teaches))\Pi_{cID}(\sigma_{semester="FALL" \wedge year=2014}(teaches))\cup\Pi_{cID}(\sigma_{semester="Spring" \wedge year=2015}(teaches))

set diffrence -

일반적 차집합 정의와 동일

  • 유효조건 (union과 동일)

  • 중복 허용하지 않는다.

  • 예시
    - ex1)
    - 2014년 가을 학기에 개설되었으나 2015년 봄 학기에는 개설되지 않은 과목 번호를 검색
    - ΠcID(σsemester="FALL"year="2014"(teaches))ΠcID(σsemester="Spring"year="2015"(teaches))\Pi_{cID}(\sigma_{semester="FALL"\wedge year="2014"}(teaches))-\Pi_{cID}(\sigma_{semester="Spring"\wedge year="2015"}(teaches))

    • ex2)
      -

Cartesian Product x

입력 테이블의 각 터플을 취하여 이를 연결(concatenation)하여 결과 테이블 만듬

  • 관계에 속하는 터플의 모든 가능한 조합을 결과 관계로 산출
  • 각 테이블에 중복 속성이 없음을 전제한다
    - (A,B) x (A,C) = (A,B,A,C) 가 아니라 (A, B, A’, C)!!
    • 두 개의 입력 테이블에 동일 속성이 존재하면, 재명명(rename) 연산을 이용하여 동일한 속성 이름이 없도록 하여야
    • 동일 속성 이름이 존재하면 자연조인 되어버린다.
  • ex
    -

rename ρ\rho

단순히 테이블 이름이나 속성 이름을 변경하는 연산

  • ρX(A1,A2,,,An)(E)\rho_{X(A1, A2,,,An)}(E)
    - E테이블의 이름을 X로 바꾸고, column들의 이름을 A1, A2,,,An으로 하겠다.

relational algebra expressions

relational algebra 의 결과는 관계 (=테이블)이므로, 관계대수식의 합성이 가능하다.

  • CS 소속의 남학생 이름과 GPA 점수를 찾는다
    - 정답) Πname,GPA(σdeptName="CS"gender="M"(student))\Pi_{name, GPA}(\sigma_{deptName="CS"\wedge gender="M"}(student))

  • CS 학과와 EE 학과에서 모두 개설되는 과목명
    - 오답) Πtitle(σdeptName="CS"deptName="EE"(course))\Pi_{title}(\sigma_{deptName="CS"\wedge deptName="EE"}(course))
    • 그 결과로 나오는 터플은 항상 없다
      • 문제 자체가 잘못됨

  • CS 학과 or EE 학과에서 개설되는 과목명
    - 정답1)
    Πtitle(σdeptName="CS"deptName="EE"(course))\Pi_{title}(\sigma_{deptName="CS" \cup deptName="EE"}(course))
    - 정답 2)
    Πtitle(σdeptName="CS"(course))Πtitle(σdeptName="EE"(course))\Pi_{title}(\sigma_{deptName="CS"}(course))\cup \Pi_{title}(\sigma_{deptName="EE"}(course))

  • ✨Retrieve pairs of department names where the budget of the first department is grater than that of the second department
    (department name의 쌍을 구하라 : 첫번째 department의 budget이 두번째 departmen의 budget보다 큰 경우의 쌍)
    - 정답1)
    ΠdeptName,newdeptName(σbudget>newbudget(departmentXρdepartment(newdeptNAme,newchairman,newbuilding,newbudet)(department)))\Pi_{deptName, new-deptName}(\sigma_{budget>new-budget}(department X \rho_{department(new-deptNAme, new-chairman, new-building, new-budet)}(department)))
    - 주의사항
    - rename rho 사용시 모든 column들을 rename 해줘야
profile
Sometimes you win, sometimes you learn 🏃‍♀️

0개의 댓글