Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
för D1 m fl
onsdag 17 augusti 2016
Gäller som tentamen för:
DT105G Databasteknik, provkod 0100
DT1026 Datateknik A, Databasteknik, provkod 0100
DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0310
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 36.
För godkänt betyg krävs 20 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 onsdag 7 september 2016.
|
Å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 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
Vi ska bygga en webbplats för talböcker, och nu behöver vi en databas för att lagra data om talböckerna och kunderna.
Man behöver lagra följande saker i databasen:
-
Användare är de personer som lyssnar till talböckerna.
Varje användare har ett unikt nummer,
till exempel 17,
ett unikt loginnamn,
ett riktigt namn,
en adress
och ett lösenord.
-
Genrer,
dvs typer av talböcker,
till exempel deckare och urban fantasy.
Varje genre har ett unikt nummer och ett unikt namn.
-
Författare som skrivit böckerna.
Varje författare har ett unikt nummer,
ett namn
och en huvudsaklig genre,
som den författaren skrivit flest böcker inom.
-
Uppläsare, som läser upp böckerna.
Varje uppläsare har ett unikt nummer
och ett namn.
-
Talböcker.
Varje talbok i databasen har ett unikt nummer,
en titel,
har skrivits av en eller flera författare,
har lästs upp av en eller flera uppläsare,
och den tillhör också en genre.
-
Vi vill kunna låta varje användare sätta betyg (0 till 5)
på varje talbok som hon eller han lyssnat på,
och vi vill lagra alla dessa betyg i databasen.
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 4 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 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 (5 p)
Att "implementationen ska vara bra" i frågan ovan innebär bland annat
att tabellerna ska uppfylla vissa normalformer.
a) (2p)
Vilken normalform vill man normalt att tabellerna i en databas ska uppfylla?
Varför?
b) (3p)
Välj en av tabellerna i din lösning på uppgift 2 ovan,
och ange vilken som är den högsta normalform som den uppfyller.
Visa också varför det är så!
Uppgift 4 (10 p)
Formulera följande frågor i SQL.
a) (1p)
Vilken adress har användaren med loginnamnet tomatolove?
b) (1p)
Hur många användare har lösenordet banan?
(Vi vill alltså veta antalet.)
c) (1p)
Hur många användare har samma lösenord som sitt användarnamn?
(Vi vill alltså veta antalet.)
d) (2p)
Vad heter de uppläsare som läst in boken Massakermord
av författaren Jan Guillou?
e) (2p)
Vilka av uppläsarna som finns med i databasen
har inte läst in några böcker?
f) (3p)
Vilken talbok har fått högst genomsnittsbetyg?
Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.
Uppgift 5 (6 p)
Databasen innehåller realistiska mängder data,
dvs tusentals talböcker, tiotusentals användare, och så vidare.
De fyra SQL-frågorna a-d i uppgiften ovan
körs väldigt ofta
(men med andra konstanter)
och behöver snabbas upp.
Vi märker att det inte finns några index alls i databasen,
inte ens på nycklar.
a) Vilka index bör man skapa för att just frågorna a-d ska gå snabbt att köra?
b) Motivera för varje index varför det kommer att snabba upp frågorna!
c) Ge ett exempel på ett index som inte skulle snabba upp någon av frågorna a-d,
och förklara varför det inte förbättrar tiderna!
Uppgift 6 (4 p)
Vi ska välja vilken databashanterare som ska användas för databasen i scenariot.
a) Föreslå en databashanterare som kan vara lämplig att använda.
Motivera varför den är lämplig!
b) Föreslå en databashanterare som inte är lämplig.
Motivera varför den inte är lämplig!