Frågespråk mot relationsmodellen

Relevanta dokument
IT i Organisationer och Databasteknik. Frågespråk mot relationsmodellen

Informationssystem och Databasteknik. Frågespråk mot relationsmodellen

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL

IT i organisationer och Databasteknik, 2I-1033 HT2002. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Relationsdatabasdesign 2I-4067 HT99. Relationsalgebra. som resultat!

Databaser - Design och programmering. Operationer i relationsalgebra. Att söka ut data. Exempel DBschema. Att plocka ut data, forts

EMPS(NAME, SALARY, DEPT)

Föreläsning 5: Relationsmodellen

Relationsalgebra. Varför behöver jag lära mig relationsalgebra?!

Databasspråket SQL - online.

Grunderna i SQL del 1

Databasspråket SQL - online.

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen Lördag 8 juni kl

Föreläsning 4 Dagens föreläsning går igenom

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamen. Databasmetodik Lördag 27 september 2014 kl

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Frågeoptimering. Frågeoptimering kapitel 14

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Inst. för Data- och Systemvetenskap SU Maria Bergholtz. Tentamen. 21/ kl Inga hjälpmedel är tillåtna (annat än ordbok).

Tentamen EIT:DB Databastmetodik 11/ kl Lösningsförslag

Tentamen i Databasteknik

Karlstads Universitet, Datavetenskap 1

Lösningsförslag till Tentamen,

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Relationsmodellen och syntetisk databasdesign

Grunderna i SQL del 1

Tentamen i Databasteknik

Grunderna för relationsmodellen!

Databasspråket SQL - online.

Relationsalgebra. Relationsalgebra består av en mängd operatorer som tar en eller två relationer som input och producerar en ny relation som resultat.

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

Structured Query Language (SQL)

Databasspråket SQL - online.

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella

Lite om räkning med rationella uttryck, 23/10

Informationssystem och Databasteknik

Databasspråket SQL - online.

NORMALISERING. Mahmud Al Hakim

Frågespråk och SQL. nikos dimitrakas rum 2423

Konceptuella datamodeller

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

Denna uppdelning är ovanlig i Sverige De hela talen (Både positiva och negativa) Irrationella tal (tal som ej går att skriva som bråk)

Tentamen i Databasteknik

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Karlstads Universitet, Datavetenskap 1

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.

Exempel-Tentamen III

Lösningar till tentamen i EDAF75

Obligatorisk uppgift 5

Tentamen i Databasteknik

Databaser. Vad du ska lära dig: Ordlista

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

08/11/13. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Deadline på tisdag

Relationskalkyl (RK)

Structured query language (SQL)

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

Övningar i SQL. SQLAccess.doc Ove Lundgren

Introduktion C-programmering

Grammatik. BNF-grammatik

Språket Python - Del 1 Grundkurs i programmering med Python

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för?

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig?

Repetition C-programmering

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

Introduktion till frågespråket SQL (v0.91)

Tentamen för DD1370 Databasteknik och informationssystem

Databaser och. SQL, utsökningar mot en tabell

13/11/14. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Vad är en Databas?

Starta MySQL Query Browser

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media

Envägs variansanalys (ANOVA) för test av olika väntevärde i flera grupper

Informationssystem och databasteknik

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

TDDC77 Objektorienterad Programmering

Alfabeten, strängar och språk. String

IT i organisationer och databasteknik

Gränsvärdesberäkningar i praktiken

Användarhandledning för SQL- och fönsterfilter

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Uttryck och villkor. Föreläsning 2

Fortsättningskurs i programmering F 3. Algoritmer i programutveckling II Hugo Quisbert Flödesplaner med selektion

Övningshäfte 1: Logik och matematikens språk

Concepts learned this far. ER till relationer. ER till relationer. ER till relationer. TDDD12 Database Technology

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

Relationsdatabasdesign

Transkript:

