Presentation laddar. Vänta.

Presentation laddar. Vänta.

Relationsalgebra nikos dimitrakas rum 6626

Liknande presentationer


En presentation över ämnet: "Relationsalgebra nikos dimitrakas rum 6626"— Presentationens avskrift:

1 Relationsalgebra nikos dimitrakas nikos@dsv.su.se 08-162099 rum 6626
Connolly/Begg (4th edition) kapitel 4.1 (och ) (3rd edition) kapitel 4.1 (och )

2 Relationsalgebra Ett språk för att ställa frågor mot en relationsdatabas (ett frågespråk). Ett slutet språk: Ett uttryck tar emot en eller flera tabeller och resulterar i en ny tabell. Relationsalgebran består av ett antal operatorer/operationer som kan delas in på olika sätt: Primitiva vs icke-primitiva (icke-primitiva kan återskapas med kombinationer av primitiva). Unära vs binära (jobbar med en eller två tabeller som källa). Unära operationer har förtur när man inte styr med parenteser. Ett procedurellt språk – Man berättar hur, inte vad! Dubblettfritt.

3 Operatorer/Operationer
Projektion/Projection Π Selektion/Selection σ Cartesisk produkt/Cartesian product x Join ⋈ q Union ⋃ Differens/Difference/Minus - Snitt/Intersection ⋂ Aggregerings-/Grupperingsfunktion / Aggregate/Group Function ƒ G Tilldelning/Assignment ← Namnändring/Rename ρ Division ÷ Primitiva Primitiva

4 Unära vs Binära operationer
Unära operationer: parametrar Operationssymbol parametrar Källa Binära operationer: Källa1 Operationssymbol parametrar Källa2 Unära operationer har förtur när turordningen inte styrs med parenteser

5 Exempeldatabas

6 Exempeldata Person FilmSkådis Film pid pnamn längd vikt land 1
John Travolta 175 80 USA 2 Nicolas Cage 176 75 3 Sean Connery 179 Scottland 4 Ed Harris 173 70 5 Jim Carrey 171 69 Canada 6 Laura Linney 168 63 7 Clint Eastwood 174 79 8 Gene Hackman 87 9 John Cusack 10 Sean Penn 11 Kevin Bacon 67 12 Jennifer Esposito 166 62 13 John McTiernan 162 93 14 Dominic Sena 188 84 15 Nora Ephron 16 Jon Amiel 164 England 17 Catherine Zeta-Jones Wales 18 Peter Weir 81 Australia FilmSkådis fnamn pid Basic 1 Swordfish Michael Face/Off 2 Con Air 9 The Rock 3 4 Entrapment 17 The Truman Show 5 6 Congo Absolute Power 7 8 Mystic River 10 11 Space Cowboys Film fnamn år regissör Basic 2003 13 Swordfish 2001 14 Michael 1996 15 Face/Off 1997 Con Air The Rock 16 Entrapment 1999 The Truman Show 1998 18 Congo 1995 Absolute Power Mystic River 7 Space Cowboys 2000

7 Projektion Π Väljer ut en eller flera kolumner från en tabell/relation. Visa namn på alla filmer! fnamn Basic Swordfish Michael Face/Off Con Air The Rock Entrapment The Truman Show Congo Absolute Power Mystic River Space Cowboys Π fnamn Film

8 Projektion och dubbletter
I relationsalgebra finns det aldrig dubbletter. Visa namn på alla filmer med skådespelare! fnamn Basic Swordfish Michael Face/Off Con Air The Rock Entrapment The Truman Show Congo Absolute Power Mystic River Space Cowboys Π fnamn FilmSkådis

9 Projektion Π Visa namn och land för alla personer!
pnamn land John Travolta USA Nicolas Cage Sean Connery Scottland Ed Harris Jim Carrey Canada Laura Linney Clint Eastwood Gene Hackman John Cusack Sean Penn Kevin Bacon Jennifer Esposito John McTiernan Dominic Sena Nora Ephron Jon Amiel England Catherine Zeta-Jones Wales Peter Weir Australia Projektion Π Visa namn och land för alla personer! Π pnamn, land Person

10 Selektion σ σ vikt > 75 Person
Väljer ut endast en delmängd av raderna från en tabell/relation. Visa alla personer som väger mer än 75! σ vikt > 75 Person pid pnamn längd vikt land 1 John Travolta 175 80 USA 7 Clint Eastwood 174 79 8 Gene Hackman 171 87 13 John McTiernan 162 93 14 Dominic Sena 188 84 16 Jon Amiel 164 England 18 Peter Weir 168 81 Australia

11 Selektion σ σ land=’USA’ AND längd > 175 Person
Visa alla personer som kommer från USA och är längre än 175! σ land=’USA’ AND längd > 175 Person pid pnamn längd vikt land 2 Nicolas Cage 176 75 USA 14 Dominic Sena 188 84

