Ö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.



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:

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