HUND Mindy Ossi Frågespråk mot relationsmodellen Relationsalgebra Relationsalgebra Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Med hjälp av dessa operatorer kan andra (icke-primitiva) operatorer definieras: Icke-primitiva operatorer theta-join θ ekvi-join naturlig join X snitt division Tilldelning := Relationsalgebran är sluten: R op R 2 R relation relation relation ((R op R 2) op R ) op R 4 Tar en eller två tabeller som argument (indata). Producerar en ny tabell som resultat! 2

Projektion π - Unär operator = tar en tabell som indata - π, 2,...n (Relationsnamn) Vertikal delmängd av attribut, Man väljer ut ett antal kolumner attribut - π, Lön attribut (Relationsnamn) Omordning av attribut möjligt via π π Lön, (NSTÄLLD) Lön 000 20000 22000 0000 000 Per Kvist o Gren Sten Rot Nils Hed Eva erg Selektion σ - Unär operator Horisontelll delmängd av rader Man väljer ut ett antal rader baserat på något villkor σ villkor (Relationsnamn) Enkelt villkor: Kolumn θ kolumnvärde Kolumn θ kolumn där θ {=,, <, >,, } σ. Chef= Eva erg (NSTÄLLD) kolumn kolumn-värde Lön Chef vd Per Kvist 000 Eva erg Parfym o Gren 20000 Eva erg Parfym Nils Hed 0000 Eva erg Skor Eva erg 000 Eva erg Parfym 2. σchef=(nställd) Lön Chef vd kolumn kolumn Eva erg 000 Eva erg Parfym Sammansatt villkor: villkor operator villkor där operator {NOT, ND, OR}. Chef= Eva erg ND Lön>20000 ( NSTÄLLD ).σ Lön Chef vd Nils Hed 0000 Eva erg Skor 4 Eva erg 000 Eva erg Parfym 2

Kartesisk produkt (eller ibland * ) ska tolkas som alla rader i kombinerade med alla rader i m n m n a b c y a a y b b y c c y Kartesisk produkt, ett eempel till NSTÄLLD NSTÄLLD VDELNING Lön Chef vd namn Våning Per Kvist 000 Eva erg Parfym Leksaker Per Kvist 000 Eva erg Parfym Livsmedel Per Kvist 000 Eva erg Parfym Parfym Per Kvist 000 Eva erg Parfym Skor Per Kvist 000 Eva erg Parfym Trädgård Och så vidare på samma sätt... Eva erg 000 Eva erg Parfym Leksaker Eva erg 000 Eva erg Parfym Livsmedel Eva erg 000 Eva erg Parfym Parfym Eva erg 000 Eva erg Parfym Skor Eva erg 000 Eva erg Parfym Trädgård 2 2 2 2 Totalt har NSTÄLLD VDELNING 2 st rader! (NSTÄLLD har rader och VDELNING har rader = totalt * st rader). 6

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 7 θ JOIN ( theta-join ) där θ {=,, <, >,, } nställd nställd.vd nställd.vd = vdelning.vd vdelning.vd vdelning NSTÄLLD Pia Mia Ken vd VDELNING vd röd Ost Vin NSTÄLLD X VDELNING nställd.vd = vdelning.vd nst. vd. vd vd namn Pia Mia Ken röd Vin Vin Här bildas den nya tabellen genom att matcha kolumnvärden (här kolumen vd) från två tabeller. Om jämförelsevillkoret är = talar man om en equi-join. Observation: σ θ-villkor ( ) Α X θ-villkor 8 4

