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



Tentamen i

Databasteknik
för D1, SDU1 m fl

tisdag 13 januari 2015

Gäller som tentamen för:
DT1026 Datateknik A, Databasteknik, provkod 0100
DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0310



Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 36.
För betyget 3 respektive G krävs 22 poäng.
För den som följt kursen hösten 2014 ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2014 får dessa (fem) extrapoäng ändå.
Resultat: Meddelas på kursens hemsida eller via e-post senast tisdag 3 februari 2015.
Återlämning av tentor: Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

Databasen LADOK, som används för att lagra studenters kurser och resultat, har blivit så full av gamla resultat att den inte längre går att använda. Därför ska vi skapa en ny databas för Sveriges universitet, kurser och studenter.

Det vi ska lagra i databasen är följande:

Här är ett ER-diagram för databasen (men med ett fel):

Ett ER-diagram

Uppgift 1 (3 p)

a) Det finns ett ganska allvarligt fel i det givna ER-diagrammet, om man jämför med beskrivningen av scenariot och med sin egen erfarenhet av hur ett universitet fungerar i verkligheten. Vilket fel är det?

b) Beskriv någon dålig konsekvens, om vi bygger databasen med felet ovan.

c) Dubbelstrecket mellan Kurs och Ges av anger fullständigt deltagande. Vad betyder det, på mer normal svenska?

Uppgift 2 (7 p)

Implementera den beskrivna databasen i relationsmodellen, dvs översätt ER-diagrammet till tabeller.

Behåll felet från uppgift 1, dvs översätt ER-diagrammet som det ser ut.

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 (5 p)

I databassammanhang talar man ibland om integritetsvillkor (på engelska: integrity constraints).

a) Vad är det?

b) Vad är det bra för?

c) Ge tre exempel på integritetsvillkor av olika typer som kan vara bra att ha i din databas från uppgift 2 ovan.

Uppgift 4 (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. (Eftersom det står i uppgiften att "implementationen ska vara bra", är det förmodligen BCNF.)

Visa sen att tabellen uppfyller den normalformen.

Uppgift 5 (10 p)

Formulera följande frågor i SQL. Använd dina tabeller från uppgift 2. Definiera gärna vyer om det underlättar.

a) Vad heter de kurser som ges av Örebro universitet?

b) Det finns bara en student i hela Sverige som heter Sven Duva. Vad heter de kurser som han läser just nu?

c) Hur många studenter läser nu kursen Databaser som ges av Uppsala universitet?

d) Vilka studenter läser just nu ingenting?

e) Vad är det populäraste kursnamnet? Dvs, vilket namn är det flest kurser som har?

Uppgift 6 (4 p)

I Sverige finns ungefär femtio universitet och högskolor, tusentals kurser, och nästan en miljon studenter. Databasen kommer att användas av alla Sveriges universitet och högskolor för att lagra och söka data.

a) Föreslå en databashanterare som kan vara lämplig att använda.

b) Vi antar att frågorna a och b i uppgift 4 körs ofta, men vi söker inte alltid efter just Örebro universitet och Sven Duva. Vilka index behöver vi skapa för att snabba upp just dessa frågor? Databashanteraren som vi använder skapar inga index automatiskt, inte ens på primärnycklar.

Uppgift 7 (4 p)

Ibland talar man om ACID-transaktioner, där bokstäverna i förkortningen ACID står för Förklara för var och en av de fyra egenskaperna vad den egentligen betyder, och ge exempel på vad som kan hända om den saknas.