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




Tentamen i

Databasteknik

torsdag 2 januari 2020

Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod 0100


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 på kursens hemsida eller via e-post senast torsdag 23 januari 2020.
Å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

Laxå universitet, som är känt för att ha varit med på den förra tentan i kursen, men som inte är särskilt känt i övrigt, har startat ett forskningsprojekt om maskinöversättning mellan naturliga språk, som svenska och engelska. Forskningsprojekt behöver en databas för att hålla reda på ord och vad de heter i olika språk, och därför har har man gjort en tabell:

Ord
Nummer Svenska Engelska Tyska Smurfspråk Kattspråk
1 bil car Auto smurf mjau
2 skola school Schule smurf mjau
3 hus house Haus smurf mjau

Den tabellen har nackdelen att om man vill lägga in ett nytt språk i databasen, till exempel finska, måste man ändra schemat på tabellen. Den enda som kan ändra schemat är en konsult från Örebro, och hon tar 2000 kronor i timmen plus resekostnader, traktamente och moms. Det har Laxå universitet inte råd att betala.

Därför vill vi skapa en ny databas, där de olika språken finns i databasens data i stället för i dess schema, så det blir enkelt att lägga till nya språk.

Vad behövs då i databasen? Jo:

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 (9 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) Vad heter det svenska ordet hus på engelska?

b) (2p) Vilka svenska ord innehåller bokstaven a?

c) (2p) Vilka ord på svenska har ingen motsvarighet på tyska?

d) (3p) Vilket språk har flest ord?

Uppgift 5 (5 p)

Forskningsprojektet växer, och alla tabeller blir mycket stora. SQL-frågorna börjar bli långsamma. Fråga a i uppgift 3, om vad det svenska ordet hus heter på engelska, ställs ofta, men kanske om andra ord och språk, till exempel att vi vill veta vad det spanska ordet marinero heter på ryska. Vi ser också att det inte finns några index i databasen, inte ens på nycklar.

a) Varför skulle bristen på index få frågorna att gå långsamt att köra?

b) Vilka index bör man skapa för att den angivna frågan ska gå snabbare att köra?

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

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

Uppgift 7 (3 p)

Vad är skillnaden på en lagrad procedur och ett program som innehåller SQL-kommandon? Vilket är bäst?

Uppgift 8 (5 p)

Förklara kort vad som menas med:

a) Atomicitet (A:et i ACID)
b) Atomära värden (som krävs av första normalformen)
c) Konsistensbevarande (C:et i ACID)
d) Aktiv databas
e) SQL-injektion (på engelska: SQL Injection)