Presentation laddar. Vänta.

Presentation laddar. Vänta.

MODB v t2007 nikos dimitrakas 1 Relationsalgebra Connolly/Begg (4th edition) kapitel 4.1 (och 21.3.1) (3rd edition) kapitel 4.1 (och 20.3.1) nikos dimitrakas.

Liknande presentationer


En presentation över ämnet: "MODB v t2007 nikos dimitrakas 1 Relationsalgebra Connolly/Begg (4th edition) kapitel 4.1 (och 21.3.1) (3rd edition) kapitel 4.1 (och 20.3.1) nikos dimitrakas."— Presentationens avskrift:

1 MODB v t2007 nikos dimitrakas 1 Relationsalgebra Connolly/Begg (4th edition) kapitel 4.1 (och ) (3rd edition) kapitel 4.1 (och ) nikos dimitrakas rum 6626

2 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 3 Operatorer/Operationer •Projektion/Projection Π •Selektion/Selection σ •Cartesisk produkt/Cartesian product x •Join ⋈  •Union ⋃ •Differens/Difference/Minus - •Snitt/Intersection ⋂ •Aggregerings-/Grupperingsfunktion / Aggregate/Group Function ƒ G •Tilldelning/Assignment ← •Namnändring/Rename ρ •Division ÷ Primitiva

4 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 5 Exempeldatabas

6 MODB v t2007 nikos dimitrakas 6 fnamnårregi ssör Basic Swordfish Michael Face/Off Con Air The Rock Entrapment The Truman Show Congo Absolute Power Mystic River Space Cowboys pidpnamnlängdviktland 1John Travolta17580USA 2Nicolas Cage17675USA 3Sean Connery17975Scottland 4Ed Harris17370USA 5Jim Carrey17169Canada 6Laura Linney16863USA 7Clint Eastwood17479USA 8Gene Hackman17187USA 9John Cusack17570USA 10Sean Penn17469USA 11Kevin Bacon17167USA 12Jennifer Esposito16662USA 13John McTiernan16293USA 14Dominic Sena18884USA 15Nora Ephron17462USA 16Jon Amiel16479England 17Catherine Zeta-Jones17570Wales 18Peter Weir16881Australia fnamnpid Basic1 Swordfish1 Michael1 Face/Off1 2 Con Air2 9 The Rock2 3 4 Entrapment3 17 The Truman Show5 6 Congo6 Absolute Power4 7 8 Mystic River10 Mystic River11 Space Cowboys7 Absolute Power6 Person Film FilmSkådis

7 MODB v t2007 nikos dimitrakas 7 Projektion Π Π fnamn Film 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

8 MODB v t2007 nikos dimitrakas 8 Projektion och dubbletter Π fnamn FilmSkådis 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

9 MODB v t2007 nikos dimitrakas 9 Projektion Π Visa namn och land för alla personer! pnamnland John TravoltaUSA Nicolas CageUSA Sean ConneryScottland Ed HarrisUSA Jim CarreyCanada Laura LinneyUSA Clint EastwoodUSA Gene HackmanUSA John CusackUSA Sean PennUSA Kevin BaconUSA Jennifer EspositoUSA John McTiernanUSA Dominic SenaUSA Nora EphronUSA Jon AmielEngland Catherine Zeta-JonesWales Peter WeirAustralia

10 MODB v t2007 nikos dimitrakas 10 Selektion σ 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 pidpnamnlängdviktland 1John Travolta17580USA 7Clint Eastwood17479USA 8Gene Hackman17187USA 13John McTiernan16293USA 14Dominic Sena18884USA 16Jon Amiel16479England 18Peter Weir16881Australia

11 MODB v t2007 nikos dimitrakas 11 Selektion σ Visa alla personer som kommer från USA och är längre än 175! σ land=’USA’ AND längd > 175 Person pidpnamnlängdviktland 2Nicolas Cage17675USA 14Dominic Sena18884USA

12 MODB v t2007 nikos dimitrakas 12 Cartesisk produkt x 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 Tabell1kolumn1Tabell1kolumn2…Tabell2kolumn1Tabell2kolumn2… Tabell1Rad1Tabell2Rad1 Tabell1Rad1Tabell2Rad2 Tabell1Rad1… Tabell1Rad2Tabell2Rad1 ……

13 MODB v t2007 nikos dimitrakas 13 JOIN ⋈  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 MODB v t2007 nikos dimitrakas 14 Theta-JOIN Kombinerar två tabeller och väljer ut endast de radkombinationer som uppfyller ett villkor. Visa varje films regissör! eller Film  regissör = pid Person Film ⋈  regissör = pid Person fnamnårregissörpidpnamnlängdviktland Basic John McTiernan16293USA Swordfish Dominic Sena18884USA Michael Nora Ephron17462USA Face/Off Dominic Sena18884USA Con Air Dominic Sena18884USA The Rock Jon Amiel16479England ……………………