12 Cartesisk produkt x Tabell1 x Tabell2
Kombinerar två tabeller/relationer med varandra. Kombinerar alla rader från den ena tabellen med alla rader i den andra tabellen. Om den ena tabellen har 20 rader och 5 kolumner och den andra tabellen har 10 rader och 4 kolumner blir resultatet en tabell med 200 rader och 9 kolumner. Tabell1 x Tabell2 Tabell1kolumn1 Tabell1kolumn2 Tabell2kolumn1 Tabell2kolumn2 Tabell1Rad1 Tabell2Rad1 Tabell2Rad2 Tabell1Rad2

13 JOIN ⋈ q Kombinerar två tabeller och väljer ut endast de radkombinationer som uppfyller ett villkor. Typer av JOIN: Theta-JOIN Equi-JOIN Natural JOIN och andra

14 Theta-JOIN Film q regissör = pid Person Film ⋈ regissör = pid Person
Kombinerar två tabeller och väljer ut endast de radkombinationer som uppfyller ett villkor. Visa varje films regissör! eller Film q regissör = pid Person Film ⋈ regissör = pid Person fnamn år regissör pid pnamn längd vikt land Basic 2003 13 John McTiernan 162 93 USA Swordfish 2001 14 Dominic Sena 188 84 Michael 1996 15 Nora Ephron 174 62 Face/Off 1997 Con Air The Rock 16 Jon Amiel 164 79 England

15 s år > 2000 (Film q regissör = pid Person)
Theta-JOIN Visa regissören till filmer gjorda efter år 2000! Film q år > 2000 AND regissör = pid Person fnamn år regissör pid pnamn längd vikt land Basic 2003 13 John McTiernan 162 93 USA Swordfish 2001 14 Dominic Sena 188 84 Mystic River 7 Clint Eastwood 174 79 Skulle förstås kunna skrivas på andra sätt, t ex: eller (s år > 2000 Film) q regissör = pid Person s år > 2000 (Film q regissör = pid Person)

16 Equi-JOIN Film q regissör = pid Person
Ett speciellt fall av theta-JOIN då villkoret är en likhet. Det föregående exemplet är en equi-JOIN. Film q regissör = pid Person

17 Natural JOIN Film NATURAL JOIN FilmSkådis Film ⋈ FilmSkådis
Kombinerar två tabeller och väljer ut endast de radkombinationer som har samma värde på alla kolumner med samma namn (och datatyp). Visa varje films skådespelare (pid)! eller Film NATURAL JOIN FilmSkådis fnamn år regissör pid Basic 2003 13 1 Swordfish 2001 14 Michael 1996 15 Face/Off 1997 2 Film ⋈ FilmSkådis Obs! Gemensamma kolumner blir kvar bara en gång

18 Unionskompatibilitet
Mängdoperationer som UNION, DIFFERENCE och INTERSECTION kräver att de två mängder som ingår i operationen är kompatibla. Unionskompatibilitet innebär: Lika många kolumner Kolumner i samma ordning Kolumner av samma datatyper

19 Mängdoperationer Union Snitt/Intersection Differens/Minus

20 s längd < 170 Person ⋃ s vikt > 80 Person
Union ⋃ Kombinerar två tabeller och tar med alla rader från båda tabellerna. Dubbletterna tas med bara en gång. Visa personer som är kortare än 170 eller väger mer än 80! s längd < 170 Person ⋃ s vikt > 80 Person pid pnamn längd vikt land 6 Laura Linney 168 63 USA 8 Gene Hackman 171 87 12 Jennifer Esposito 166 62 13 John McTiernan 162 93 14 Dominic Sena 188 84 16 Jon Amiel 164 79 England 18 Peter Weir 81 Australia

21 s längd < 170 Person ⋂ s vikt > 80 Person
Snitt ⋂ Kombinerar två tabeller och tar med alla rader som finns i båda tabellerna. Visa personer som är kortare än 170 och väger mer än 80! s längd < 170 Person ⋂ s vikt > 80 Person pid pnamn längd vikt land 13 John McTiernan 162 93 USA 18 Peter Weir 168 81 Australia

22 s längd < 170 Person - s vikt > 80 Person
Differens - Kombinerar två tabeller och tar med alla rader som finns i den första men inte i den andra. Visa personer som är kortare än 170 och inte väger mer än 80! s längd < 170 Person - s vikt > 80 Person pid pnamn längd vikt land 6 Laura Linney 168 63 USA 12 Jennifer Esposito 166 62 16 Jon Amiel 164 79 England

23 Mängdoperationer Mängdoperationer kan i vissa fall uttryckas utan mängdoperatorer. Union kan uttryckas med hjälp av OR-villkor Snitt kan uttryckas med hjälp av AND-villkor Differens kan uttryckas med hjälp av NOT-villkor

24 Aggregerings-/Grupperingsfunktion ƒ
Används för att göra en beräkning på en grupp rader. Exempel på frågor som man löser med gruppering/aggregering: Visa antal personer! Visa medelvikten för alla personer från USA! Visa antal skådespelare i varje film! Visa antal filmer gjorda varje år! Visa hur många filmer som görs varje år i genomsnitt! Visa den högsta skådespelaren i Mystic River!

