210 likes | 381 Views
Världen. Delmängd. bibliotek låntagare. skola elev. Modell. lån. kurs. bok. lärare ämne. bibliotek. ((bNamn), adress). skola. ((sNr), adress).
E N D
Världen Delmängd bibliotek låntagare skola elev Modell lån kurs bok lärare ämne bibliotek ((bNamn), adress) skola ((sNr), adress) låntagare ((lNr), förNamn, efterNamn) elev ((eNr), förNamn, efterNamn) Databasstruktur bok ((ISBN), titel) lärare ((lNr), förNamn, efterNamn) lån ((bNamn, lNr, ISBN, datum) ämne ((äNamn), kursBok) kurs ((sNr, eNr, lNr, äNamn) Från verksamhet till databas
Huvudsteg 1. Varje objekttyp blir ett relationsschema 2. Varje 1-1 och 1-m attribut hos en objekttyp blir ett attribut i motsvarande relationsschema 3. Varje m-m attribut blir ett eget relationsschema - attributen i detta ges av nyckelattributen i de sammanbundna relationsschemana Från konceptuellt schema till databas
Från konceptuellt schema till databas String String String Integer märke namn ålder regnr äger (m,m,p,p) PERSON BIL
Generalisering i relationsscheman regnr String FORDON String tillverkare ISA BIL märke String
Selektion Projektion Union Differens Kartesisk produkt Relationsalgebra Relationsalgebran är ett formellt språk för att extrahera data ur relationer. Språket är uppbyggt av ett litet antal operatorer. De primitiva operatorerna är
Selektion ANSTÄLLD Namn Lön Chef Avd Per Kvist 15000 Eva Berg Parfym Bo Gren 20000 Eva Berg Parfym Sten Rot 22000 Nils Hed Skor Nils Hed 30000 Eva Berg Skor Eva Berg 35000 Eva Berg Parfym Selektion innebär att man väljer ut ett antal tupler ur en relation baserat på något villkor. Namn Lön Chef Avd Per Kvist 15000 Eva Berg Parfym Bo Gren 20000 Eva Berg Parfym Eva Berg 35000 Eva Berg Parfym sAvd=ParfymANSTÄLLD
Projektion ANSTÄLLD Namn Lön Chef Avd Per Kvist 15000 Eva Berg Parfym Bo Gren 20000 Eva Berg Parfym Sten Rot 22000 Nils Hed Skor Nils Hed 30000 Eva Berg Skor Eva Berg 35000 Eva Berg Parfym Projektion innebär att välja ut ett antal attribut ur en relation. Namn Lön Per Kvist 15000 Bo Gren 20000 Sten Rot 22000 Nils Hed 30000 Eva Berg 35000 pNamn,LönANSTÄLLD
Övning i relationsalgebra ANSTÄLLD(Namn, Lön, Chef, Avd) Vad innebär följande uttryck i naturligt språk? pNamn(sLön > 20000 (ANSTÄLLD)) Skriv ett relationsalgebraiskt uttryck som ger namnen på cheferna för de anställda som tjänar mer än 25000 på skoavdelningen.
AVDELNING ANSTÄLLD Namn Lön Chef Avd Anamn Våning Kartesisk produkt Per Kvist 15000 Eva Berg Parfym Bo Gren 20000 Eva Berg Parfym Sten Rot 22000 Nils Hed Skor Nils Hed 30000 Eva Berg Skor Eva Berg 35000 Eva Berg Parfym Leksaker 2 Livsmedel 3 Parfym 3 Skor 2 Trädgård 1 Namn Lön Chef Avd Våning pNamn,Lön,Chef,Avd,Våning (sAvd = Anamn (ANSTÄLLD X AVDELNING)) Per Kvist 15000 Eva Berg Parfym 3 Bo Gren 20000 Eva Berg Parfym 3 Sten Rot 22000 Nils Hed Skor 2 Nils Hed 30000 Eva Berg Skor 2 Eva Berg 35000 Eva Berg Parfym 3
Utifrån de primitiva relationsalgebraiska operatorerna kan nya bildas. R |X| <condition> S = scondition (R X S) Join pNamn,Lön,Chef,Avd,Våning (ANSTÄLLD |X| Avd = Anamn AVDELNING))
Övning i relationsalgebra ANSTÄLLD(Namn, Lön, Chef, Avd) AVDELNING(Anamn, Våning) Skriv ett relationsalgebraiskt uttryck som ger namn och lön för de anställda som arbetar på andra våningen.
SQL - Structured Query Language SELECT Namn, Lön FROM ANSTÄLLD WHERE Lön > 17000 p X s
SQL - Structured Query Language ANSTÄLLD(Namn, Lön, Chef, Avd) Vad betyder följande SQL-fråga? SELECT Namn, Lön FROM ANSTÄLLD AS A, ANSTÄLLD AS B WHERE A.Chef = B.Namn AND A.Lön > B.Lön
Vyer i SQL CREATE VIEW VÅNTVÅ AS (SELECT * FROM ANSTÄLLD, AVDELNING WHERE ANSTÄLLD.Avd = AVDELNING.Anamn AND Våning = 2) SELECT * FROM VÅNTVÅ WHERE Lön > 20000
Nästlade SQL-frågor CREATE VIEW VÅNTVÅ AS (SELECT * FROM ANSTÄLLD, AVDELNING WHERE ANSTÄLLD.Avd = AVDELNING.Anamn AND Våning = 2) SELECT Namn FROM ANSTÄLLD WHERE Namn NOT IN (SELECT Namn FROM VÅNTVÅ)
ANSTÄLLD(Namn, Lön, Chef, Avd) - Avd främmande nyckel AVDELNING(Anamn, Våning) SÄLJER(Avd, Vara) - Avd främmande nyckel På vilka våningar finns anställda som tjänar mer än 20000? Vilka anställda arbetar på en avdelning som säljer skor? På vilka våningar finns anställda med en chef som tjänar mer än 20000? På vilka våningar säljs inte skor? Övning SQL
SYSCOLUMNS Systemkatalog COLUMN TABLE DOMAIN PK FK FK-TABLE Namn ANSTÄLLD String yes no Lön ANSTÄLLD Integer no no Chef ANSTÄLLD String no yes ANSTÄLLD Avd ANSTÄLLD String no yes AVDELNING Anamn AVDELNING String yes no Våning AVDELNING Integer no no SELECT COLUMN FROM SYSCOLUMNS WHERE FK = ”yes” AND TABLE = ”ANSTÄLLD”
Optimering Fråga Inläsning och parsing Bearbetad fråga Frågeoptimering Exekveringsplan Kodgenerering Kod för exekvering Resultat Frågeexekvering
Initialt frågeträd SELECT Namn FROM ANSTÄLLD, AVDELNING, SÄLJER WHERE Lön > 20000 AND ANSTÄLLD.Avd = AVDELNING.Anamn AND SÄLJER.Avd = AVDELNING.Anamn AND SÄLJER.Vara = ”Skor” PNamn s Lön > 20000 AND ANSTÄLLD.Avd = AVDELNING.Anamn AND SÄLJER.Avd = AVDELNING.Anamn AND SÄLJER.Vara = ”Skor” X ANSTÄLLD X AVDELNING SÄLJER
Transformerat frågeträd PNamn s ANSTÄLLD.Avd = AVDELNING.Anamn AND SÄLJER.Avd = AVDELNING.Anamn X s Lön > 20000 X ANSTÄLLD s SÄLJER.Vara = ”Skor” AVDELNING SÄLJER
Transformerat frågeträd PNamn |X|ANSTÄLLD.Avd = AVDELNING.Anamn s Lön > 20000 |X|Avd = Anamn ANSTÄLLD s SÄLJER.Vara = ”Skor” AVDELNING SÄLJER