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




Tentamen i

Databasteknik

onsdag 5 januari 2022

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 39. För godkänt betyg krävs 21 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
Resultat: Meddelas senast torsdag 27 januari 2022.
Å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

Internationella Bergsklättringsinstitutet, IBI, behöver en databas för att hålla reda på vilka berg som finns, och vilka bergsklättrare som klättrat upp på dem.

Det de vill lagra i databasen är:

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 uppgift 4 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 (3 p)

Välj själv en av tabellerna som du gjort i uppgift 2 ovan. Ange vilken som är den högsta normalform (av 1NF, 2NF, 3NF och BCNF) som tabellen uppfyller.

Visa sen att tabellen uppfyller den normalformen.

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) (1p) Hur höga är bergen Everest och Tomasbodahöjden?

b) (2p) Vad heter de bergsklättrare som bestigit Tomasbodahöjden?

c) (2p) I vilka länder ligger de berg som klättraren Göran Kropp har bestigit?

d) (2p) Vad heter det högsta berget?

e) (3p) Hur många klättrare har bestigit vart och ett av de olika bergen? För full poäng på frågan ska alla berg vara med i svaret, även de som aldrig blivit bestigna.

Uppgift 5 (4 p)

I världen finns det miljoner berg, många miljoner bergsklättrare, och bergsklättrarna har bestigit bergen miljarder gånger. Databasen växer, och SQL-frågorna börjar bli långsamma. Fråga b i uppgift 3, om vilka klättrare som bestigit ett visst berg, ställs ofta, men kanske om andra berg än just Tomasbodahöjden. Vi ser också att det inte finns några index i databasen, inte ens på nycklar.

a) Vilka index bör man skapa för att den angivna frågan ska gå snabbare att köra? Skriv create index-kommandon!

b) Ange ett index som inte skulle få den frågan att gå snabbare att köra, och förklara varför det indexet inte hjälper.

Uppgift 6 (5 p)

Ibland talar man om ACID-transaktioner, där bokstäverna i förkortningen ACID står för Ge för var och en av de fyra egenskaperna ett exempel, med databasen i scenariot, på vad som kan hända om den saknas.

Uppgift 7 (3 p)

B-träd är en lagringsstruktur som ofta används för att skapa index i databaser, särskilt i varianter som B+-träd och B*-träd.

a) Vilka är de viktigaste skillnaderna mellan B-träd och vanliga binära sökträd?

b) Varför är B-träd lämpliga i databaser?

Uppgift 8 (3 p)

Ange tre olika databashanterare. Skriv för var och en åtminstone någon egenskap som skiljer den från de två andra.