25 Aggregerings-/Grupperingsfunktion ƒ
För att utföra en eller flera funktioner på hela tabellen: Resulterar i ett värde per funktion. ƒ funktion(er) Tabell För att utföra en eller flera funktioner på radgrupper: Grupperar raderna så att alla rader i varje grupp har samma värde på de valda kolumnerna (som anges till vänster om symbolen). Resulterar i ett värde per funktion och en rad per grupp. kolumn(er) ƒ funktion(er) Tabell

26 Aggregatfunktioner (från SQL)
COUNT(*) räknar antalet rader i en tabell COUNT(kolumn) räknar antalet värden i en kolumn MAX(kolumn) ger det största värdet i en kolumn MIN(kolumn) ger det minsta värdet i en kolumn Bara aritmetiska kolumner: SUM(kolumn) summerar värdena i en kolumn AVG(kolumn) tar genomsnittet av värdena i en kolumn VARIANCE(kolumn) räknar ”variationen” av värdena i en kolumn STDEV(kolumn) räknar standard avvikelse av värdena i en kolumn

27 Aggregerings-/Grupperingsfunktion ƒ
Visa antal personer! ƒCOUNT(pid) Person Visa längden på den längsta personen! ? 18 ƒMAX(längd) Person Visa antal filmer! ƒCOUNT(*) Film ? 188 ? 12 Kolumner skapade av funktioner har inget namn!

28 Aggregerings-/Grupperingsfunktion ƒ
Visa antal skådespelare i varje film! fnamn ? Basic 1 Swordfish Michael Face/Off 2 Con Air The Rock 3 Entrapment The Truman Show Congo Absolute Power 4 Mystic River Space Cowboys fnamn ƒ COUNT(pid) FilmSkådis Visa antal filmer gjorda varje år! år ƒCOUNT(*) Film år ? 2003 2 2001 1 1996 1997 3 1999 1998 1995 2000

29 Tilldelning ← Pers1 ← Person
Kan användas för att dela upp stora komplexa satser. Kan också användas för att ändra namn på en tabell och dess kolumner. Pers1 ← Person Pers2(id,name,length,weight,country) ← Person Efter en tilldelning kan man inte fortsätta i samma uttryck. Pers1 och Pers2 kan dock användas i nya uttryck. Tilldelning kan möjliggöra återanvändning.

30 Tilldelning ← Visa antal personer! Visa antal filmer gjorda varje år!
R(antal)  ƒ COUNT(pid) Person antal 18 Visa antal filmer gjorda varje år! R(year, amount)  år ƒ COUNT(*) Film year amount 2003 2 2001 1 1996 1997 3 1999 1998 1995 2000

31 ρ Pers4(id,name,length,weight,country) Person
Namnändring ρ Kan också användas för att ändra namn på en tabell och dess kolumner. Kan också användas för att ändra kolumnernas ordning. ρ Pers3 Person ρ Pers4(id,name,length,weight,country) Person ρ pid/id,pnamn/name,land/country,längd/length,vikt/weight Person Med hjälp av tilldelningsoperatorn och projektionsoperatorn kan man åstadkomma samma resultat.

32 Division ÷ Kombinerar två tabeller enligt följande:
För varje kombination av värden i den första tabellen på kolumner som inte finns i den andra tabellen, ta med de värden som finns i kombination med alla värden i alla rader i den andra tabellen. Exempel på frågor som man löser med division: Visa skådespelare som spelar i alla filmer regisserade av Jon Amiel! Visa vem som alltid spelar tillsammans med Catherine Zeta-Jones!

33 Division ÷ ÷ = X kan vara en eller flera kolumner
Y 1 a 2 b d 3 c 4 Y a b d X 2 4 ÷ = X kan vara en eller flera kolumner Y kan vara en eller flera kolumner

34 JA ← Π pid s pnamn = ’Jon Amiel’ Person
Division ÷ Visa skådespelare som spelar i alla filmer regisserade av Jon Amiel! JA ← Π pid s pnamn = ’Jon Amiel’ Person JAFilm ← Π fnamn(JA q pid = regissör Film) FilmSkådis ÷ JAFilm pid 3

35 Tumregler Tänk ut vad ni vill göra innan ni börjar skriva satsen.
Tänk ett steg i taget (en operation i taget). Kontrollera alltid (inför varje operation) vilka kolumner som finns i källan. Tänk på ordningen som operationerna utförs. Styr med parenteser. Använd tilldelning för att dela upp stora satser i mindre delar. Använd projektioner för att ta bort onödiga kolumner. Försiktigt dock att inte ta bort kolumner som ni behöver senare.

36 Övningar Ta fram filmer och regissörs namn!
Visa filmer gjorda 2000 eller 2001! Vilka skådespelare har spelat i filmer från 1997?

37 Övningar Visa alla regissörer som väger mer än 70!
Hur många filmer har varje regissör gjort? Visa namn och antal!

38 Övningar I vilka filmer spelar alla skådespelare från Australien?
Vilken film har inga skådespelare från USA?

39 Övningar Från hur många länder finns det skådespelare i varje film?
Vilken film har regisserats av en av skådespelarna i filmen?


Ladda ner ppt "Relationsalgebra nikos dimitrakas rum 6626"

Liknande presentationer


Google-annonser