Ö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.
|
-
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
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:
- Språk, som har ett unikt namn, till exempel svenska eller rätoromanska (som är ett språk som talas i Schweiz).
- Ord, som är ord, till exempel skola och school.
Notera att skola och school är olika ord, trots att de betyder samma sak.
Varje ord hör till ett visst språk.
- Begrepp. Ett begrepp är den idé som ett ord uttrycker.
Exempelvis uttrycker det svenska ordet skola och det engelska ordet school samma idé,
trots att de skrivs på olika sätt.
Varje begrepp får ett unikt nummer, men inget namn (för vilket språk skulle det namnet skrivas på?).
- Kopplingarna mellan orden och begreppen,
så att vi till exempel kan lagra att
både det svenska ordet skola och det engelska ordet school är kopplade till samma begrepp.
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)