Örebro universitet
Institutionen för teknik
Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se)

Tentamen i

Databasteknik
för D1, SDU1 m fl

lördag 28 februari 2009 kl 08:15 - 12:15

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




Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 40.
För betyget 3 respektive G krävs 20 poäng.
Resultat och lösningar: Meddelas på kursens hemsida eller via e-post senast lördag 21 mars 2009.
Återlämning av tentor: Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

En fartkamera. Fotograf: Riggwelter. Licens: Creative Commons. Polisen har placerat ut tusentals fartkameror längs vägarna i Sverige. Kamerorna fotograferar och registrerar förbipasserande fordon och deras hastighet. Med modern teknik kan man automatiskt läsa av nummerskyltarna på de fordon som kört för fort, och sen skicka hem böteskrav till fordonens ägare.

Tyvärr är det många förare som bara saktar in till laglig hastighet precis vid kamerorna, och sen ibland kör ännu fortare mellan kamerorna för att kompensera. Enligt ett kontroversiellt förslag ska man därför inte bara registrera de som kör för fort vid själva kamerorna, utan även de som kör för fort mellan kamerorna. Det gör man genom att registrera alla förbipasserande fordon vid kamerorna, inte bara de som kör för fort. När man har två observationer av samma fordon vid två olika kameror, kan man räkna ut medelhastigheten som fordonet måste ha hållit mellan kamerorna.

Nu behöver polisen förstås en databas för att hålla reda på kameror, fordon och observationer.

Man behöver lagra följande saker i databasen:

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

Implementera den beskrivna databasen i relationsmodellen, dvs översätt 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 (5 p)

Att "implementationen ska vara bra" i frågan ovan innebär bland annat att tabellerna ska uppfylla vissa normalformer.

a) (2p) Vilken normalform vill man normalt att tabellerna i en databas ska uppfylla? Varför?

b) (3p) Välj en av tabellerna i din lösning på uppgift 2 ovan, och ange vilken som är den högsta normalform som den uppfyller. Visa också varför det är så!

Uppgift 4 (10 p)

Formulera följande frågor i SQL.

a) (1p) Var finns kamera nummer 17?

b) (2p) Vad är personnummer och namn för de personer som äger fordon som kört förbi kamera nummer 17 idag (28 februari 2009)?

c) (2p) Vilka kameror har inte gjort några observationer alls idag (28 februari 2009)? (Kanske har någon vandal målat över linserna på dessa kameror!)

d) (3p) Vilket fordon har registrerats flest gånger av kamerorna?

e) (2p) Vilka två kameror är det längst emellan?

Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.

Uppgift 5 (5 p)

a) (3p) Databasen innehåller 2000 kameror, fem miljoner personer, tio miljoner fordon, och flera miljarder observationer. De två SQL-frågorna a och b i uppgiften ovan körs väldigt ofta (men med andra konstanter) och behöver snabbas upp. Vi märker att det inte finns några index alls i databasen, inte ens på nycklar. Vilka index bör man skapa för att just de frågorna ska gå snabbt att köra? Förklara varför!

b) (1p) Vad är det för skillnad på ett index och en nyckel?

c) (1p) Vad är det för skillnad på ett index och en främmande nyckel?

Uppgift 6 (5 p)

IKEA ska samla sina möbler i en databas. IKEA delar in möbler i sittmöbler, bord, förvaringsmöbler och sängar. Alla möbler har ett unikt nummer, ett namn, en vikt och mått (bredd, höjd och djup). Förvaringsmöbler har också en volym.

Sängar delas i sin tur in i enkelsängar och dubbelsängar, medan sittmöbler delas in i stolar, fåtöljer och soffor. Fåtöljer delas in i snurrfåtöljer, vilstolar och vanliga fåtöljer.

a) (2p) Rita ett EER-diagram för den beskrivna databasen.

b) (3p) Översätt EER-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.

Uppgift 7 (5 p)

a) (1p) Varför vill man ibland koppla ihop en webbplats med en databas?

b) (4p) Hur gör man?