NTURL JOIN nställd NTURL JOIN vdelning nställd vdelning NSTÄLLD vd VDELNING vd NSTÄLLD vd X VDELNING namn Pia Mia Ken röd Ost Vin Pia Mia Ken röd Vin Vin Kombinerar två tabeller och väljer endast ut de radkombinationer som har samma värde på alla kolumner med samma namn (och datatyp). Dessutom tas bara EN av varje kolumn som förekommer i båda tabellerna med! 9 NULL Null-värden kan ge problem vid join. NSTÄLLD VDELNING Pnr nst.nr dress vd.nr vdelning vd.nr yv. Forskning 22222 Solsv. 6 Försäljn. yv. dmin. 44444 2 yv.7 X Solv. 7 NULL 66666 Y yv. NULL En join mellan anställda över vd.nr kommer att resultera i att de två sista anställda inte kommer med. eroende på omständigheterna kan detta vara vad som avsågs eller felaktigt. Pnr nst.nr dress vd.nr vdelning vd.nr yv. Forskning 22222 Solsv. 6 Försäljn. yv. Forskning 44444 2 yv.7 dmin 0

OUTER JOIN (s) id Ossi Karo Mindy Pudel NULL id Emir Lady Kaninta NULL X.=. id. id. Ossi (LEFT) OUTER (EQUI-) JOIN ON id. id. Ossi Karo Pudel NULL NULL Mindy NULL NULL NULL (RIGHT) OUTER (EQUI-) JOIN ON id. id. Ossi NULL NULL Emir Kaninta NULL NULL Lady NULL (FULL) OUTER (EQUI-) JOIN ON id. id. Ossi Karo Pudel NULL NULL Mindy NULL NULL NULL NULL NULL Emir Kaninta NULL NULL Lady NULL Mängdoperationer Union Snitt/Intersection Differens/Minus 2 6

Union compatibility Somliga av de relationsalgebraiska operatorerna kräver att de tabeller som de opererar på ska vara unionskompatibla. Detta betyder att de två tabellerna måste ha: samma grad (lika många attribut/kolumner) attribut som motsvarar varandra måste ha samma domän (datatyp) ( attributen som motsvarar varandra måste heta likadant, viktigt inför SQL men även här med avseende på namngivning av kolumner) UNION, SNITT och DIFFERENS är unionskompatibla operatorer. Ska man ta unionen av två tabeller måste tabellerna ha lika många kolumner och de par av kolumner som svarar mot varandra måste vara av samma typ (ha samma domän). UNION?.a.b.a.b a a a 2 a y b 2 b UNION?.a.b.a.b.c a a m a 2 a 2 n b 2 b 2 o UNION!.a.b a a y b.a.b b a m b UNION Kombinerar rader från två tabeller och tar med alla rader från båda tabellerna. Dubbletterna tas med bara en gång. Visa alla hundar (hund-rader) som ingår i antingen tabell eller tabell : Karo Mindy Ossi Pudel Dvärgta Emir Lady Morris Schäfer Welsh Corgie lla rader som finns i plus alla rader som finns i Karo Mindy Ossi Emir Lady Morris Pudel Dvärgta Schäfer Welsh Corgie Observation: Β = Β Α 4 7

Karo Mindy Ossi Pudel Dvärgta Emir Lady Morris UNION Visa alla hundar (hund-rader) som är taar i antingen tabell eller tabell : σ = σ = σ = = (σ =()) (σ =()) Schäfer Welsh Corgie Karo Emir SNITT (INTERSECT) Kombinerar rader från två tabeller och tar med alla rader som förekommer i båda tabellerna. Dubbletterna tas med bara en gång. Visa alla hundar (hund-rader) som ingår i ÅDE tabell och tabell : Karo Mindy Ossi Pudel Dvärgta Emir Lady Morris Schäfer Welsh Corgie lla rader som finns i både och Observation I : Β = Β Α 6 8

SNITT Visa taar som ingår i både tabell och tabell : σ = = σ = = (σ = = ()) (σ = = ()) Karo Mindy Ossi Pudel Dvärgta Emir Lady Morris Schäfer Welsh Corgie 7 Differens - Kombinerar två tabeller och tar med alla rader som finns i den första men inte i den andra. Visa alla hundar (hund-rader) som finns i tabell men inte i tabell : - MINUS Karo Mindy Ossi Pudel Dvärgta Emir Lady Morris Schäfer Welsh Corgie MINUS Karo Mindy Pudel Ossi Dvärgta lla tupler som finns i men inte i Observation: - - 8 9

