Ö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.
|
-
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
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:
- Berg.
Varje berg har ett unikt namn och en höjd.
- Länder
som bergen ligger i.
Varje land har ett unikt namn.
Varje berg ligger i ett eller flera länder.
(Till exempel ligger berget Everest på gränsen mellan Kina och Nepal,
så det räknas som att det ligger i båda länderna.)
- Bergsklättrare.
Det är de personer som klättrar upp på bergen.
Varje bergsklättrare har ett unikt nummer, ett namn, och bor i ett av länderna.
- Vilka berg som varje bergsklättrare klättrat upp på.
Vi vill också lagra det datum som den personen kom upp på berget.
Om samma bergsklättrare klättrat upp flera gånger på samma berg,
lagrar vi bara datumet för den första gången.
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
- atomicitet,
- consistency preserving, dvs "konsistensbevarande" eller "konsekvensbevarande",
- isolering och
- durability, dvs "hållbarhet".
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.