Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
onsdag 11 januari 2023
Gäller som tentamen för:
DT105G Databasteknik, provkod A001
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 38.
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.
För den som följt kursen hösten 2022
ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2022 får dessa (fem) extrapoäng ändå.
|
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
Elskotrar som parkeras hur som helst hindrar snöröjningen.
Därför vill Örebro kommun skapa en databas för att lagra data om de problem som uppstår.
Mer bestämt ska databasen innehålla:
-
Personer,
till exempel kommunanställda och snöröjare,
som rapporterar problemen.
Varje person har ett unikt nummer,
ett namn och ett telefonnummer,
och för en del också vilket företag de arbetar på.
-
Typer av problem
som elskotrarna orsakar.
Många av problemen återkommer, till exempel stod i vägen eller slängd i en snödriva.
Därför behöver vi lagra typer av problem,
och varje typ har en unik, kort beskrivning.
-
Själva rapporterna om problem.
Varje rapport har ett unikt nummer, är inkommen ett visst datum och ett visst klockslag,
och är från en viss person.
En rapport gäller alltid minst en typ av problem, men kan gälla flera på en gång.
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 (5 p)
Här är några typer av integritetsvillkor som man kan skriva i SQL:
- CHECK
- FOREIGN KEY
- NOT NULL
- PRIMARY KEY
- UNIQUE
Ge för var och en av dessa typer dels en kort förklaring till vad den innebär,
och dels ett tydligt och konkret
exempel på hur den skulle kunna användas i uppgift 2 ovan.
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) (2p)
Jag har telefonnummer 070-7347013.
Vilka datum har jag skickat in rapporter om problem?
b) (2p)
Telefonnummer i Örebro börjar på 019-
och telefonnummer i Fjugesta börjar på 0585-.
Sammanlagt hur många personer
har telefonnummer i Örebro och Fjugesta?
c) (2p)
Vilka typer av problem rapporterades igår (2023-01-10)?
Vi vill veta beskrivningarna, inte bara numren.
d) (3p)
Vilket problem är vanligast?
Vi vill alltså veta beskrivningen på den problemtyp som det finns flest
rapporter om.
e) (2p)
Vilka problemtyper finns det ingen rapport alls om?
Uppgift 6 (6 p)
Det visar sig att sökningen i deluppgift 5c,
om vilka typer av problem som rapporterades en viss dag,
körs ofta, men kanske med andra datum än just 2023-01-10.
Alla tabeller i databasen växer och blir mycket stora,
och till följd av de stora datamängderna går sökningen för långsamt.
Vi måste få den att gå snabbare.
a)
Det visar sig att det inte finns några index alls i databasen.
Vilka index bör vi skapa för att sökningen ska gå snabbare?
b)
Ge exempel på något index som inte
skulle få sökningen 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,
till exempel Mimer och MySQL,
skapar en del index automatiskt. Vilka, och varför?
Uppgift 7 (3 p)
En transaktion som startats med SQL-kommandot START TRANSACTION
kan avslutas på olika sätt:
- med kommandot COMMIT
- med kommandot ROLLBACK
- genom att det uppstår ett fel, till exempel deadlock eller ett strömavbrott
Vad händer, i vart och ett av dessa fall,
med de ändringar som transaktionen gjort i databasen?