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






LYCKA TILL!

Scenario till uppgifterna

I Sverige finns cirka 20 000 idrottsföreningar, som bedriver ett stort antal olika idrotter. Till exempel schackboxning:

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:

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!