Ö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.
|
-
Skriv tydligt och klart. Lösningar som inte går att läsa kan
naturligtvis inte ge några poäng.
Oklara och tvetydiga 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
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.
På underrättelsetjänstens högkvarter samlar man förstås rapporterna i en databas.
Det databasen ska innehålla är följande:
-
Platser där James Bond kan sitta och spionera.
Varje plats har ett unikt nummer,
ett unikt namn,
och koordinater som består av latitud och longitud.
-
Det är inte bara James Bond som arbetar åt underrättelsetjänsten,
utan även flera andra spioner,
och underrättelsetjänsten vill kunna samla även deras rapporter i databasen.
Därför ska vi kunna lagra spioner,
som var och en har ett unikt nummer (som 007),
ett namn som inte behöver vara unikt,
ett födelsedatum och en månadslön.
-
Rapporterna.
Varje rapport har ett unikt nummer, ett datum när den skrevs, och en text.
Varje rapport är skriven av minst en spion,
men det kan hända att rapporten har flera olika spioner som författare.
Den kan också beröra en eller flera platser.
Om rapporten beskriver hur man skuggat en fientlig spion kan man ha rört sig mellan flera olika platser.
Om rapporten beskriver sökningar man gjort med Google, finns det kanske ingen plats att ange.
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.