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








Tentamen i

Databasteknik

onsdag 14 augusti 2024

Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod A001


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 40. För godkänt betyg krävs 24 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
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

James Bond, spionen som är känd från en serie dokumentärfilmer, behöver hjälp i sitt arbete. Även om en del av hans arbetsdag går åt till biljakter, eldstrider, kasinospel och liknande, är den huvudsakliga uppgiften för en spion just att spionera, dvs samla information.

James Bond sitter ofta gömd någonstans och spionerar. Han kanske spionerar på alla förbipasserande, och räknar hur många av dem som är ryska spioner, hur många som är skurkar, och hur många som bara är vanliga människor. Sen skickar han informationen till underrättelsetjänstens högkvarter, där man sammanställer statistik. ("Andelen ryska spioner i området har under året ökat från knappt en procent till drygt två, medan andelen skurkar fortsätter sin nedåtgående trend. Vi rekommenderar därför att...")

Ett annat exempel är det varje år en stor militärparad på Röda Torget i Moskva, och då kan James Bond gömma sig någonstans längs paradvägen och räkna hur många stridsvagnar som passerar.

Paraden 2016

På underrättelsetjänstens högkvarter samlar man förstås rapporterna i en databas. Det databasen ska innehålla är 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 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 (4 p)

Att "implementationen ska vara bra" i frågan ovan brukar bland annat innebära att tabellerna ska uppfylla vissa normalformer.

a) Vilken normalform vill man normalt att tabellerna i en databas ska uppfylla? Varför?

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

Mycket i den här kursen har handlat om relationsdatabaser, bland annat uppgift 2 på den här tentan. Vad är det som är "relationerna" i en relationsdatabas?

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) (1p) Nu ska vi betala ut spionernas löner. Vad är deras sammanlagda lön?

b) (2p) I kafeterian på underrättelsetjänstens högkvarter har någon glömt kvar en rapport med nummer 12345. Vad heter den eller de spioner som skrivit den rapporten?

c) (2p) Vad är datumen på de rapporter som spionen James Bond skickat från Röda Torget? (Det finns bara en James Bond i databasen.)

d) (3p) Ryssland är stort, och som en grov uppskattning kan man säga att landet upptar en rektangel som sträcker sig mellan latituderna 41 och 96, och longituderna 20 och 180. Vilket är datumet på den senaste rapport som kommer från det området?

e) (3p) Vad heter den spion som skickat flest rapporter? Både rapporter där spionen är ensam författare och en av flera författare räknas.

Uppgift 6 (3 p)

Alla tabeller i databasen växer och blir mycket stora. Sökningen i deluppgift 5c, om vad datumen är på de rapporter som spionen James Bond skickat från Röda Torget, körs ofta, men kanske med andra konstanter än de i uppgiften. Vi vill få dem att gå snabbare. Vilka index bör vi skapa för att de sökningarna ska gå snabbare? Från början finns det inga index i databasen, inte ens på nycklar.

Uppgift 7 (3 p)

Spionerna och rapporterna är förstås hemliga. En del är extra hemliga, och bara vissa särskilt säkerhetskollade anställda får känna till dem. Vilka mekanismer brukar finnas i en databashanterare för att hjälpa till med detta? Hur gör man?

Uppgift 8 (3 p)

Skulle man kunna använda triggers till något i scenariot? Ge exempel och förklara hur man skulle göra! Du behöver inte skriva SQL-kommandon, utan beskriv med ord.

Uppgift 9 (3 p)

Vilken databashanterare bör vi välja för vår databas? Nämn tre olika databashanterare, och tala om varför, eller varför inte, de passar för den här tillämpningen.