Ö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
onsdag 19 augusti 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 33.
För betyget 3 respektive G krävs 17 poäng.
|
Resultat:
|
Meddelas på kursens hemsida eller via e-post senast onsdag 9 september 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.
|
-
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.
-
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
Institutionen för parapsykologi och astrologi,
som nyligen öppnats vid Örebro universitet,
bedriver forskning om spöken.
Vi ska hjälpa dem att skapa en databas.
Det vi ska lagra i databasen är följande:
-
Spöken.
Varje spöke får ett unikt nummer,
och ibland har de också ett (inte nödvändigtvis unikt) namn.
De kan också ha en kort beskrivning.
-
Spökhus.
Varje spöke bor i ett spökhus.
Det kan bo flera spöken i samma spökhus.
Varje spökhus har en unik adress,
och ibland har det också ett namn.
-
Vittnen.
Ibland är det någon människa som ser ett spöke.
Vi vill registrera detta i databasen.
Varje vittne har ett unikt personnummer och ett namn.
Vi vill också lagra vilka spöken som varje vittne har sett,
och vilka dagar det skedde.
Varje vittne kan se flera olika spöken,
och varje spöke kan ha setts av flera olika personer.
-
Parapsykologer
är personer som undersöker spökhusen.
Varje parapsykolog har ett namn, och får också ett unikt nummer.
Vi vill också lagra vilka spökhus som varje parapsykolog har undersökt,
och vilka dagar det skedde.
Varje parapsykolog kan undersöka flera olika spökhus,
och varje spökhus kan ha undersökts av flera olika parapsykologer.
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 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 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 (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) Här är spöke nummer 17.
Vilken adress bor det spöket på?
b) Här är spöke nummer 18.
Hur många spöken bor i spökhuset som det spöket bor i?
c) Vi vill ha adresserna till alla de spökhus
där någon har sett minst ett spöke.
d) Finns det några spökhus där ingen har sett något spöke?
Vi vill ha adresserna till de spökhusen.
e) Vad heter det vittne som har sett flest olika spöken?
Uppgift 4 (3 p)
Spökerierna blir värre och värre,
och databasen växer.
Alla tabellerna blir så stora att
SQL-frågorna i uppgiften ovan börjar gå långsamt att köra.
Vilka index behöver vi skapa för att snabba upp frågorna a, b och c i uppgiften ovan?
Databashanteraren som vi använder skapar inga index automatiskt, inte ens på primärnycklar.
Uppgift 5 (2 p)
Ge två exempel på index som man skulle kunna skapa i vår exempeldatabas,
men som inte kommer att få frågorna a, b och c i uppgift 3 att gå snabbare.
Förklara för vart och ett av dem varför de 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 (5 p)
Vad är skillnaden mellan:
a) inre join och yttre join
b) WHERE och HAVING
c) UPDATE och ALTER
d) DROP och DELETE
e) en tabell och en relation