Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture #4: Relational Algebra

Similar presentations


Presentation on theme: "Lecture #4: Relational Algebra"— Presentation transcript:

1 Lecture #4: Relational Algebra
Faloutsos - Pavlo CMU SCS /615 Carnegie Mellon Univ. School of Computer Science /615 - DB Applications C. Faloutsos & A. Pavlo Lecture #4: Relational Algebra

2 Overview history concepts Formal query languages relational algebra
Faloutsos - Pavlo CMU SCS /615 Overview history concepts Formal query languages relational algebra rel. tuple calculus rel. domain calculus Faloutsos - Pavlo CMU SCS /615

3 History before: records, pointers, sets etc
Faloutsos - Pavlo CMU SCS /615 History before: records, pointers, sets etc introduced by E.F. Codd in 1970 revolutionary! first systems: (System R; Ingres) Turing award in 1981 Faloutsos - Pavlo CMU SCS /615

4 Concepts - reminder Database: a set of relations (= tables)
Faloutsos - Pavlo CMU SCS /615 Concepts - reminder Database: a set of relations (= tables) rows: tuples columns: attributes (or keys) superkey, candidate key, primary key Faloutsos - Pavlo CMU SCS /615

5 Example Database: Faloutsos - Pavlo CMU SCS 15-415/615

6 Example: cont’d Database: k-th attribute (Dk domain)
Faloutsos - Pavlo CMU SCS /615 Example: cont’d k-th attribute (Dk domain) Database: rel. schema (attr+domains) tuple Faloutsos - Pavlo CMU SCS /615

7 Example: cont’d rel. schema (attr+domains) instance Faloutsos - Pavlo
CMU SCS /615 Example: cont’d rel. schema (attr+domains) instance Faloutsos - Pavlo CMU SCS /615

