Tentamen för DD1370 Databasteknik och informationssystem

Relevanta dokument
Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

02/12/14. Databasteknik och informationssystem DD1370. Behövs Föreläsning 8? Dagens föreläsning. Om Lab 1. De 11 Stegen (Kokbok)

25/11/14. Databasteknik och informationssystem DD1370. Påminnelse inför Lab 1 redovisningen. Repetition: ER modellering (gammalt + nytt)

Del 2: ER-modellering och överföring till Databasstruktur v0.9

08/12/14. Databasteknik och informationssystem DD1370. Behövs Föreläsning 8? Kursens (återstående) mål Dagens föreläsning

16/12/14. Databasteknik och informationssystem DD1370. Dagens föreläsning (den sista!) Motivera med kokbok! Idag: Inga knappar L. Dagens föreläsning

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

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

16/11/14. Databasteknik och informationssystem DD1370. Information. Dagens föreläsning: ERmodeller Dagens föreläsning. Påminnelse: Kursens mål

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

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

11/11/13. Databasteknik och informationssystem DD1370. Dagens föreläsning. Dagens föreläsning: ERmodeller Jmf: Relationer i Base

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

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

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

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

Databaser design och programmering. Design processen ER- modellering

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

Tentamen i Databasteknik

Exempel-Tentamen III

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

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

Databaser och Datamodellering Foreläsning IV

ER-Diagram. Databasutveckling Diagram

Databaser design och programmering. Fö 2: Design processen, ER-modellering

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

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

Databaser. Vad du ska lära dig: Ordlista

INTRODUKTION TILL ER ENTITY-RELATIONSHIP

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

Relationsdatabasdesign

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

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

Databasteknik för D1, SDU1 m fl

Efternamn förnamn pnr programkod

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?

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

Efternamn förnamn pnr årskurs

Informationssystem och databasteknik

Databasdesign. E-R-modellen

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

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

Efternamn förnamn pnr kodnr

Informationssystem och Databasteknik

Webbprogrammering, grundkurs 725G54

Tentamen, Distribuerade System/Programvaruarkitektur

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

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

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

Idag. Varför modellera? Modellering. Modelleringsverktygets egenskaper. Modelleringsverktyget

Databasteknik för D1, SDU1 m fl

Efternamn förnamn ååmmdd kodnr

Relationsmodellen och syntetisk databasdesign

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

04/11/14. Välkomna till kursen: Databasteknik och informationssystem DD1370. Kursanvarig. Dagens föreläsning. Vad är en Databas?

Idag. Varför modellera? Modellering. Modelleringsverktygets egenskaper. Modelleringsverktyget

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Idag. Modellering. Varför modellera? Konceptuell modell Modelleringsverktyg Objektklasser Sambandsklasser Knepiga attribut Modelleringsprocessen

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

Idag. Exempel. Exempel modellen (1) Exempel...

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

Tentamen i Grundläggande programmering STS, åk

Laboration SQL. Kom igång.

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

Tentamen i Datorteknik och - kommunikation, 2D1522/4K1522. Läs detta innan du börjar:

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

Efternamn förnamn pnr årskurs

Lösningsförslag Tentamen, 25 april 03

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

TENTAMEN TDDB77 Databaser och Bioinformatik 17 mars 2005, kl 8-12

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Tentamen, EDAA10 Programmering i Java

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

Efternamn förnamn pnr årskurs

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

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

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

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

Karlstads Universitet, Datavetenskap 1

TENTAMEN TDDB77 Databaser och Bioinformatik 15 mars 2002, kl 14-18

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Datalogi, grundkurs 1

Objektorienterad programmering, Java, 5p TDBA63

Tentamen i. Databasteknik

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

Databaser och. SQL, utsökningar mot en tabell

Transkript:

Tentamen för DD1370 Databasteknik och informationssystem 10 April 2015 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan på varje blad. Skriv namn och personnr på varje blad. Uppgifterna kommer inte i svårighetsordning. Skriv tydligt, motivera svaren endast begriplig och läsbar lösning ger poäng. Maximal poäng finns angiven inom parentes vid varje uppgift. Totalt ger tentamen en poäng (max 65), som sedan läggs ihop med era bonuspoäng. En summa (tenta+bonus) på 40 ger säkert godkänt. (lösningsförslag kommer på kurswebben) Lycka till, Petter

