Ö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.
|
-
Skriv tydligt och klart. Lösningar som inte går att läsa kan
naturligtvis inte ge några poäng. Oklara formuleringar kommer att
misstolkas.
-
Skriv den personliga tentamenskoden på varje inlämnat blad.
Skriv inte namn eller personnummer på bladen.
-
Lös bara en uppgift per blad. 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
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:
-
Lok, som har ett unikt nummer (till exempel 14),
och en vikt (till exempel 260 ton).
-
Vagnar, som har en tomvikt (till exempel 4 ton)
och en vikt på lasten som den just nu är lastad med (till exempel 10 ton).
-
Tåg, som består av ett lok och upp till 100 vagnar.
-
Järnvägsstationer, som har ett namn, till exempel Örebro Södra.
-
Järnvägssträckor, som i det här sammanhanghet betyger den del av järnvägen som går mellan två stationer.
Man ska kunna lagra järnvägssträckorna, och vilka stationer som de går mellan.
-
Ett tåg kan antingen befinna sig på en station, eller på en järnvägssträcka.
Därför vill vi ha något som vi kallar Tågplatser,
som innefattar både stationer och järnvägssträckor.
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