8 Example: cont’d Di: the domain of the i-th attribute (eg., char(10)
Faloutsos - Pavlo CMU SCS /615 Example: cont’d Di: the domain of the i-th attribute (eg., char(10) rel. schema (attr+domains) instance Faloutsos - Pavlo CMU SCS /615

9 Overview history concepts Formal query languages relational algebra
Faloutsos - Pavlo CMU SCS /615 Overview history concepts Formal query languages relational algebra rel. tuple calculus rel. domain calculus Faloutsos - Pavlo CMU SCS /615

10 Formal query languages
Faloutsos - Pavlo CMU SCS /615 Formal query languages How do we collect information? Eg., find ssn’s of people in 415 (recall: everything is a set!) One solution: Rel. algebra, ie., set operators Q1: Which ones?? Q2: what is a minimal set of operators? Faloutsos - Pavlo CMU SCS /615

11 Relational operators . set union U set difference ‘-’
Faloutsos - Pavlo CMU SCS /615 Relational operators . set union U set difference ‘-’ Faloutsos - Pavlo CMU SCS /615

12 Example: Q: find all students (part or full time)
Faloutsos - Pavlo CMU SCS /615 Example: Q: find all students (part or full time) A: PT-STUDENT union FT-STUDENT Faloutsos - Pavlo CMU SCS /615

13 Faloutsos - Pavlo CMU SCS /615 Observations: two tables are ‘union compatible’ if they have the same attributes (‘domains’) Q: how about intersection U Faloutsos - Pavlo CMU SCS /615

14 Observations: A: redundant: STUDENT intersection STAFF = STAFF STUDENT
Faloutsos - Pavlo CMU SCS /615 Observations: A: redundant: STUDENT intersection STAFF = STAFF STUDENT Faloutsos - Pavlo CMU SCS /615

15 Observations: A: redundant: STUDENT intersection STAFF = STAFF STUDENT
Faloutsos - Pavlo CMU SCS /615 Observations: A: redundant: STUDENT intersection STAFF = STAFF STUDENT Faloutsos - Pavlo CMU SCS /615

16 Observations: A: redundant: STUDENT intersection STAFF =
Faloutsos - Pavlo CMU SCS /615 Observations: A: redundant: STUDENT intersection STAFF = STUDENT - (STUDENT - STAFF) STAFF STUDENT Faloutsos - Pavlo CMU SCS /615

17 Observations: A: redundant: STUDENT intersection STAFF =
Faloutsos - Pavlo CMU SCS /615 Observations: A: redundant: STUDENT intersection STAFF = STUDENT - (STUDENT - STAFF) Double negation: We’ll see it again, later… Faloutsos - Pavlo CMU SCS /615

18 Relational operators . set union set difference ‘-’ U
Faloutsos - Pavlo CMU SCS /615 Relational operators . set union set difference ‘-’ U Faloutsos - Pavlo CMU SCS /615

19 Other operators? eg, find all students on ‘Main street’ A: ‘selection’
Faloutsos - Pavlo CMU SCS /615 Other operators? eg, find all students on ‘Main street’ A: ‘selection’ Faloutsos - Pavlo CMU SCS /615

20 Faloutsos - Pavlo CMU SCS /615 Other operators? Notice: selection (and rest of operators) expect tables, and produce tables (-> can be cascaded!!) For selection, in general: Faloutsos - Pavlo CMU SCS /615

21 Selection - examples Find all ‘Smiths’ on ‘Forbes Ave’
Faloutsos - Pavlo CMU SCS /615 Selection - examples Find all ‘Smiths’ on ‘Forbes Ave’ ‘condition’ can be any boolean combination of ‘=‘, ‘>’, ‘>=‘, ... Faloutsos - Pavlo CMU SCS /615

22 Relational operators selection . set union set difference R - S R U S
Faloutsos - Pavlo CMU SCS /615 Relational operators selection . set union set difference R - S R U S Faloutsos - Pavlo CMU SCS /615

23 Relational operators selection picks rows - how about columns?
Faloutsos - Pavlo CMU SCS /615 Relational operators selection picks rows - how about columns? A: ‘projection’ - eg.: finds all the ‘ssn’ - removing duplicates Faloutsos - Pavlo CMU SCS /615

24 Relational operators Cascading: ‘find ssn of students on ‘forbes ave’
Faloutsos - Pavlo CMU SCS /615 Relational operators Cascading: ‘find ssn of students on ‘forbes ave’ Faloutsos - Pavlo CMU SCS /615

25 Relational operators selection projection . set union
Faloutsos - Pavlo CMU SCS /615 Relational operators selection projection . set union set difference R - S R U S Faloutsos - Pavlo CMU SCS /615

26 Relational operators Are we done yet?
Faloutsos - Pavlo CMU SCS /615 Relational operators Are we done yet? Q: Give a query we can not answer yet! Faloutsos - Pavlo CMU SCS /615

27 Relational operators A: any query across two or more tables,
Faloutsos - Pavlo CMU SCS /615 Relational operators A: any query across two or more tables, eg., ‘find names of students in ’ Q: what extra operator do we need?? Faloutsos - Pavlo CMU SCS /615

28 Relational operators A: any query across two or more tables,
Faloutsos - Pavlo CMU SCS /615 Relational operators A: any query across two or more tables, eg., ‘find names of students in ’ Q: what extra operator do we need?? A: surprisingly, cartesian product is enough! Faloutsos - Pavlo CMU SCS /615

29 Cartesian product eg., dog-breeding: MALE x FEMALE
Faloutsos - Pavlo CMU SCS /615 Cartesian product eg., dog-breeding: MALE x FEMALE gives all possible couples = x Faloutsos - Pavlo CMU SCS /615

30 so what? Eg., how do we find names of students taking 415?
Faloutsos - Pavlo CMU SCS /615 so what? Eg., how do we find names of students taking 415? Faloutsos - Pavlo CMU SCS /615

31 Cartesian product A: Faloutsos - Pavlo CMU SCS 15-415/615

32 Cartesian product Faloutsos - Pavlo CMU SCS 15-415/615

33 Faloutsos - Pavlo CMU SCS /615 Faloutsos - Pavlo CMU SCS /615

34 FUNDAMENTAL Relational operators
Faloutsos - Pavlo CMU SCS /615 FUNDAMENTAL Relational operators selection projection cartesian product MALE x FEMALE set union set difference R - S R U S Faloutsos - Pavlo CMU SCS /615

35 Faloutsos - Pavlo CMU SCS /615 Relational ops Surprisingly, they are enough, to help us answer almost any query we want!! derived/convenience operators: set intersection join (theta join, equi-join, natural join) ‘rename’ operator division Faloutsos - Pavlo CMU SCS /615

36 Joins Equijoin: Faloutsos - Pavlo CMU SCS 15-415/615 Faloutsos - Pavlo

37 Cartesian product A: Faloutsos - Pavlo CMU SCS 15-415/615

38 Joins Equijoin: theta-joins:
Faloutsos - Pavlo CMU SCS /615 Joins Equijoin: theta-joins: generalization of equi-join - any condition Faloutsos - Pavlo CMU SCS /615

39 Joins very popular: natural join: R S
Faloutsos - Pavlo CMU SCS /615 Joins very popular: natural join: R S like equi-join, but it drops duplicate columns: STUDENT (ssn, name, address) TAKES (ssn, cid, grade) Faloutsos - Pavlo CMU SCS /615

40 Joins nat. join has 5 attributes equi-join: 6 Faloutsos - Pavlo
CMU SCS /615 Joins nat. join has 5 attributes equi-join: 6 Faloutsos - Pavlo CMU SCS /615

41 Natural Joins - nit-picking
Faloutsos - Pavlo CMU SCS /615 Natural Joins - nit-picking if no attributes in common between R, S: nat. join -> cartesian product Faloutsos - Pavlo CMU SCS /615

42 Overview - rel. algebra fundamental operators derived operators
Faloutsos - Pavlo CMU SCS /615 Overview - rel. algebra fundamental operators derived operators joins etc rename division examples Faloutsos - Pavlo CMU SCS /615

43 Rename op. Q: why? A: shorthand; self-joins; …
Faloutsos - Pavlo CMU SCS /615 Rename op. Q: why? A: shorthand; self-joins; … for example, find the grand-parents of ‘Tom’, given PC (parent-id, child-id) Faloutsos - Pavlo CMU SCS /615

44 Rename op. PC (parent-id, child-id) Faloutsos - Pavlo
CMU SCS /615 Rename op. PC (parent-id, child-id) Faloutsos - Pavlo CMU SCS /615

45 Rename op. first, WRONG attempt: (why? how many columns?)
Faloutsos - Pavlo CMU SCS /615 Rename op. first, WRONG attempt: (why? how many columns?) Second WRONG attempt: Faloutsos - Pavlo CMU SCS /615

46 Faloutsos - Pavlo CMU SCS /615 Rename op. we clearly need two different names for the same table - hence, the ‘rename’ op. Faloutsos - Pavlo CMU SCS /615

47 Overview - rel. algebra fundamental operators derived operators
Faloutsos - Pavlo CMU SCS /615 Overview - rel. algebra fundamental operators derived operators joins etc rename division examples Faloutsos - Pavlo CMU SCS /615

48 Division Rarely used, but powerful.
Faloutsos - Pavlo CMU SCS /615 Division Rarely used, but powerful. Example: find suspicious suppliers, ie., suppliers that supplied all the parts in A_BOMB Faloutsos - Pavlo CMU SCS /615

49 Division Faloutsos - Pavlo CMU SCS 15-415/615 Faloutsos - Pavlo

50 Division Observations: ~reverse of cartesian product
Faloutsos - Pavlo CMU SCS /615 Division Observations: ~reverse of cartesian product It can be derived from the 5 fundamental operators (!!) How? Faloutsos - Pavlo CMU SCS /615

51 Faloutsos - Pavlo CMU SCS /615 Division Answer: Observation: find ‘good’ suppliers, and subtract! (double negation) Faloutsos - Pavlo CMU SCS /615

52 Faloutsos - Pavlo CMU SCS /615 Division Answer: Observation: find ‘good’ suppliers, and subtract! (double negation) Faloutsos - Pavlo CMU SCS /615

53 Division Answer: All suppliers All bad parts Faloutsos - Pavlo
CMU SCS /615 Division Answer: All suppliers All bad parts Faloutsos - Pavlo CMU SCS /615

54 Division Answer: all possible suspicious shipments Faloutsos - Pavlo
CMU SCS /615 Division Answer: all possible suspicious shipments Faloutsos - Pavlo CMU SCS /615

55 Division Answer: all possible suspicious shipments that didn’t happen
Faloutsos - Pavlo CMU SCS /615 Division Answer: all possible suspicious shipments that didn’t happen Faloutsos - Pavlo CMU SCS /615

56 all suppliers who missed at least one suspicious shipment,
Faloutsos - Pavlo CMU SCS /615 Division Answer: all suppliers who missed at least one suspicious shipment, i.e.: ‘good’ suppliers Faloutsos - Pavlo CMU SCS /615

57 Overview - rel. algebra fundamental operators derived operators
Faloutsos - Pavlo CMU SCS /615 Overview - rel. algebra fundamental operators derived operators joins etc rename division examples Faloutsos - Pavlo CMU SCS /615

58 Sample schema find names of students that take 15-415
Faloutsos - Pavlo CMU SCS /615 Sample schema find names of students that take Faloutsos - Pavlo CMU SCS /615

59 Examples find names of students that take 15-415 Faloutsos - Pavlo
CMU SCS /615 Examples find names of students that take Faloutsos - Pavlo CMU SCS /615

60 Examples find names of students that take 15-415 Faloutsos - Pavlo
CMU SCS /615 Examples find names of students that take Faloutsos - Pavlo CMU SCS /615

61 Sample schema find course names of ‘smith’ Faloutsos - Pavlo
CMU SCS /615 Sample schema find course names of ‘smith’ Faloutsos - Pavlo CMU SCS /615

62 Examples find course names of ‘smith’ Faloutsos - Pavlo
CMU SCS /615 Examples find course names of ‘smith’ Faloutsos - Pavlo CMU SCS /615

63 Faloutsos - Pavlo CMU SCS /615 Examples find ssn of ‘overworked’ students, ie., that take 412, 413, 415 Faloutsos - Pavlo CMU SCS /615

64 Faloutsos - Pavlo CMU SCS /615 Examples find ssn of ‘overworked’ students, ie., that take 412, 413, 415: almost correct answer: Faloutsos - Pavlo CMU SCS /615

65 Faloutsos - Pavlo CMU SCS /615 Examples find ssn of ‘overworked’ students, ie., that take 412, 413, Correct answer: c-name=413 c-name=415 Faloutsos - Pavlo CMU SCS /615

66 Faloutsos - Pavlo CMU SCS /615 Examples find ssn of students that work at least as hard as ssn=123, ie., they take all the courses of ssn=123, and maybe more Faloutsos - Pavlo CMU SCS /615

67 Sample schema Faloutsos - Pavlo CMU SCS 15-415/615 Faloutsos - Pavlo

68 Faloutsos - Pavlo CMU SCS /615 Examples find ssn of students that work at least as hard as ssn=123 (ie., they take all the courses of ssn=123, and maybe more Faloutsos - Pavlo CMU SCS /615

69 Conclusions Relational model: only tables (‘relations’)
Faloutsos - Pavlo CMU SCS /615 Conclusions Relational model: only tables (‘relations’) relational algebra: powerful, minimal: 5 operators can handle almost any query! Faloutsos - Pavlo CMU SCS /615


Download ppt "Lecture #4: Relational Algebra"

Similar presentations


Ads by Google