1. (Totalt: 14p) a) (3p) Ange 3 datatyper som kan användas för att ange när något har hänt. För varje datatyp, ange ett exempel på användning där inte de övriga två passar lika bra. Date (datum), Time (klockslag), Timestamp (datum och klockslag). Exempel: Födelsedag (Date), Solförmörkelse (Timestamp), Tid då Konsum stänger på vardagar (Time). b) (2p) Ange 2 datatyper som kan användas för att ange ett tal. För varje datatyp, ange ett exempel på användning där inte de övriga två passar lika bra. Integer (heltal), Float (decimaltal) Exempel: Antal kunder (Integer), Resultat i längdhopp (Float). c) (3p) Antag att tabellerna A och B är givna enligt nedan. A= Regr Tillverkare Pr amn ABC123 BMW B= 991111-1111 Anna AAA111 Volvo 881111-1111 Audi BBB222 Audi Rita tabellen man får som resultat av: SELECT * FROM A,B WHERE Tillverkare= Audi. Resultatet blir följande Regr Tillverkare Pr amn BBB222 Audi 991111-1111 Anna BBB222 Audi 881111-1111 Audi d) (2p) Antag att tabellerna A och B är givna enligt ovan. Rita tabellen man får som resultat av SELECT * FROM A JOI B O Tillverkare=amn. Resultatet blir följande Regr Tillverkare Pr amn BBB222 Audi 881111-1111 Audi e) (2p) Antag att tabellerna A och B är givna enligt ovan. Rita tabellen man får som resultat av SELECT * FROM A JOI B O Tillverkare= Audi. Resultatet blir följande Regr Tillverkare Pr amn BBB222 Audi 991111-1111 Anna (alltså samma som BBB222 Audi 881111-1111 Audi ovan). f) (2p) Antag att tabell C har 1000 rader och 1000 kolumner, samt att tabell D också har 1000 rader och 1000 kolumner. Hur stor blir tabellen man får som resultat av SELECT * FROM C,D. Resultatet blir 1000000 rader och 2000 kolumner. 1 av 8

2. (Totalt: 16p) Betrakta ER-modellen i Figurerna 1 till 6. I just denna uppgift behöver ni inte motivera och räkna upp vilka regler ni använder, Det räcker med svaret. a) (2p) Betrakta figur 1. Vad borde det stå vid frågetecknen? Överför ER-modellen i figuren till en Databasstruktur. MPnr KPr Man?? Gifta Kvinna Figur 1: En enkel ER-modell. Vid frågetecknen borde det stå två 1:or, eftersom man bara kan vara gift med en person. Det finns två möjliga databasstrukturer, eftersom 1-1 samband kan bilda ny kolumn på valfri sida av sambandet: Man(MPnr,KPr) Kvinna(KPnr) eller Man(MPnr) Kvinna(KPnr, MPnr) b) (2p) Betrakta figur 2. Vad borde det stå vid frågetecknen? Överför ER-modellen i figuren till en Databasstruktur. Pnr?? Fr Medlem i Person?? Ordförande i Förening Figur 2: En enkel ER-modell. Vid frågetecknen överst borde det stå och M, eftersom man kan vara medlem i många föreningar, och en förening kan ha många medlemmar. Vid frågetecknen underst borde det stå 1 och, eftersom man kan vara ordförande i många föreningar, men varje förening bara har en ordförande. Databasstrukturen blir 2 av 8

Person(Pnr) Förening(Fnr, Pnr) Medlem(Pnr,Fnr) c) (2p) Betrakta figur 3. Överför ER-modellen i figuren till en Databasstruktur. Vad betyder dubbelsträcket, och vad innebär det för databasen vi skapar utifrån ER-modellen? Pnr Regr 1 Person Äger Bil Figur 3: En enkel ER-modell. Databasstrukturen blir Person(Pnr) Bil(Regr, Pnr) Dubbelsträcket betyder fullständigt deltagande. I databasen måste alltså alla värden i kolumnen Pnr i tabellen Bil vara ifyllda. d) (3p) Betrakta figur 4. Överför ER-modellen i figuren till en Databasstruktur. Månadslön Timpris Anställd Konsult U U Projektmedarbetare Pnr amn Figur 4: En enkel ER-modell. Databasstrukturen blir Projektmedarbetare(Pnr, amn) 3 av 8

