Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
fredag 17 mars 2023
Gäller som tentamen för:
DT105G Databasteknik, provkod A001
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 40.
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.
|
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
Här är en bild på Teknikhuset från 7 mars i år.
Som vi ser finns det fortfarande kvar juldekorationer i många av fönstren.
Det ser verkligen slarvigt ut när det finns kvar juldekorationer så långt efter jul!
Därför har rektor bestämt att vi ska skapa en databas över de
kvarglömda juldekorationerna och var de finns,
så man kan besluta om lämpliga löneavdrag för de anställda som
har slarvat.
Mer bestämt ska databasen innehålla:
-
Anställda
på universitetet.
Varje anställd har ett unikt anställningsnummer,
ett namn och ett telefonnummer.
-
Rummen
på universitetet.
Varje rum har ett unikt namn,
som T2220 eller T120.
-
I vilka rum de anställda sitter.
En del anställda har ett eget arbetsrum,
men i en del rum är det flera anställda som delar på samma rum.
-
Juldekorationer som man upptäckt.
Varje juldekoration finns i fönstret till ett visst rum
och är av en viss typ.
-
Typer av juldekorationer,
till exempel julstjärna, ljusstake
eller stor uppblåsbar tomte.
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 (10 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)
Det hänger en julstjärna i fönstret till rum T2220.
Vad heter den eller de anställda som sitter i det rummet?
b) (2p)
I vilka rum i T-huset (dvs med namn som börjar med bokstaven T)
finns det juldekorationer i fönstren?
c) (3p)
I en del rum, som datorsalar och förrådsrum,
sitter det inga anställda.
I vilka rum finns det juldekorationer i fönstren,
men inga anställda?
d) (2p)
Skapa en vy som visar antalet juldekorationer i fönstren på varje rum.
Vyn ska innehålla de rum där det finns juldekorationer,
och den ska ha två kolumner:
rummets namn, och antalet juldekorationer i fönstren på det rummet.
e) (1p)
Använd vyn för att ta reda på
i vilket rum det finns flest juldekorationer i fönstren!
Uppgift 5 (6 p)
Rektorerna vid de andra universiteten i Sverige blir imponerade
av Örebro universitets juldekorationsdatabas,
och de vill också använda databasen för sina egna universitet.
Därför växer databasen så att den innehåller många tusen rader
i varje tabell.
Med de nya, stora datamängderna har sökningarna börjar gå långsamt,
och man skulle vilja göra dem snabbare.
Det är särskilt sökningarna i deluppgift 4a och 4b,
om vem som sitter i ett visst rum
och i vilka rum i ett visst hus det finns kvar juldekorationer,
som körs ofta, men kanske med andra konstanter,
till exempel att man är intresserad av rum E3115
eller rum i Långhuset (med namn som börjar med L).
a)
Det visar sig att det inte finns några index alls i databasen.
Vilka index bör man skapa för att sökningarna
från deluppgift 4a och 4b
ska gå snabbare?
b)
Ge exempel på något index som inte
skulle få dessa sökningar 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
skapar en del index automatiskt.
Vilka index är det som skapas automatiskt, och varför just dessa?
Uppgift 6 (3 p)
I deluppgift 4d skulle man skapa en vy
som visar antalet juldekorationer i fönstren på varje rum.
Man kan få den att gå snabbare med lämpliga index,
men eftersom den ska visa alla rum som har juldekorationer
kommer den att behöva gå igenom stora delar av databasen,
och med mycket data kan det ändå bli långsamt.
Om vi vill att det ska gå snabbare att få fram
antalet juldekorationer i fönstren på varje rum,
hur skulle vi kunna göra?
Någon föreslår en materialiserad vy,
men när du läser i manualen för databashanteraren
står det inget om materialiserade vyer.
Hur ska vi göra?
Uppgift 7 (5 p)
a) Vad menas i databassammanhang med en transaktion?
b) Man brukar vilja att transaktioner ska ha de så kallade ACID-egenskaperna.
Välj någon av dessa egenskaper,
och visa med ett exempel från databasen i
scenariot
vad egenskapen innebär,
och vad som kan hända om den inte finns.
c)
Inte alla databashanterare erbjuder ACID-egenskaper för transaktioner.
Välj någon av dessa ACID-egenskaperna
(det kan, men måste inte, vara samma som i b-uppgiften),
och beskriv någon anledning till att man inte skulle vilja
ha den egenskapen i en databashanterare.
Uppgift 8 (3 p)
Många webbplatser sparar sina data i en databas.
Då finns det ofta en webbserver och en databasserver
inblandade.
Förklara vad skillnaden är,
hur de hänger ihop,
och hur det kan fungera när en användare vill
titta på en webbsida som innehåller data ur databasen!