Ö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.





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.

Juldekorationer

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:

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!