Databasteknik
tisdag 22 augusti 2023
Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod A001
Hjälpmedel: | Ordbok för översättning. Miniräknare. (Miniräknaren behövs inte för denna tentamen, men finns med som hjälpmedel av logistiska skäl.) |
Poängkrav: | Maximal poäng är 40. För godkänt betyg krävs 23 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2. |
Resultat: | Meddelas senast 15 arbetsdagar efter tentamensdatum. |
Återlämning av tentor: | Elektroniskt via webbportalen Studenttjänster. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070 - 73 47 013. |
Vi ska skapa en databas för att hålla reda på våra träningspass i Sörbybacken.
Mer bestämt ska databasen innehålla:
ER- och EER-diagram kan ritas på flera olika sätt. Om du använder en annan notation än kursboken, måste du förklara den notation som du använder.
Du behöver inte skriva create table-kommandon i SQL, men du ska ange vilka relationer som finns och vilka attribut varje relation innehåller. Ange också alla kandidatnycklar, vilken av dessa som är primärnyckel, samt vilka referensattribut som finns och vad de refererar till.
Implementationen ska vara bra.
b) Vad menas med de tre termerna relationsdatabas, relationsmodellen och relationsschema?
a) (1p) Bodil har e-postadressen bodil@b.se. Vad är hennes telefonnummer?
b) (2p) Jag (Thomas Padron-McCarthy) sprang ett enda varv i Sörbybacken igår (2023-08-21). Vad var starttiden och sluttiden för det varvet?
c) (2p) Hur många varv sprangs det totalt 2022-08-21?
d) (3p) Vad heter den person som sprungit flest varv?
e) (2p) Om det finns något träningspass där ingen sprungit några varv har det förmodligen blivit fel i databasen. Skriv en SQL-fråga som tar fram nummer och datum på alla träningspass som det inte hör några varv till! Om den databas du konstruerade i uppgifterna ovan inte kan lagra träningspass utan varv, förklara i stället varför det inte går!
a) Det visar sig att det inte finns några index alls i databasen, inte ens på nycklar. Vilka index bör man skapa för att sökningen i deluppgift 4a ska gå snabbare?
b) Ge exempel på något index som inte skulle få denna sökning att gå snabbare, och förklara varför det indexet inte skulle hjälpa.
a) Varför blir just den frågan så långsam, trots indexen?
b) Om det nu inte hjälper att skapa index (och vi har redan köpt den snabbaste dator, och den snabbaste databashanterare, som vi har råd med), hur kan man få frågan att gå snabbare? Du behöver inte skriva kod, men beskriv principerna.
Träning | |||||||||
---|---|---|---|---|---|---|---|---|---|
Person | Namn | Telefon | Epostadress | Lösenord | Träningspass | Datum | Varv | Starttid | Sluttid |
1 | Anna | 1234 | anna@a.com | banan | 1 | 2022-04-15 | 1 | 10:59:23 | 11:03:23 |
2 | Bodil | 1234 | bodil@b.se | banan | 1 | 2022-04-15 | 2 | 10:59:23 | 11:04:23 |
2 | Bodil | 1234 | bodil@b.se | banan | 2 | 2023-08-21 | 4 | 10:59:23 | 11:04:23 |
2 | Bodil | 1234 | bodil@b.se | banan | 2 | 2023-08-21 | 5 | 11:59:23 | 12:04:22 |
3 | Bodil | 019-5678 | bodil@c.se | banan | 1 | 2022-04-15 | 3 | 10:59:23 | 11:04:24 |
3 | Bodil | 019-5678 | bodil@c.se | banan | 3 | 2023-08-21 | 6 | 10:59:23 | 11:04:24 |
3 | Bodil | 019-5678 | bodil@c.se | banan | 3 | 2023-08-21 | 7 | 11:59:23 | 12:04:23 |
3 | Bodil | 019-5678 | bodil@c.se | banan | 3 | 2023-08-21 | 8 | 12:59:23 | 13:04:22 |
3 | Bodil | 019-5678 | bodil@c.se | banan | 3 | 2023-08-21 | 9 | 13:59:23 | 14:04:21 |
3 | Bodil | 019-5678 | bodil@c.se | banan | 3 | 2023-08-21 | 10 | 14:59:23 | 15:04:20 |
4 | Thomas | 070-1234 | tpy@oru.se | banan | 4 | 2023-08-21 | 11 | 20:01:02 | 21:05:49 |
a) Vilka kandidatnycklar finns i tabellen?
b) Ange tre olika fullständiga funktionella beroenden som finns i tabellen!
c) Vilken är den högsta normalform, av 1NF, 2NF, 3NF och BCNF, som tabellen uppfyller? Motivera svaret, särskilt varför tabellen inte uppfyller närmast högre normalform.
d) Det står i uppgift 2 att implementationen ska vara bra. Är detta en bra implementation? Motivera svaret!