Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
måndag 27 augusti 2018
Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod 0100
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 36.
För godkänt betyg krävs 18 poäng,
varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
|
Resultat:
|
Meddelas på kursens hemsida eller via e-post senast måndag 17 september 2018.
|
Återlämning av tentor:
|
Elektroniskt via Studentforum.
|
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
Institutionen för naturvetenskap och teknik har tjugo stycken legorobotar
som används i en del programmeringskurser.
Här är skåpet där de ska stå, och där finns det tre robotar:
Var är alla de andra robotarna?
Ingen vet, och snart börjar nästa kurs som ska använda dem!
Förut fanns det en pärm där man kunde skriva upp om man lånar en robot,
men den pärmen har kommit bort.
Nu ska vi skapa en databas för robotar och vem som har dem,
och det som ska lagras i databasen är följande:
-
Robotar.
Det finns tjugo robotar, och varje robot har ett unikt nummer från 1 till 20.
Det behövs också en status, som är en kort text som beskriver robotens status,
till exempel "fungerar", "trasig" eller "isärplockad".
-
Personer
som bokar robotarna.
Varje person har ett unikt namn.
-
Bokningar.
Varje bokning gäller från ett visst datum, till ett visst annat datum,
den gäller en eller flera robotar.
och den har gjorts av en eller flera personer.
Databasen är vad som brukar kallas en historisk databas,
till skillnad från en snapshot-databas,
så gamla bokningar ligger kvar i databasen.
Samma robot kan alltså vara bokad flera gånger.
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 uppgift 3 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 (11 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) (1p)
En robot är trasig om den har någon av statustexterna "trasig", "kass" och "kaputt".
Vilka robotar är trasiga?
Vi vill veta numren på de robotarna.
b) (1p)
Om en robot är isärplockad måste vi montera ihop den.
En robot är isärplockad om den har statustexten "isärplockad".
Hur många robotar är isärplockade?
Vi vill veta antalet, inte numren.
c) (2p)
Vilka robotar är bokade just nu?
Vi vill veta numren på de robotarna.
(Ledtråd: Bokningen ska ha ett från-datum som är mindre än eller lika med 2018-08-27,
och ett till-datum som är större än eller lika med 2018-08-27.)
d) (2p)
Vilka robotar är lediga just nu?
Vi vill veta numren på de robotarna.
e) (2p)
Jag har hittat robot nummer 7 kvarglömd i en labbsal.
Vem eller vilka personer har någonsin bokat den roboten?
Vi vill veta de personernas namn.
f) (3p)
Hur många gånger är varje robot bokad?
Robotar som inte är bokade alls ska vara med i svaret, med antalet noll.
Uppgift 4 (3 p)
Det finns tjugo robotar,
ett tiotal personer som bokar dem,
och man gör kanske tio bokningar per år.
Diskutera behovet av index i databasen!
Uppgift 5 (3 p)
Inför terminsstarten är det flera olika bokningar som behöver göras,
och alla lärarna som ska boka robotar gör det i sista minuten.
Diskutera behovet av transaktioner i databasen!
Uppgift 6 (3 p)
Vilken databashanterare skulle vara lämplig för den här databasen?
Ange tre olika databashanterare,
och beskriv för var och en varför, eller varför inte, den är lämplig!
Uppgift 7 (5 p)
Man kan skriva SQL-frågor inuti en lagrad procedur,
och man kan skriva SQL-frågor i ett Python-program.
Beskriv hur det skiljer sig åt, och fördelar och nackdelar!