Lösningsförslag till Tentamen,

Relevanta dokument
Pga att (Nummer och Typ) tillsammans bestämmer övriga attribut funktionellt väljer vi (Nummer, Typ) till primärnyckel:

Tentamen plus lösningsförslag

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

Lösningsförslag till Exempel tentamen

2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY!, där RIDKURS.KursId = KURS.KursId 3NF Hästnamn, Art, NY! NY! NY! NY!

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

Logisk databasdesign

Karlstads Universitet, Datavetenskap 1

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

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

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

Exempel-Tentamen III

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

Tentamen 2I1033, IT i Organisationer och Databasteknik lördag 17/4 2004, kl LÖSNINGSFÖRSLAG

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

Informationssystem och databasteknik

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

Tentamen för DD1370 Databasteknik och informationssystem

Databaser Design och programmering

Exempel tentamen. Skriv bara på en sida av pappret Skriv namn på varje papper Skriv läsligt, annars rättas inte tentamen Alla hjälpmedel är tillåtna

Tentamen. Databasmetodik Lördag 27 september 2014 kl

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Karlstads Universitet, Datavetenskap 1

IT i organisationer och databasteknik

Analytisk relationsdatabasdesign

Tentamen för DD1370 Databasteknik och informationssystem

NORMALISERING. Mahmud Al Hakim

Tentamen för DD1370 Databasteknik och informationssystem

Konceptuella datamodeller

Karlstads Universitet, Datavetenskap 1

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Tentamen i Databasteknik

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

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen i Databasteknik

Lösningsförslag Tentamen, 25 april 03

Lösningsförslag, tentamen i Databaser

Idag. Hur vet vi att vår databas är tillräckligt bra?

Funktionella beroenden - teori

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

Normalisering. Varför? För att åstadkomma en så bra struktur i databasen som möjligt med minimalt med dubbellagrad info.

Databaser. Vad du ska lära dig: Ordlista

Tentamen för DD1370 Databasteknik och informationssystem

Kvalitetstänkande. Utgångsläge Samtliga ER-diagram har överförts till scheman

Föreläsning 6: Normalisering & funktionella beroenden

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

Tentamen ISGB01 (delkurs i ISGB24) Databasdesign 7,5 Poäng

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Databaser och Datamodellering Foreläsning IV

Föreläsning 5: Relationsmodellen

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

Webbprogrammering, grundkurs 725G54

Lösningar till tentamen i EDAF75

Tentamen i. Databasteknik

Universitetet: ER-diagram

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Tentamen NDA01G Öppen för alla. Tentamenskod: Inga hjälpmedel är tillåtna

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

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

Tentamen i Databasteknik

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Relationsdatabasdesign

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

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

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

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng

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

Föreläsning 3 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Vad är ett databashanteringssystem?

Laboration SQL. Kom igång.

Relationell databasdesign

Grunderna i SQL del 1

Föreläsning 4 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Normalisering (Analytisk databasdesign)

Tentamen. TDDB38 - Databasteknik

Tentamen DATABASTEKNIK - 1DL116

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Relationsmodellen och syntetisk databasdesign

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

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

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

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

Tentamenskod: Tentamensdatum: Tid: 14:00-19:00. Inga hjälpmedel är tillåtna

Exempel-tentamen 1. + Lösningsförslag. Inga hjälpmedel är tillåtna.

Databaser och databasdesign. Den relationella modellen, normalisering och modellering (2)

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

Databasdesign. E-R-modellen

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

ÖVNING 14. (Primärnycklar är angivna med fetstil.)

Relationskalkyl (RK)

Datalager och datautvinning

Grunderna för relationsmodellen!

ÖVNING 14. (Primärnycklar är angivna med fetstil.)

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

Transkript:

Institutionen för Data- och Systemvetenskap SU/KTH Maria Bergholtz och Paul Johannesson Lösningsförslag till Tentamen, 022 2I-00 Informationssystem och databasteknik För att erhålla betyget tre räcker 36 poäng För att erhålla betyget fyra räcker 42 poäng För att erhålla betyget fem räcker 48 poäng OBS att projektuppgiften kan ge två eller tre bonuspoäng

Uppgift, 0p. a) Ett flertal felaktigheter finns, några är följande: - Ingen åtskillnad görs mellan produkt och produkttyp - Man kan inte beskriva hur en kund konfigurerar en produkt vid beställning - En produkt kan bara säljas till en kund - KUND har chaufför som attribut b) KOMPONENTTYP kompnummer listpris vikt volym PRODUKTTYP produktnummer produktnamn listpris vikt volym KUND namn..* BESTÄLLNING KONFIGURATION antal KOMPONENT nummer PRODUKT serienummer inspektor inspektor2 0.. LEVERANS datum chaufför c) Ja, man kan generalisera PRODUKTTYP och KOMPONENTTYP. Uppgift 2, 6p. Uppgift 2. a) Många-till-många associationen har ej blivit en egen relation. Nycklar saknas. Associationerna mellan A och B, B och C, D och E har ej översatts. b) A(Aid) B(Bid, Aid) C(Cid, Bid)