15 MODB v t2007 nikos dimitrakas 15 Theta-JOIN Visa regissören till filmer gjorda efter år 2000! Film  år > 2000 AND regissör = pid Person fnamnårregissörpidpnamnlängdviktland Basic John McTiernan16293USA Swordfish Dominic Sena18884USA Mystic River200377Clint Eastwood17479USA Skulle förstås kunna skrivas på andra sätt, t ex: eller (  år > 2000  Film)  regissör = pid Person  år > 2000  (Film  regissör = pid Person)

16 MODB v t2007 nikos dimitrakas 16 Equi-JOIN Ett speciellt fall av theta-JOIN då villkoret är en likhet. Det föregående exemplet är en equi-JOIN. Film  regissör = pid Person

17 MODB v t2007 nikos dimitrakas 17 Natural JOIN 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 ⋈  FilmSkådis fnamnårregissörpid Basic Swordfish Michael Face/Off Face/Off ………… Film NATURAL JOIN FilmSkådis Obs! Gemensamma kolumner blir kvar bara en gång

18 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 19 Mängdoperationer Union Snitt/Intersection Differens/Minus

20 MODB v t2007 nikos dimitrakas 20 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!  längd 80 Person pidpnamnlängdviktland 6Laura Linney16863USA 8Gene Hackman17187USA 12Jennifer Esposito16662USA 13John McTiernan16293USA 14Dominic Sena18884USA 16Jon Amiel16479England 18Peter Weir16881Australia

21 MODB v t2007 nikos dimitrakas 21 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!  längd 80 Person pidpnamnlängdviktland 13John McTiernan16293USA 18Peter Weir16881Australia

22 MODB v t2007 nikos dimitrakas 22 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!  längd 80 Person pidpnamnlängdviktland 6Laura Linney16863USA 12Jennifer Esposito16662USA 16Jon Amiel16479England

23 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 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 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 MODB v t2007 nikos dimitrakas 27 Aggregerings-/Grupperingsfunktion ƒ Visa antal personer! ƒ COUNT(pid) Person ? 18 Visa antal filmer! ƒ COUNT(*) Film ? 12 Visa längden på den längsta personen! ƒ MAX(längd) Person ? 188 Kolumner skapade av funktioner har inget namn!

28 MODB v t2007 nikos dimitrakas 28 Aggregerings-/Grupperingsfunktion ƒ Visa antal skådespelare i varje film! fnamn ƒ COUNT(pid) FilmSkådis Visa antal filmer gjorda varje år! år ƒ COUNT(*) Film fnamn? Basic1 Swordfish1 Michael1 Face/Off2 Con Air2 The Rock3 Entrapment2 The Truman Show2 Congo1 Absolute Power4 Mystic River2 Space Cowboys1 år?

29 MODB v t2007 nikos dimitrakas 29 Tilldelning ← 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 MODB v t2007 nikos dimitrakas 30 Tilldelning ← Visa antal personer! R(antal)  ƒ COUNT(pid) Person antal 18 Visa antal filmer gjorda varje år! R(year, amount)  år ƒ COUNT(*) Film yearamount

31 MODB v t2007 nikos dimitrakas 31 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 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 33 Division ÷ XY 1a 2a 2b 2d 3b 3c 3d 4a 4b 4c 4d ÷ Y a b d = X 2 4 •X kan vara en eller flera kolumner •Y kan vara en eller flera kolumner

34 MODB v t2007 nikos dimitrakas 34 Division ÷ Visa skådespelare som spelar i alla filmer regisserade av Jon Amiel! JA ← Π pid  pnamn = ’Jon Amiel’ Person JAFilm ← Π fnamn (JA  pid = regissör Film) FilmSkådis ÷ JAFilm JA ← Π pid  pnamn = ’Jon Amiel’ Person JAFilm ← Π fnamn (JA  pid = regissör Film) FilmSkådis ÷ JAFilm pid 3

35 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 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 MODB v t2007 nikos dimitrakas 38 Övningar •I vilka filmer spelar alla skådespelare från Australien? •Vilken film har inga skådespelare från USA?

39 MODB v t2007 nikos dimitrakas 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 "MODB v t2007 nikos dimitrakas 1 Relationsalgebra Connolly/Begg (4th edition) kapitel 4.1 (och 21.3.1) (3rd edition) kapitel 4.1 (och 20.3.1) nikos dimitrakas."

Liknande presentationer


Google-annonser