CSE 344 Introduc/on to Data Management Sec%on 4: Rela%onal Algebra - - PowerPoint PPT Presentation

cse 344 introduc on to data management
SMART_READER_LITE
LIVE PREVIEW

CSE 344 Introduc/on to Data Management Sec%on 4: Rela%onal Algebra - - PowerPoint PPT Presentation

CSE 344 Introduc/on to Data Management Sec%on 4: Rela%onal Algebra Outline HW3 Check-in Rela%onal Algebra Review Translate nested SQL Queries to RA Translate from RA to SQL Rela/onal Algebra SQL = WHAT we want to get from the


slide-1
SLIDE 1

CSE 344 Introduc/on to Data Management

Sec%on 4: Rela%onal Algebra

slide-2
SLIDE 2

Outline

  • HW3 Check-in
  • Rela%onal Algebra Review
  • Translate nested SQL Queries to RA
  • Translate from RA to SQL
slide-3
SLIDE 3

Rela/onal Algebra

  • SQL = WHAT we want to get from the data
  • Rela%onal Algebra = HOW to get the data we want
  • SQL à Rela%onal Algebra àPhysical Plan
  • Rela%onal Algebra = Logical Plan (usually wriIen as a tree)
slide-4
SLIDE 4

Rela/onal Algebra Operators Standard:

  • Selec%on: σ

Projec%on: π Rename: ρ Sets:

  • Union: ∪

Intersec%on: ∩ Difference: - Joins:

  • Cartesian Product: X

Join: ⨝ Extended:

  • Duplicate Elimina%on: δ

Grouping and Aggrega%on: ɣ Sor%ng:

slide-5
SLIDE 5

SQL to RA Review

  • Write a Rela%onal Algebra plan for the following query:

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

Dancer(did, name, birthyear, country) Show(sid, %tle, choreographer, composer, year) Role(did, sid, role, company)

slide-6
SLIDE 6

SQL to RA Solu/on

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

slide-7
SLIDE 7

SQL to RA Solu/on

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

slide-8
SLIDE 8

SQL to RA Solu/on

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

slide-9
SLIDE 9

SQL to RA Solu/on

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

slide-10
SLIDE 10

SQL to RA Solu/on

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

slide-11
SLIDE 11

SQL to RA Solu/on

SELECT d.did, d.name, count(*) FROM Dancer d, Show s, Role r WHERE d.did=r.did AND r.sid=s.sid AND s.composer='Tchaikovsky' GROUP BY d.did, d.name ORDER BY d.name;

slide-12
SLIDE 12

Translate nested SQL Queries to RA

Member(mid, name, age) Picture(pid, year) Tagged(mid, pid)

SELECT w.year, max(w.c) AS m FROM(SELECT x.name, z.year, count(*) AS c FROMMember x, Tagged y, Picture z WHERE x.mid = y.mid AND y.pid = z.pid AND age < 20 GROUP BY x.name, z.year) w GROUP BY w.year HAVING sum(w.c) > 100;

slide-13
SLIDE 13

Nested SQL Queries to RA Solu/on

SELECT w.year, max(w.c) AS m FROM(SELECT x.name, z.year, count(*) AS c FROM Member x, Tagged y, Picture z WHERE x.mid = y.mid AND y.pid = z.pid AND age < 20 GROUP BY x.name, z.year) w GROUP BY w.year HAVING sum(w.c) > 100;

slide-14
SLIDE 14

Translate from RA to SQL

  • Put tables in FROM clause
  • Put join predicates in WHERE clause
  • Put selec%on predicates in WHERE clause
  • Translate extended RA symbols to SQL equivalent
  • Put selec%on of aggregates in HAVING clause
  • Put projec%on predicates in SELECT clause
slide-15
SLIDE 15

RA to SQL Example

Person(pid,name) Email(eid, pidFrom, %d, body, length) EmailTo(eid,pidTo)

slide-16
SLIDE 16

RA to SQL Solu/on SELECT e1.pidFrom, count(*)

FROM Email e1, EmailTo t1, Email e2 WHERE e1.eid = t1.eid AND t1.pidTo = e2.pidFrom GROUP BY e1.pidFrom HAVING max(e2.length) < 1000;