Ass(Cid, Did) D(Did, Eid) E(Eid ) B.Aid << A.Aid C.Bid << B.Bid Ass.Cid << C.Cid Ass.Did << D.Did D.Eid << E.Eid Uppgift 3, 5p. Inget lösningsförslag ges, jämför med inlämnade och rättade uppgifter från seminarium 6. Uppgift 4, 5p. Uppgift 4 a) FALSKT. Låt D = {a b}, D2 är tomma mängden Låt r = a x x y b y z x r innehåller alltså tre tuppler. Relationen r tillhör vänsterledet, eftersom D skuret D2 är lika med tomma mängden. Men r tillhör inte högerledet, eftersom r ej uppfyller beroendet i D. b) SANT. Antag att en relation r tillhör vänsterledet. Då uppfyller den alla beroenden i D union D2, d.v.s. alla beroenden i D och i D2. Då uppfyller den alla beroenden i D. Och den uppfyller alla beroenden i D2. Så den tillhör högerledet. Antag att en relation r tillhör högerledet. Då uppfyller den alla beroenden i D. Och den uppfyller alla beroenden i D2. Därmed uppfyller den alla beroenden i D union D2. Så den tillhör vänsterledet. Uppgift 5, 6p. ART Artnamn Medelvikt Utbredning Tiger 200 Asien

Gepard NULL Afrika Lejon 250 Afrika DJUR Djurnamn Vikt Art Shere Khan 200 Tiger Simba 300 Lejon Teeny 00 Lejon Weeny 50 Lejon Rama 250 Lejon Wilma 450 Lejon ZOO ZooNamn Adress Antal_djur Kålmården Bråviken 2 London Zoo London W 4 BOENDE Znamn Dnamn Från Till Kålmården Teeny 97032 NULL Kålmården Weeny 9923 NULL London Zoo Simba 98032 NULL London Zoo Rama 9923 NULL London Zoo Wilma 98032 NULL London Zoo Shere Khan 98032 NULL London Zoo Teeny 95032 97032 London Zoo Weeny 99032 9923 London Zoo Weeny 9032 9223 Kålmården Rama 95032 9923 DJUR.Art << ART.Artnamn BOENDE.Znamn << ZOO.Zoonamn BOENDE.Dnamn << DJUR.Djurnamn π Till (σ Från<98032 (BOENDE)) a) Inte så mycket att säga om, de kolumner som har NULL i den enda utsökta kolumen ( Till ) kommer inte med. I övrigt ska villkoret på Från -kolumnen vara uppfyllt för de rader som kommer med. Till -------------------------- 9723 9223 9923 b) π DNamn (BOENDE X Zoonamn=Znamn AND Adress= LondonW ZOO) Ange hur resultatmängden kommer att se ut om uttrycket ovan exekveras. Kolumn-rubrik (-er) och resultat-tupler ska anges.

Här kan tecknet för JOIN debatteras. Eftersom jag bundit ihop mitt JOIN-tecken med ett villkor avsåg jag ett THETA-JOIN uttryck men här godtar jag välmotiverade NATURAL-JOIN tolkningar. Resultatet blir förstås alla som någonsin bott på London Zoo: DNAMN --------------- Simba Rama Wilma Teeny Weeny Shere Khan Dvs, rubbet. Weeny som bott två gånger på London Zoo kommer ändå bara med en gång eftersom relationsalgebran inte tar hänsyn till dubletter. c) Här kan man rakt av använda sig av en aggregatfunktion som den är definierad i läroboken. Dvs vi har ett grupperande attribut, Art, för vilket vi vill aggregera ihop vikterna för alla djur som tillhör den arten. Här kan man elaborera med summeringar och divisioner men enklast är att använda den redan färdiga genomsnittsfunktionen. ArtF AVG(Vikt) (DJUR) Grupp- Vald Den kolumn som Tabellen erande aggreg- som ska aggregeras attribut ering I SQL (ingår inte i frågan) skulle det bli något liknande: SELECT Art, AVG(Vikt) FROM DJUR GROUP BY Art ; --------------------------------------------------------------------------------------------------------- ART 2 --------------- ----------- Lejon 250 Tiger 200 2 record(s) selected. a) Uppgift 6, 8p.

SELECT Djurnamn, Vikt FROM DJUR WHERE Art NOT IN (SELECT Artnamn FROM ART WHERE Utbredning = Afrika ) DJURNAMN VIKT --------------- ----------- Shere Khan 200 record(s) selected. b): SELECT Djurnamn FROM DJUR WHERE NOT EXISTS (SELECT Zoonamn FROM ZOO WHERE Zoonamn NOT IN (SELECT Znamn FROM BOENDE WHERE Dnamn=Djurnamn)) Den gamla vanliga konstruktionen för att simulera en KVOT-operator i SQL. I detta fall för att ta fram alla djur som bott på alla upptänkliga Zoo:n. Detta har bara de tre nedan gjort. Jag har fimpat ev. dubletter som ev. uppstått eftersom somliga av de djur som bott på alla zoo:n bott på somliga flera gånger. DJURNAMN --------------- Rama Teeny Weeny 3 record(s) selected. c) Skriv en generell SQL-fråga som ger namn och vikt för alla djur som aldrig bott på Kålmården.

