Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se)





Tentamen i

Databasteknik
för D1 m fl

tisdag 13 mars 2018

Gäller som tentamen för:
DT105G Databasteknik, provkod 0100


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 34. 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 tisdag 3 april 2018.
Återlämning av tentor: Elektroniskt via Studentforum.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

FBI:s sigill

Som vi vet var det Donald Trump som vann presidentvalet i USA förra året. Han besegrade Hillary Clinton.

Media, och anhängare till Hillary Clinton, talar mycket om att det förekommit hemligt samarbete mellan Ryssland och personer som deltog i Donald Trumps valkampanj. Anhängare till Donald Trump talar hellre om samarbetet mellan Ryssland och personer som deltog i Hillary Clintons valkampanj.

Nu håller den amerikanska federala polisen FBI på och försöker utreda alltihop. FBI behöver förstås en databas. Det som ska lagras i databasen är dels vilka förhör som FBI hållit med olika inblandade personer, och dels vilka e-postmeddelanden som de personerna skickat till varandra.

Det man behöver hålla reda på är, mer detaljerat, följande:

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 (10 p)

Formulera följande frågor i SQL. Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.

a) (1p) Vilken kod har personen som heter Donald J. Trump?

b) (1p) Vilka koder har de personer som heter Clinton i efternamn?

c) (2p) Till vilka personer skickade Hillary Clinton e-post den 12 september 2012?

d) (2p) Vad heter de personer som blev förhörda av FBI-agenten Clarice Starling igår, 12 mars 2018?

e) (2p) Hur många förhör har minst en av FBI-agenterna Fox Mulder och Dana Scully varit med på?

f) (2p) Vad heter den FBI-agent som varit med på flest förhör?

Uppgift 4 (4 p)

Sökningen i uppgift 3d ovan, om vilka personer som blev förhörda av FBI-agenten Clarice Starling igår, körs väldigt ofta, men kanske med andra konstanter, till exempel att man söker efter förhör som Dale Cooper hållit idag (13 mars). Den tar för lång tid att köra, och vi vill skapa index för att snabba upp den. Från början finns det inga index alls i databasen, inte ens på primärnycklar. FBI har hållit miljoner förhör, med miljoner personer, och har många tusen agenter.

a) Ange vilka index man bör skapa för att den frågan ska gå snabbare att köra.

b) Ange ett index som inte skulle göra den frågan snabbare, och förklara varför det inte förbättrar tiden.

Uppgift 5 (3 p)

Ange tre olika databashanterare. Ange för var och en av dem något som skiljer den från de andra.

Uppgift 6 (3 p)

Om man vill göra mer avancerade saker med sina data än vad som går att göra med vanliga SQL-frågor, kan man skriva en lagrad procedur, som lagras i databasen och körs av databashanteraren. Som alternativ kan man skriva ett program i ett vanligt programspråk som Python eller Java, som kopplar upp sig mot databasen, och sen görs hanteringen i det programmet.

Vilka fördelar och nackdelar finns med de här två olika sätten?

Uppgift 7 (3 p)

Man kan starta en transaktion med SQL-kommandot start transaction.

a) Vad är en transaktion?

b) På vilka olika sätt kan en transaktion avslutas? Vad är skillnaden mellan dem?

c) Transaktioner bör ha vissa egenskaper, som brukar förkortas med bokstäverna ACID. Välj en av bokstäverna, förklara vad den betyder, och visa med ett exempel vad den innebär.