Örebro universitet
Institutionen för teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
för D1, SDU1 m fl
tisdag 11 januari 2011
Gäller som tentamen för:
DT1012 Datateknik A, Databasteknik, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0310
Hjälpmedel:
|
Inga hjälpmedel.
|
Poängkrav:
|
Maximal poäng är 40.
För betyget 3 respektive G krävs 24 poäng.
För den som följt kursen hösten 2010
ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2010 får dessa (fem) extrapoäng ändå.
|
Resultat och lösningar:
|
Meddelas på kursens hemsida eller via e-post senast tisdag 1 februari 2011.
|
Å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
Många människor är missnöjda med sina julklappar.
De har fått fula tröjor, fel dataspel eller kanske något som kräver ansträngning,
som sportutrustning eller pussel.
För att hjälpa dem ska vi starta webbplatsen julklappsbyte.se,
och då behöver vi förstås en databas.
Så här ser kan ett ER-diagram för databasen se ut:
Här är några förklaringar om de saker man vill lagra i databasen:
-
Personer.
Detta är webbplatsens besökare, som registrerar sig för att de vill bli av med, eller få, julklappar.
-
Julklappar.
Det är de julklappar som besökarna själva skriver in på webbplatsen att de vill bli av med eller byta till sig.
Varje julklapp är en enda, bestämd sak, till exempel just det här paret strumpor som ligger här på bordet.
-
Julklappstyper.
Eftersom besökarna själva får skriva in uppgifter om julklapparna,
kommer det att dyka upp många olika sätt att beskriva samma vara.
Därför kommer webbplatsens personal att försöka identifiera
om flera inmatade julklappar är av samma typ.
Till exempel kan olika besökare som fått TV-spel från Microsoft ha matat in de olika julklapparna
X-box, X BOX och Ecks-bocks,
och personalen kan då lägga in att alla dessa egentligen är av julklappstypen Xbox.
-
Det ska förstås också gå att lagra vilka personer som har (och vill bli av med) vilka julklappar,
och vilka personer som vill ha vilka julklappar.
Uppgift 1 (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 2 (10 p)
Formulera följande frågor i SQL:
a)
Hur många personer finns just nu registrerade på webbplatsen?
b)
Vad är e-postadresserna till de personer som vill bli av med blåa ylletröjor?
c)
Jag heter Thomas Padron-McCarthy.
Vad är namnen på de julklappar som jag vill ha?
d)
Vilka julklappar vill ingen ha?
Vi vill veta numret och namnet på dessa julklappar.
e)
Vad heter den julklappstyp är mest efterfrågad?
Definiera gärna vyer om det underlättar frågorna.
Uppgift 3 (5 p)
a) (3p)
Databasen innehåller många tusen rader i varje tabell.
De tre SQL-frågorna a, b och c i uppgiften ovan
körs väldigt ofta
(men med andra konstanter, till exempel andra personnamn än Thomas Padron-McCarthy)
och behöver snabbas upp.
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 just de frågorna ska gå snabbt att köra?
Motivera svaret!
b) (1p)
Vad är ett index?
c) (1p)
Hur kan index göra att frågorna går snabbare att köra?
Frågorna ska väl inte ändras?
Uppgift 4 (3 p)
Vilken databashanterare bör vi välja för vår databas?
Nämn minst tre olika databashanterare, och tala om varför, eller varför inte,
de passar för den här tillämpningen.
Uppgift 5 (5 p)
Ibland talar man om ACID-transaktioner,
där bokstäverna i förkortningen ACID står för
- atomicitet,
- consistency preserving, dvs "konsistensbevarande" eller "konsekvensbevarande",
- isolering och
- durability, dvs "hållbarhet".
Ge för var och en av dessa egenskaper ett exempel på något dåligt som kan hända i vår julklappsdatabas om den saknas.
Uppgift 6 (2 p)
Visa med ett par enkla exempel från julklappsdatabasen
vad man har SQL-kommandona grant och revoke till.
Glöm inte att förklara vad som händer!
Uppgift 7 (6 p)
Ge, för var och en av följande saker,
ett kort exempel som tydligt visar vad man kan ha den till:
a)
XML
b)
Triggers
c)
Yttre join
Använd gärna julklappsdatabasen i exemplen,
men i den här frågan är det inget krav.
Uppgift 8 (3 p)
Vi vill skapa en databas med data om svampar.
Varje svamp har ett nummer, en höjd och en vikt.
All svampar är av en av tre sorter: storsvampar, mellansvampar och småsvampar.
Småsvampar indelas i sin tur i minisvampar och pyttesvampar.
Alla småsvampar har en färg,
och pyttesvampar har dessutom en maskstatus.
a)
Rita ett EER-diagram över svampdatabasen.
b)
Översätt till tabeller.
Redovisa svaret på ett tydligt och lättfattligt sätt.