Här gäller det att ta fram de djur för vilka det är sant att de inte står på någon rad i tabellen BOENDE där ordet Kålmården finns i Znamn-kolumnen. En NOT-IN konstruktion eller ett EXCEPT mellan två mängder fungerar. SELECT Djurnamn, V ikt FROM DJUR WHERE Djurnamn NOT IN (SELECT Dnamn FROM BOENDE WHERE Znamn = Kålmården ) Alternativt SELECT Djurnamn, Vikt FROM DJUR, BOENDE WHERE Dnamn=Djurnamn EXCEPT SELECT Djurnamn, Vikt FROM DJUR, BOENDE WHERE Dnamn=Djurnamn AND Znamn= Kålmården d). Här var det meningen att man skulle skriva ett SQL-uttryck som gav antalet gånger ett visst djur bott på ett visst Zoo. Alltså t ex Djurnamn, Zoonamn och antalet gånger. Detta görs enklast via SELECT Dnamn, Znamn, count(znamn) AS ANTAL FROM BOENDE GROUP BY Dnamn, Znamn Uppgift 7, 0p. Betrakta följande relationsscheman som alla är i högre normalform än 0NF: TABELL(A, B, C, D, E, F, G) Denna tabell är i NF men inte i 2NF. Den bryter mot 2NF pga att vi har ett icke-nyckel attribut, E, som är bestämt av endast en del av primärnyckeln (det funkt. beroendet B E). (2p) TABELL2(H, I, J) Denna tabell är i 2NF men inte i 3NF. Den bryter mot 3NF pga vi har ett funktionellt beroende mellan två icke-nyckelattribut (I J). Därmed har vi också ett transitivt beroende mellan ett ickenyckelattribut och nyckeln. Däremot är vi i 2NF eftersom vi är i NF och nyckeln inte är sammansatt. (p) TABELL3(K, L, M) Denna tabell är i 3NF men inte i BCNF. Vi har två funktionella beroenden att beakta för denna tabell, KL M och M L. Den ena determinanten (KL) är förvisso en kandidatnyckel (den är tom vald till primärnyckel). Den andra determinanten, M, är dock inte en kandidatnyckel (räcker inte till för att identifiera övriga attribut unikt, vi vet t ex ingenting om hur många världen som kan finnas på K, givet ett M). Alltså är vi inte i BCNF. Bäst att undersöka 3NF också. Här får det inte finnas några transitiva beroenden mellan ickenyckelattribut och nyckeln. Och det gör det inte heller. Det finns ett funkt. ber. så att en del av nyckeln är bestämd av ett icke-nyckelattribut men detta leder inte till ett transitivt beroende i andra riktingen. För att vara säkra på att vi verkligen var i 3NF så måste vi även kolla om vi är i 2NF. Då ska alla icke-nyckelattribut vara fullständigt funkt. bestämda av nyckeln. Och det gäller för vårt enda icke-nyckelattribut M.(3p)

TABELL4(O, P, Q) Denna tabell är i BCNF. Det enda funktionella beroende vi har att beakta är O PQ. Dvs primärnyckeln bestämmer övriga attribut funktionellt. Något annat funkt. ber. som kan ge upphov till brott mot 2NF, 3NF eller BCNF finns inte. Alla ickenyckelattribut är ju fullständigt funktionellt bestämda av nyckeln, det finns inga transitiva beroenden mellan nyckeln och något icke-nyckel attribut. Alla determinanter (vi har bara en) är kandidatnycklar. (p) TABELL5(R, S, T, U) Denna tabell är i 2NF. Att den inte är i 3NF beror på att det finns ett transitivt beroende mellan ett icke-nyckel attribut, U, och nyckeln RS. Till att börja med gäller att RS TU. IR4 (ett av Armstrongs teorem) ger då att RS även bestämmer U och RS bestämmer T, dvs RS U och RS T. Vidare har vi (IR) att RS S (eftersom S RS). Vi kombinerar RS S och RS T till (IR5) RS ST. Nu har vi: RS ST ST U Eftersom ST inte är någon delmängd av primärnyckeln (eller någon kandidatnyckel) så har vi ett transitivt beroende (se t ex IR3 och sid 489 i Fundamentals) mellan RS (primärnyckeln) och U. (3p) (Primärnycklar är angivna som understrukna och med fet stil) Följande funktionella beroenden råder (inget funktionellt beroende spänner över mer än en tabell): A B C D E F G B E H I J I J KL M M L O P Q R S T U ST U Övrigt Ange Din email-adress för att underlätta kommunikation! Fyll i kursutvärderingen som kan nås från kursens hemsida!