Anställd(Pnr, Månadslön) Konsult(Pnr,Timpris) e) (2p) Betrakta figur 5. Överför ER-modellen i figur till en Databasstruktur. Pnr Student Telefon Figur 5: En enkel ER-modell. Databasstrukturen blir Student(Pnr) Telefon(Pnr, Telefonr) f) (5p) Betrakta figur 6. i) Överför ER-modellen i figur till en Databasstruktur. ii) Rita den ER-modell som uppstår då man gör om en av entiteterna till en svag entitetstyp. iii) Överför den nya ER-modellen till en Databasstruktur. Vad är skillnaden? Yta amn Fastighetsbet. Antal rum Rum 1 Tillhör Hus Figur 6: En enkel ER-modell. Den första databasstrukturen blir Hus(Fastighetsbet.) Rum(amn, Yta, Fastighetsbet.) Antal rum är ett härlett attribut som inte dyker upp databasstrukturen. Om vi gör om Rum till en svag entitetstyp (dubbelstreckad) så blir amn en partiell nyckel (steckad understykning), Tillhör blir 4 av 8

Yta amn Fastighetsbet. Antal rum Rum 1 Tillhör Hus Figur 7: En enkel ER-modell. identifierande samband (dubbelstreckat) och deltagandet till vänster fullständigt (dubbelstreckat), se Figur 7. Databasstrukturen för figur 7 blir Hus(Fastighetsbet.) Rum(Fastighetsbet., amn, Yta) Antal rum är fortfarande ett härlett attribut som inte dyker upp databasstrukturen. Skillnaden i databasstruktur är att primärnyckeln för Rum nu är kombinationen av Fastighetsbet. och amn, eftersom amn nu bara behöver vara unikt inom respektive Hus. 3. (Totalt: 10p) Ett universitet använder följande databasstruktur för att hålla reda på studenter, kurser (inklusive examinatorer/lärare) och program (inklusive programansvariga). Person(Pnr, Förnamn, Efternamn, Adress) Student(Pnr, ProgramKod) Lärare(Pnr) Kurs(KursId, AntalHP, Godkäntgräns, Pnr) Program(ProgramKod, AntalHP, Pnr) Tentar(Pnr,KursId, Resultat) Ingår(KursId,ProgramKod) a) (8p) Rita upp en ER-modell som skulle resultera i ovanstående Databasstruktur. Modellen skall innehålla minst ett arv och ett sammansatt attribut. Motivera varje steg genom att mkt kort beskriva den regel i kokboken som använts. Om du ser flera möjliga alternativa ER-modeller, så välj det alternativ som gör att man kan skriva vettiga SQL-frågor i uppgift 4 nedan. Se figur 8. Steg 1 i kokboken (Varje vanlig entitetstyp blir en tabell, attribut blir kolumner) verkar ha tillämpats på Person, Student, Lärare, Kurs och Program. Gör vi dem till egna entiteter med attribut så får vi ungefär rätt databasstruktur för dessa. Dock väntar vi lite med Tentar och Ingår vilka kanske är resultat av någon annan regel. 5 av 8

U Steg 2 i kokboken (Varje 1:-samband blir referensattribut i många -sidans tabell) verkar ha tillämpats på ett samband mellan Lärare och Kurs resp. Program, vi kallar sambanden Examinator och Programansvarig. Samma sak med Student och Program, vi kallar det sambandet Tillhör. Steg 3 handlar om 1:1-samband, något sådant verkar vi inte ha. Steg 4 (Varje :M-samband bildar egen tabell) verkar ha gett upphov till tabellen Ingår och Tentar. Steg 5 handlar om flervägssamband, något sådant verkar inte finnas. Steg 6 handlar om attribut på samband, Resultat i Tentar verkar vara ett attribut. Steg 7 handlar om svaga entiteter, några sådana verkar inte finnas. Steg 8 (sammansatta attribut blir som delarna). Det var givet att vår modell skall innehålla minst ett sammansatt attribut, vi låter amn vara sammansatt av Förnamn och Efternamn. Steg 9 (Varje flervärt attribut blir en egen tabell. Primärnyckeln består av entitetstypens primärnyckel, kombinerad med det flervärda attributet.) ågot sådant verkar inte finnas. Steg 10 handlar om härledda attribut. Dessa syns inte i databasstrukturen. Steg 11 (Varje subklass blir en egen tabell) Det var givet att vår modell skall innehålla minst ett arv. Det verkar rimligt att tro att Student och Lärare är subklasser av Person. Tillämpar vi reglerna i kokboken på ER-modellen i figur 8 kommer vi således få den givna databasstrukturen. Förnamn Efternamn Pnr amn Adress Godkäntgräns AntalHP KursId Person Lärare 1 Programansvarig U 1 Examinator Kurs Ingår M M Antal HP Student Tentar Tillhör 1 Resultat Program AntalHP ProgramKod Figur 8: En ER-modell som skulle ge upphov till den givna databasstrukturen. otera att Antal HP tillkommer i deluppgift 3b b) (2p) Hur skulle ER-modell och databasstruktur ändras om man lade till ett härlett attribut Antal HP till Studenterna? 6 av 8

