Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
torsdag 16 januari 2025
Gäller som tentamen för:
DT105G Databasteknik, provkod A001
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 40.
För godkänt betyg krävs 25 poäng,
varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
För den som följt kursen hösten 2024
ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2024 får dessa (fem) extrapoäng ändå.
|
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.
|
-
Skriv tydligt och klart. Lösningar som inte går att läsa kan
naturligtvis inte ge några poäng.
Oklara och tvetydiga formuleringar kommer att misstolkas.
-
Skriv den personliga tentamenskoden på varje inlämnat blad.
Skriv inte namn eller personnummer på bladen.
-
Skriv bara på en sida av papperet.
Använd inte röd skrift.
-
Antaganden utöver de som står i uppgifterna måste anges. Gjorda
antaganden får inte förändra den givna uppgiften.
-
Skriv gärna förklaringar om hur du tänkt.
Även ett svar som är fel kan ge poäng,
om det finns med en förklaring som visar att huvudtankarna var rätt.
LYCKA TILL!
Scenario till uppgifterna
Företaget Bofors i Karlskoga, som numera ingår i BAE Systems AB,
tillverkar vapen och ammunition.
På grund av den ökade efterfrågan i världen på just vapen och ammunition
behöver man öka testskjutningen av ammunition,
bland annat artillerigranater.
Naturligtvis behöver man en databas för det.
Här ser vi en bild på en artilleripjäs som skjuter iväg granater.
(Foto från Wikipedia. Fotograf: Wikipedia-användaren Ibaril.)
Vi ska bygga en databas för att lagra data om testskjutningen.
Mer bestämt ska databasen innehålla:
-
Typer av granater,
som till exempel kan heta Strids-bomb 2000 eller Turbo-pang XL.
Varje granattyp har ett unikt namn,
och den har också en kaliber, till exempel 155 mm.
Den har också en vikt, till exempel 46 kilo.
-
De enskilda granaterna som tillverkats och ska provskjutas.
Varje sådan granat är av en viss typ,
den har ett unikt serienummer,
och den har en verklig uppmätt vikt,
som förstås bör vara samma som angetts för granattypen
men som kan avvika lite, till exempel 45,978 kilo.
-
Avfyrningar
är själva avfyrningen av en granat, när man skjuter iväg den.
Varje avfyrning görs av en viss enskild granat,
sker en viss tid på en viss dag,
och gjordes vid ett visst provtillfälle.
Granater går inte att återanvända,
så varje enskild granat går bara att avfyra en gång.
-
Ett provtillfälle
innebär att man åker iväg till ett skjutfält och avfyrar ett antal
granater.
Provtillfället kan sträcka sig över flera dagar,
så det har ett startdatum och ett slutdatum.
Man vill också lagra namnet på skjutfältet,
till exempel Villingsbergs skjutfält.
-
Personer,
som har unika nummer och (inte nödvändigtvis unika) namn.
-
Vilka personer som var med vid varje provtillfälle.
Som vi ser på bilden kan det vara flera personer
som är med vid provtillfället,
och samma person kan förstås vara med vid flera olika provtillfällen.
Uppgift 1 (5 p)
Rita ett ER- eller EER-diagram för den beskrivna databasen.
Använd informationen i scenariot ovan,
men tänk också på att det ska gå att svara på frågorna i uppgifterna nedan.
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.
Uppgift 2 (6 p)
Implementera den beskrivna databasen i relationsmodellen, dvs
översätt ER-diagrammet till tabeller.
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.
Uppgift 3 (1 p)
Mycket i kursen handlar om relationsmodellen och relationsdatabaser.
Vad är det som är "relationerna" i en relationsdatabas?
Uppgift 4 (13 p)
Formulera följande frågor i SQL.
Definiera gärna vyer eller CTE:er om det underlättar, men skapa inte nya tabeller.
a) (2p)
Vilka datum har vi avfyrat granater av typen Strids-bomb 2000?
b) (2p)
Det finns bara en person i databasen som heter Kajsa Kanon.
Vad heter de skjutfält som hon varit på?
c) (2p)
Vad heter de granattyper som är tyngre än Strids-bomb 2000?
d) (2p)
Jag är ute och går på Villingsbergs skjutfält,
och på marken hittar jag en granat som kommer från en provskjutning.
Vilken typ av granat kan det vara?
e) (3p)
Vad heter den granattyp som vi avfyrat flest gånger?
f) (2p)
Finns det några granattyper som vi aldrig avfyrat?
Vi vill veta namnen på dem.
Uppgift 5 (4 p)
Det finns inte så många personer eller granattyper,
men annars växer alla tabeller i databasen och blir mycket stora.
Sökningarna i deluppgift 4a och 4b ovan
körs ofta, men kanske med andra konstanter än de i uppgiften.
Vi vill få dem att gå betydligt snabbare.
Från början finns det inga index i databasen, inte ens på nycklar.
a) Vilka index vi bör skapa för att sökningen i 4a ska gå snabbare?
b) Vilka index vi bör skapa för att sökningen i 4b ska gå snabbare?
Uppgift 6 (4 p)
a) Vad menas i databassammanhang med en normalform?
b) Ge ett exempel på en normalform som vi behandlat i kursen,
och förklara vad den innebär.
c) Vilket eller vilka problem är det som just denna normalform
försöker förhindra? Visa med exempel!
Uppgift 7 (3 p)
a) Vad menas, i databassammanhang, med en trigger?
b) Beskriv två olika användningsområden för triggers i databaser.
Uppgift 8 (4 p)
I databassammanhang talar man om de så kallade ACID-egenskaperna,
där I:et står för "isolering".
a) Vad är det för saker man isolerar från varandra?
b) Vad innebär det att man isolerar dessa saker?
c) Databashanteraren Mimer använder det som brukar kallas för
optimistiska metoder för att åstadkomma isolering.
Det är lite ovanligt, och de flesta andra databashanterare
använder vad man kan kalla pessimistiska metoder.
Vad innebär dessa två sätt, och vilka är de viktigaste skillnaderna?