Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
onsdag 11 juni 2025
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 40.
För godkänt betyg krävs 24 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 våren 2025
ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen våren 2025 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
I Sverige finns cirka 20 000 idrottsföreningar,
som bedriver ett stort antal olika idrotter.
Till exempel schackboxning:
Foto: WCBO, Wikipedia. Licens: Creative Commons Attribution 3.0 Germany.
Nu ska vi spara idrotterna, idrottsföreningarna och en del annat i en databas.
Det som ska lagras i databasen är följande:
-
Idrotter.
Varje idrott har ett unikt namn, till exempel fotboll,
snöskolöpning eller schackboxning.
-
Förbund.
Varje förbund har ett unikt namn, till exempel Svenska Fotbollförbundet,
Svenska Skyttesportförbundet eller Sveriges schackförbund.
-
Förbunden organiserar de olika idrotterna.
Varje förbund brukar organisera flera olika idrotter, som att
Sveriges schackförbund organiserar både schack och (säger vi nu i alla fall) schackboxning.
Ibland kan en och samma idrott organiseras av flera olika förbund,
som till exempel pistolskytte som organiseras av både Svenska Pistolskytteförbundet
och Svenska Skyttesportförbundet.
-
Idrottsföreningar.
Varje idrottsförening har ett unikt namn,
som Djurgårdens Idrottsförening eller Allmänna Idrottsklubben.
-
Idrottsföreningarna är också anslutna till förbunden.
Ett förbund kan ha ett stort antal anslutna föreningar,
till exempel
Svenska Fotbollförbundet som har hundratals anslutna
föreningar.
En förening behöver inte nödvändigtvis vara ansluten till något förbund,
och en och samma förening kan vara ansluten till flera olika förbund.
-
Föreningarna bedriver idrotter.
För det mesta bedriver föreningarna förstås idrotter
som organiseras av de förbund som föreningen är ansluten till,
men det behöver inte ha något med förbunden att göra.
En ishockeyklubb, som bara är ansluten till Svenska Ishockeyförbundet,
kanske har en egen gren som heter luftballonghockey,
och som det inte finns något förbund för.
För att underlätta administrationen får varje idrott, förbund och förening
också ett unikt nummer.
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 (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)
Vilka olika idrotter organiseras av Svenska Varpaförbundet?
b) (2p)
De flesta förbunden heter något med Sveriges eller Svenska,
till exempel
Sveriges Akademiska Idrottsförbund.
eller
Korpen Svenska Motionsidrottsförbundet.
Vilka förbund heter inte något med Sveriges eller Svenska?
c) (3p)
Vilka idrotter som organiseras av
Svenska Flygsportförbundet
bedrivs av Almby Idrottsklubb?
d) (3p)
Vilken förening bedriver det största antalet idrotter?
Uppgift 4 (3 p)
Alla tabeller i databasen växer och blir mycket stora.
Sökningarna a, b och c i uppgiften ovan körs ofta,
men kanske med andra konstanter än de i uppgiften,
och vi märker att de går för långsamt.
Vi ser att det inte finns några index i databasen, inte ens på nycklar.
a) Hur kan man få sökningen i deluppgift 3a att gå snabbare?
b) Hur kan man få sökningen i deluppgift 3b att gå snabbare?
c) Hur kan man få sökningen i deluppgift 3c att gå snabbare?
Uppgift 5 (3 p)
Ibland lägger man ner en idrottsförening,
och då behöver vi ta bort den ur databasen.
Men för att den inte ska glömmas bort helt,
vill vi flytta den till en annan tabell.
Hur skulle man kunna använda en trigger för det?
Du behöver inte skriva SQL-kommandon,
utan du kan beskriva triggern med ord.
Uppgift 6 (4 p)
Förklara kort vad följande SQL-kommandon gör:
a) DELETE
b) DROP
c) ROLLBACK
d) REVOKE
Uppgift 7 (3 p)
a) Vad menar man i databassammanhang med en transaktion?
b) I samband med transaktioner brukar man tala om ACID-egenskaperna.
Vilken av bokstäverna A, C, I och D är det som handlar om att förhindra
"krockar" mellan samtidiga transaktioner?
c) Många databashanterare använder lås för att förhindra sådana krockar.
Då kan man få deadlock. Vad innebär det?
Uppgift 8 (3 p)
Vad innebär den så kallade tre-schema-arkitekturen?
Vad är det för tre scheman?
Vilka fördelar får man av den arkitekturen?
Uppgift 9 (3 p)
a) Vad innebär SQL-injektion?
b) Är det bra eller dåligt?
c) Visa med ett exempel hur det går till!