Ö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 20 augusti 2014
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 36.
För betyget 3 respektive G krävs 18 poäng.
|
Resultat:
|
Meddelas på kursens hemsida eller via e-post senast onsdag 10 september 2014.
|
Å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
Starcraft är ett populärt spel, särskilt i Sydkorea.
Där har man Starcraft-matcher som visas för publik och sänds i TV:
Nu ska vi organisera en Starcraft-turnering med hjälp av en databas.
Det vi ska lagra i databasen är, mer detaljerat, följande saker:
-
Spelare. Varje spelare har ett unikt namn, till exempel Kim.
Varje spelare i databasen får också ett unikt nummer.
-
Matcher.
I varje match spelar två spelare mot varandra. Varje match har ett unikt nummer
och den spelades ett visst datum.
Dessutom måste man kunna lagra resultatet, dvs vilken av spelarna i matchen som vann.
Samma två spelare kan spela flera olika matcher mot varandra.
-
Lag.
Varje spelare tillhör ett lag.
Laget har ett unikt namn, till exempel SK Telecom T1.
Varje lag i databasen får också ett unikt nummer.
-
Vi vill också hålla reda vilka energidrycker spelarna tycker om.
En energidryck har ett unikt namn, till exempel Hot6, och en tillverkare, till exempel Lotte.
En spelare kan tycka om en eller flera olika energidrycker.
-
Vi vill också hålla reda på vilket grafikkort varje spelare har som favorit.
Ett grafikkort har ett unikt namn, till exempel Nvidia Geforce GTX Titan Z
och ett pris, till exempel 25099 kronor.
Varje spelare tycker om ett enda grafikkort.
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 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 (6 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 (3 p)
a)
Det står i uppgiften ovan att du ska ange vilka relationer som finns.
Vad är en relation?
b)
Det står också att du ska ange alla kandidatnycklar.
Vad är det för skillnad på en kandidatnyckel och en främmande nyckel?
c)
Vad är det för skillnad på ett referensattribut och en främmande nyckel?
Uppgift 4 (12 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) Vilket nummer har spelaren som heter Kim?
b) Vad heter laget som Kim är med i?
c) Vilka energidrycker tycker Kim om?
d) Vilka datum har Kim spelat matcher?
e) Vilket lag har flest spelare?
f) Hur många spelare har varje lag?
Vi vill ha en lista med lagens namn och antalet spelare i laget.
Även lag som inte har några spelare alls ska vara med i listan, med antalet noll.
Uppgift 5 (6 p)
Vi vill organisera en landsomfattande turnering, med miljoner spelare och matcher.
a) Kommer en vanlig databashanterare att kunna hantera dessa datamängder med rimliga prestanda?
Motivera svaret!
b) Föreslå en databashanterare som vi kan använda.
Motivera svaret!
c) Vi antar att frågorna a, b och c i uppgift 4 körs ofta, och vi behöver snabba upp just dessa frågor.
Vilka index behöver vi skapa?
Databashanteraren som vi använder skapar inga index automatiskt, inte ens på primärnycklar.
d) Vad är det för skillnad på ett index och en tabell?
Uppgift 6 (3 p)
Spelare kan vara antingen professionella eller amatörer.
Professionella spelare har, förutom de vanliga spelaregenskaperna som angetts i scenariot,
även en lön och ett företag som de är anställda av.
a) Rita ett EER-diagram med spelare, professionella spelare, amatörspelare och företag,
samt sambanden mellan dem.
b) Översätt det EER-diagrammet till tabeller.