Tilldelning Kan användas för att dela upp stora komplea satser. Kan också användas för att ändra namn på en tabell och dess kolumner. Pers Person Pers2(id,name,length,weight,country) Person Pers och Pers2 kan (ska) användas i nya uttryck. Tilldelning kan möjliggöra återanvändning. 9 Tilldelning eller inte tilldelning Skriv ett relationsalgebraiskt uttryck som ger namn och lön för de anställda som arbetar på andra våningen. NSTÄLLD Metod I (flera steg): Rätt_avdelningar σ Våning=2 (VDELNING) Rätt_anställda NSTÄLLD X vd=namn Rätt_avdelningar Rätt_uppgifter_om_anställda π, Lön (Rätt_anställda) Metod II (ett enda långt relationsalgebraiskt uttryck): π, Lön (NSTÄLLD X vd=namn (σ Våning=2 (VDELNING))) 20 0

ä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. ρ Pers Pers Person ρ Pers4(id,name,length,weight,country) Person Med hjälp av tilldelningsoperatorn och projektionsoperatorn kan man åstadkomma samma resultat. 2 CR Licencenr Colour Owner C2 lue Lisa Red Lisa 222 Red Oscar MMM Yellow en Eempeldatabas PERSON Pname Weight Pddress Lisa Solv. 2 Oscar 6 Solv. en 7 ygatan WORKS_T Person Company Lisa Telia Oscar Telia en Ramirent Oy en Telia COMPNY CName Founded Homepage Telia 200 www.telia.se Ramirent Oy 989 www.rr.fi 22

Differens fortsättning... Differens är användbart för frågor av typ: Ta fram alla som inte gjort ngt/helt saknar en viss egenskap etc. T e Ta fram alla personer som inte har någon bil CR Licencenr Colour Owner C2 lue Lisa Red Lisa 222 Red Oscar MMM Yellow en Notera att Owner utgör främmande nyckel mot PERSON tabellen PERSON. PName Weight Paddress Lisa Solv. 2 Oscar 6 Solv. en 7 ygatan. Skapa en relation som som innehåller alla personer som äger en bil: CR_OWNER(Pname) := π Owner (CR) 2. Dra sen bort denna mängd tupler från relationen PERSON (dvs mängden av alla personer): HVE_NO_CR := π PName (PERSON) - CR_OWNER Observera att man måste projicera ut PName från PERSON och Owner Från CR eftersom differens kräver att de ingående relationerna ska vara unionskompatibla! 2 Differens övning Skriv ett relationsalgebraiskt uttryck som tar fram alla personer som inte ägt någon röd bil: CR Licencenr Colour Owner C2 lue Lisa Red Lisa 222 Red Oscar MMM Yellow en Notera att Owner utgör främmande nyckel mot PERSON tabellen PERSON. PName Weight Paddress Lisa Solv. 2 Oscar 6 Solv. en 7 ygatan. Skapa en relation som som innehåller alla som ägt en röd bil 2. Dra sen bort denna relation från relationen PERSON (dvs mängden av alla personer = alla raderna i tabellen PERSON). Tänk på att när man tar en relation minus en relation måste de två relationerna vara unionskompatibla! 24 2

ggregerings-/grupperingsfunktion ƒ För att utföra en eller flera funktioner på hela tabellen: ƒ aggregatfunktion(kolumn)(tabell) Resulterar i ett värde per funktion. För att utföra en eller flera funktioner på radgrupper: grupperingskolumn(er) ƒ aggregatfunktion(kolumn)(tabell) 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. 2 ggregat-funktioner i relationsalgebra: MIN, MX, COUNT, SUM,... PERSON Pname Weight Pddress Lisa Solv. 2 Oscar 6 Solv. en 7 ygatan WORKS_T Person Company Lisa Telia Oscar Telia en Ramirent Oy en Telia G ggregatfunktion(kolumn) (TELL) Vilket är den minsta vikten i tabellen PERSON? G MIN(Weight)(Person) Vad är summan av alla personers vikter? G SUM(Weight)(Person) 26

