Ö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.



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:

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!