I figuren skulle vi få en ny sträckad oval som det står Antal HP i, med enkelstreck till Student-entiteten, se figur 8. Databasstrukturen ändras inte eftersom de härledda attributen inte innehåller någon egen data. Istället kan man lägga till en vy för att beräkna det härledda attributet. 4. (Totalt: 25p) Givet samma databasstruktur som i frågan ovan, dvs Person(Pnr, Förnamn, Efternamn, Adress) Student(Pnr, ProgramKod) Lärare(Pnr) Kurs(KursId, AntalHP, Godkäntgräns, Pnr) Program(ProgramKod, AntalHP, Pnr) Tentar(Pnr,KursId, Resultat) Ingår(KursId,ProgramKod) Skriv SQL-frågor som löser följande uppgifter. a) (2p) Lista alla Personer vars efternamn börjar på B. SELECT * FROM "Person" WHERE "Efternamn" LIKE B% b) (2p) Lista alla Studenter vars efternamn börjar på B. SELECT * FROM "Person" WHERE "Efternamn" LIKE B% AD "Pnr" I ( SELECT "Pnr" FROM "Student" ) c) (2p) Lista alla Kurser på mer än 5 HP. SELECT * FROM "Kurs" WHERE "AntalHP" > 5 d) (2p) Lista alla studenter (Pnr) som har klarat kursen DD101. SELECT "Student"."Pnr" FROM "Kurs", "Tentar", "Student" WHERE "Kurs"."KursId" = "Tentar"."KursId" AD "Tentar"."Pnr" = "Student"."Pnr" AD "Kurs"."KursId" = DD101 AD "Kurs"."Godkäntgräns" <= "Tentar"."Resultat" e) (4p) Lista alla studenter (Pnr) och hur många HP varje student har tagit. Kalla de två kolumnerna för Pnr och TotalHP. 7 av 8

SELECT "Student"."Pnr", SUM( "AntalHP" )AS TotalHP FROM "Kurs", "Tentar", "Student" WHERE "Kurs"."KursId" = "Tentar"."KursId" AD "Tentar"."Pnr" = "Student"."Pnr" AD "Kurs"."Godkäntgräns" <= "Tentar"."Resultat" GROUP BY "Student"."Pnr" f) (4p) Antag att du redan löst uppgiften ovan, och lagrat resultatet i en Vy som heter KlaradeHP. Lista alla studenter (Förnamn och Efternamn) som borde ta examen, dvs har tillräckligt många poäng för sina program. SELECT "Person"."Förnamn", "Person"."Efternamn" FROM "Person" WHERE "Person"."Pnr" I ( SELECT "Pnr" FROM "KlaradeHP", "Student", "Program" WHERE "KlaradeHP"."Pnr" = "Student"."Pnr" AD "Student"."ProgramKod" = "Program"."ProgramKod" AD "TotalHP" >= "Program"."AntalHP" ) g) (2p) Lista snittpoängen per student på alla tentor hen har skrivit. SELECT "Pnr", AVG( "Resultat" ) FROM "Tentar" GROUP BY "Pnr" h) (3p) Lista alla Programansvariga som inte finns med i tabellen med Lärare. SELECT "Program"."Pnr" FROM "Program" WHERE "Program"."Pnr" OT I ( SELECT "Pnr" FROM "Lärare" ) i) (4p) Lista Efternamn på alla lärare som undervisar mer än 2 kurser. SELECT "Efternamn" FROM "Person" WHERE "Person"."Pnr" I ( SELECT "Pnr" FROM "Kurs" GROUP BY "Pnr" HAVIG COUT( * ) > 2 ) 8 av 8