ggregat-funktioner i relationsalgebra: MIN, MX, COUNT, SUM,... PERSON Pname Weight Pddress Lisa Solv. 2 Oscar 6 Solv. en 7 ygatan WORKS_T Person Company Lisa Telia Oscar Telia en Ramirent Oy en Telia Grupperande attribut G ggregatfunktion(kolumn) (TELL) Hur många anställda har varje företag? Company G COUNT(Person) (WORKS_T) Hur många rader finns det i tabellen WORKS_T? G COUNT(Person) (WORKS_T) Hur många förtag har fler än anställd? TEMP(Företag, ntal):= Company G COUNT(Person) (WORKS_T)) SVR := σ ntal > (TEMP) 27 R y y m n o m n m n o Division (Kvot) S m n o R S tt dela tabellen R med tabellen S innebär följande: För varje kombination av värden i tabell R på de kolumner som inte finns i tabell S, ta med de värden som finns i kombination med alla värden i alla rader i tabell S. Vilka kolumner kommer resultatet att innehålla: Jo R - S dvs de kolumner som förekommer i R men inte i S. I vårt fall blir det kolumnen i R. Vilka kolumn-värden kommer med i kolumnen? Jo alla de -värden i R som är relaterade till LL - värden i S. I vårt fall är detta sant för -värden och. Dvs har ett -värde för både m,n och o. Det samma gäller. -värdet y kommer inte med eftersom det saknar ett -värde, nämligen o. 28 4

R S 2 a 2 a a 2 a 2 a a 2 a 2 a 2 Resultat Kvot, forts. R(,..., n, n+,..., n+m) S( n+,..., n+m) R S = Resultat(,..., n) Varje,... n - del av en R-tuppel ( huvudet ) har n+,... n+m - del ( svansen ) som är lika med var och en av S-tupplerna, till vänster är n= och m=2. För att kunna ta kvoten mellan två relationer måste nämnarens kolumner uppfylla kraven på unionskompatibilitet med en delmängd av täljarens kolumner (mao nämnaren måste vara lika med svansen i täljaren) 29 R y y m n o m n m n o Kandidatvärden y S m n o Kvot kan skrivas om i termer av andra relationsalgebraiska operatorer: Kandidatvärden π (R) Kombinering π ((Kandidatvärden X S) - R) Kvoten Kandidatvärden - Kombinering Kandidatvärden X S m n o y m y n y o m n o Kombinering y Kvoten R S 0

Kvot fortsättning... Kvot är användbart för frågor av typ: Ta fram alla som gjort allt/har alla egenskaperna. T e Ta fram de företag som har alla personer anställda (egentligen lika med uppgiften att ta fram alla de kolumn-värden i tabellen WORKS_T som är relaterade till (= förekommer i en rad som har en främmande nyckel mot) alla rader i tabellen PERSON ) PERSON Pname Weight Pddress Lisa Solv. 2 Oscar 6 Solv. EMPLOYEES (Person) := π Pname (PERSON) en 7 ygatan HVE_THEM_LL := WORKS_T EMPLOYEES WORKS_T Person Company Lisa Telia Oscar Telia en Ramirent Oy en Telia COMPNY CName Founded Homepage Telia 200 www.telia.se Ramirent Oy 989 www.rr.fi Tumregler Tänk ett steg i taget (en operation i taget). Kontrollera alltid (inför varje operation) vilka kolumner som ingår i tabellerna. Går det överhuvudtaget att använda en viss operation, är tabellerna unionskompatibla t e? Om inte, fia till unionskompatibilitet, t e genom att använda tilldelning och projektion! Tänk på i vilken ordning operationerna utförs. Styr med parenteser. nvänd tilldelning för att dela upp stora satser i mindre delar. nvänd projektioner för att ta bort onödiga kolumner. Försiktigt dock att inte ta bort kolumner som ni behöver senare. 2 6