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




Tentamen i

Databasteknik

för D1, SDU1 m fl

lördag 9 februari 2008 kl 08:00 - 12:00

Gäller som tentamen för:
DT1012 Datateknik A, Databasteknik, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0310
DAT024 Databaskonstruktion, provkod 0300 (och 0100)
TDD121 Tillämpad datavetenskap A, provkod 0500 (och 0300)





Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 41.
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 23 februari 2008.
Visning: Tisdag 26 februari 2008 kl 15:00-15:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070-7347013.



LYCKA TILL!

Scenario till uppgifterna

Ett ånglok. Fotograf: Frederik Tellerup. Licens: Creative Commons.
Figur 1. Ett tåg.

Vi ska skriva ett tågspel, där man tävlar med tåg på järnvägen. Tågspelet innehåller följande tre typer av saker:

Uppgift 1 (6 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 3 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å vad som är primärnyckel, och vilka referensattribut som finns och vad de refererar till.

Implementationen ska vara bra.

Uppgift 3 (10 p)

Formulera följande frågor i SQL.

a) (1p) Hur mycket väger lok nummer 14?

b) (1p) Det står just nu ett enda tåg på stationen Örebro Södra. Vilket nummer har det tågets lok?

c) (2p) Det står fortfarande ett enda tåg på stationen Örebro Södra. Hur mycket väger det tåget?

d) (3p) På Örebro Central står det flera tåg. Hur många vagnar har det längsta av de tågen?

e) (3p) Vad heter de järnvägsstationer som är grannar till Örebro central? Man vill alltså veta namnen på de järnvägsstationer som ligger en järnvägssträcka bort från Örebro Central.

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

Uppgift 4 (3 p)

SQL-frågorna a, b och c i uppgiften ovan körs väldigt ofta (men med andra konstanter än 14 och Örebro Södra), och behöver snabbas upp. Alla tabeller innehåller många rader. 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 frågorna a, b och c ska gå snabbt att köra? Motivera valet!

Uppgift 5 (7 p)

a) (3p)

Skriv de SQL-satser som behövs för att flytta ett tåg från Örebro Central till Örebro Södra.

b) (1p)

Hur gör man för att samla dessa satser i en transaktion?

c) (1p)

Vad är en transaktion?

d) (2p)

Vilka fel skulle kunna uppstå i vårt tågspel om man inte samlade SQL-satserna från delfråga a i en transaktion?

Uppgift 6 (10 p)

Förklara kort vad var och en av följande saker är, och ge ett exempel på hur den skulle kunna användas i vårt tågspel.

a) Integritetsvillkor
b) XML
c) Trigger
d) GRANT
e) Oracle