Relationsalgebra nikos dimitrakas rum 6626

Slides:



Advertisements
Liknande presentationer
Att förstå anonymiteten (översättning från
Advertisements

Talföljder formler och summor
Här ser ni några sidor som hjälper er att lösa uppgifterna:
KILA – FLATÖ DIKNINGSFÖRETAG 2004 SAMFÄLLIGHETSFÖRENINGS
Kap 1 - Algebra och linjära modeller
Relationsdatabasdesign
hej och välkomna EKVATIONER Ta reda på det okända talet.
MS Excel 2007 Lektion 3 1 Copyright, Mahmud Al Hakim, 2008.
MS Excel 2010 – Dag 2 Mahmud Al Hakim
1 Medarbetarenkät 2011 • 573 svar. 2 Kön 3 Jag är knuten till en klass, undervisningsgrupp eller barngrupp.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
DATABASHANTERING för programmerare
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Leif Håkansson’s Square Dancer Rotation
Resultat från SWEA Framtidsenkät December Januari 2009 REGION ANALYS: MAME Korta version 13 april 2009 Kontakt med enkätgruppen:
Projektföljeforskning
MS Excel 2007 Dag 1 Lärare: Mahmud Al Hakim. Agenda 1.Börja arbeta med Excel Hantera arbetsböcker 3.Formler 4.Formatera 5.Diagram Att läsa: sid.
MS Excel 2010 – Dag 1 Mahmud Al Hakim. Kursens innehåll 2 DagInnehåll 1 Introduktion till Excel 2010 Hantera arbetsböcker Formler Formatering Litteratur:
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Elkraft 7.5 hp distans: Kap. 3 Likströmsmotorn 3:1
LANDSTINGSDIREKTÖRENS STAB Regional utveckling BILD 1 Resultat av enkät till landstingspolitiker
Svenska WebDewey Introduktion
Skånedatabasen & Region Skånes tillgänglighetsmodell
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Programmering B PHP Lektion 2
INFÖR NATIONELLA PROVET
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
15 x 25 meter. Skriv banenavn Skriv designet af Skriv dato MÅL sväng vänster 6 sväng höger 5 runt 7 Vänster runt hund höger runt.
Avgiftsstudie Nils Holgersson år 2007 Bild 1 Baserat på rapportversion
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Beräkna en ekvation (metod 1)
Hittarps IK Kartläggningspresentation år 3.
Beräkna en ekvation (metod 1)
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Det handlar om multiplikation
TÄNK PÅ ETT HELTAL MELLAN 1-50
Rollfördelning i funktionärsbåset Vem gör vad i Danicahallen.
DATABASHANTERING för programmerare Lektion 4 Mahmud Al Hakim
Grundskolan år 9 Droger och spel 2008 BILD 1 Elever som röker (dagligen eller ibland)
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
Enkätresultat för Fritidshem Elever 2014 Skola:Fritidselever, Gillberga skola.
Grundskola Föräldrar 2013 Grundskoleenkät - Föräldrar Enhet:Gillberga skola.
Best pictures on the internet 2007 Awards 1http:// (s), (v), och (mp) i Norrköping, gillar inte att vi använder grundlagarna.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Täckningsgrad Dec 2014 – feb 2015 Täckningsgrad Dec 2014 – feb 2015.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Munkedal 2009 Sveriges Kommuner och Landsting Signild Östgren Leif Klingensjö.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Gymnasieskolan år 2 Droger och spel 2008 BILD 1 Elever som röker (dagligen eller ibland)
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
DATABASHANTERING för programmerare Lektion 6 Mahmud Al Hakim
DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
När infaller Julafton och hur ofta?
Presentationens avskrift:

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

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.

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

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

Exempeldatabas

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

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

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

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

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

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

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

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

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 …

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)

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

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

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

Mängdoperationer Union Snitt/Intersection Differens/Minus

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

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

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

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

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!

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

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

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!

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

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.

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

ρ 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.

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!

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

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

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.

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

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

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

Ö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?