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








Tentamen i

Databasteknik

onsdag 11 januari 2023

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


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 38. För godkänt betyg krävs 23 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2. För den som följt kursen hösten 2022 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen hösten 2022 får dessa (fem) extrapoäng ändå.
Resultat: Meddelas senast 15 arbetsdagar efter tentamensdatum.
Återlämning av tentor: Elektroniskt via webbportalen Studenttjänster.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.






LYCKA TILL!

Scenario till uppgifterna

Elskotrar som parkeras hur som helst hindrar snöröjningen.

Snöskotrar

Därför vill Örebro kommun skapa en databas för att lagra data om de problem som uppstår. Mer bestämt ska databasen innehålla:

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 uppgifterna 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 (2 p)

Mycket i kursen handlar om relationsmodellen och relationsdatabaser. Vad är det som är "relationerna" i en relationsdatabas?

Uppgift 4 (5 p)

Här är några typer av integritetsvillkor som man kan skriva i SQL: Ge för var och en av dessa typer dels en kort förklaring till vad den innebär, och dels ett tydligt och konkret exempel på hur den skulle kunna användas i uppgift 2 ovan.

Uppgift 5 (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) (2p) Jag har telefonnummer 070-7347013. Vilka datum har jag skickat in rapporter om problem?

b) (2p) Telefonnummer i Örebro börjar på 019- och telefonnummer i Fjugesta börjar på 0585-. Sammanlagt hur många personer har telefonnummer i Örebro och Fjugesta?

c) (2p) Vilka typer av problem rapporterades igår (2023-01-10)? Vi vill veta beskrivningarna, inte bara numren.

d) (3p) Vilket problem är vanligast? Vi vill alltså veta beskrivningen på den problemtyp som det finns flest rapporter om.

e) (2p) Vilka problemtyper finns det ingen rapport alls om?

Uppgift 6 (6 p)

Det visar sig att sökningen i deluppgift 5c, om vilka typer av problem som rapporterades en viss dag, körs ofta, men kanske med andra datum än just 2023-01-10. Alla tabeller i databasen växer och blir mycket stora, och till följd av de stora datamängderna går sökningen för långsamt. Vi måste få den att gå snabbare.

a) Det visar sig att det inte finns några index alls i databasen. Vilka index bör vi skapa för att sökningen ska gå snabbare?

b) Ge exempel på något index som inte skulle få sökningen att gå snabbare, och förklara varför det indexet inte skulle hjälpa.

c) I a-uppgiften ovan stod det att det inte fanns några index alls i databasen. Nästan alla databashanterare, till exempel Mimer och MySQL, skapar en del index automatiskt. Vilka, och varför?

Uppgift 7 (3 p)

En transaktion som startats med SQL-kommandot START TRANSACTION kan avslutas på olika sätt: Vad händer, i vart och ett av dessa fall, med de ändringar som transaktionen gjort i databasen?