Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
för D1, SDU1 m fl
tisdag 13 januari 2015
Gäller som tentamen för:
DT1026 Datateknik A, Databasteknik, provkod 0100
DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0310
Hjälpmedel:
|
Inga hjälpmedel.
|
Poängkrav:
|
Maximal poäng är 36.
För betyget 3 respektive G krävs 22 poäng.
För den som följt kursen hösten 2014
ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2014 får dessa (fem) extrapoäng ändå.
|
Resultat:
|
Meddelas på kursens hemsida eller via e-post senast tisdag 3 februari 2015.
|
Återlämning av tentor:
|
Efter att resultatet meddelats kan tentorna hämtas på
universitetets centrala tentamensutlämning.
|
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 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
Databasen LADOK, som används för att lagra studenters kurser och resultat,
har blivit så full av gamla resultat att den inte längre går att använda.
Därför ska vi skapa en ny databas för Sveriges universitet, kurser och studenter.
Det vi ska lagra i databasen är följande:
-
Universitet.
Det här är de svenska universiteten och högskolorna.
Varje universitet har ett unikt namn,
till exempel Stockholms universitet.
Varje universitet i databasen får också ett unikt nummer.
Dessutom finns det ett antal telefonnummer
för varje universitet, om man vill ringa dit.
-
Kurser.
Varje kurs har en unik kurskod,
till exempel DT1026,
och ett namn,
till exempel Databasteknik.
Varje kurs ges av ett visst universitet.
Flera kurser kan ha samma namn,
för det är ju inte otroligt att flera olika universitet kan ha varsin kurs
som heter Databasteknik.
-
Studenter.
Varje student har sitt vanliga svenska, unika personnummer,
och ett namn.
Varje student i databasen får också ett unikt nummer,
förutom personnumret.
-
Vilka studenter som just nu läser vilka kurser.
-
Alla betyg som studenterna har fått.
Varje gång en student klarat en kurs får han eller hon ett betyg i den kursen,
och vi vill lagra alla betyg som studenterna fått.
Man ska lagra vilket betyg det var (till exempel 5)
och vilket datum som studenten fick betyget.
Här är ett ER-diagram för databasen (men med ett fel):
Uppgift 1 (3 p)
a)
Det finns ett ganska allvarligt fel i det givna ER-diagrammet,
om man jämför med beskrivningen av scenariot
och med sin egen erfarenhet av hur ett universitet fungerar i verkligheten.
Vilket fel är det?
b) Beskriv någon dålig konsekvens, om vi bygger databasen med felet ovan.
c) Dubbelstrecket mellan Kurs och Ges av
anger fullständigt deltagande.
Vad betyder det, på mer normal svenska?
Uppgift 2 (7 p)
Implementera den beskrivna databasen i relationsmodellen, dvs
översätt ER-diagrammet till tabeller.
Behåll felet från uppgift 1, dvs översätt ER-diagrammet som det ser ut.
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 (5 p)
I databassammanhang talar man ibland om integritetsvillkor
(på engelska: integrity constraints).
a) Vad är det?
b) Vad är det bra för?
c) Ge tre exempel på integritetsvillkor av olika typer
som kan vara bra att ha i din databas från uppgift 2 ovan.
Uppgift 4 (3 p)
Välj själv en av tabellerna som du gjort i uppgift 2 ovan.
Ange vilken som är den högsta normalform (av 1NF, 2NF, 3NF och BCNF) som tabellen uppfyller.
(Eftersom det står i uppgiften att "implementationen ska vara bra",
är det förmodligen BCNF.)
Visa sen att tabellen uppfyller den normalformen.
Uppgift 5 (10 p)
Formulera följande frågor i SQL.
Använd dina tabeller från uppgift 2.
Definiera gärna vyer om det underlättar.
a) Vad heter de kurser som ges av Örebro universitet?
b) Det finns bara en student i hela Sverige som heter Sven Duva.
Vad heter de kurser som han läser just nu?
c) Hur många studenter läser nu kursen Databaser som ges av Uppsala universitet?
d) Vilka studenter läser just nu ingenting?
e) Vad är det populäraste kursnamnet?
Dvs, vilket namn är det flest kurser som har?
Uppgift 6 (4 p)
I Sverige finns ungefär femtio universitet och högskolor,
tusentals kurser,
och nästan en miljon studenter.
Databasen kommer att användas av alla Sveriges universitet och högskolor
för att lagra och söka data.
a) Föreslå en databashanterare som kan vara lämplig att använda.
b) Vi antar att frågorna a och b i uppgift 4 körs ofta,
men vi söker inte alltid efter just Örebro universitet
och Sven Duva.
Vilka index behöver vi skapa för att snabba upp just dessa frågor?
Databashanteraren som vi använder skapar inga index automatiskt, inte ens på primärnycklar.
Uppgift 7 (4 p)
Ibland talar man om ACID-transaktioner,
där bokstäverna i förkortningen ACID står för
- atomicitet,
- consistency preserving, dvs "konsistensbevarande" eller "konsekvensbevarande",
- isolering och
- durability, dvs "hållbarhet".
Förklara för var och en av de fyra egenskaperna vad den egentligen betyder,
och ge exempel på vad som kan hända om den saknas.