Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
onsdag 13 mars 2024
Gäller som tentamen för:
DT105G Databasteknik, provkod A001
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 40.
För godkänt betyg krävs 24 poäng,
varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
|
Resultat:
|
Meddelas senast 15 arbetsdagar efter tentamensdatum.
|
Återlämning av tentor:
|
Elektroniskt via webbportalen Studenttjänster.
|
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 och tvetydiga 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
Med nya EU-regler om spårbar och miljövänlig äggproduktion måste
vi hålla reda på exakt vilken höna som lagt vilket ägg.
Därför ska vi märka alla hönorna och alla äggen med streckkoder,
och lagra data om dem i en databas.
Mer bestämt ska databasen innehålla:
-
Hönorna.
Varje höna har ett unikt nummer
och ett namn, som inte behöver vara unikt.
Dessutom en vikt och ett kläckningsdatum, som är när den hönan kläcktes ur ägget.
-
Släktskap.
En del av hönorna har kläckts ur ägg som värpts av en annan höna.
Det vill vi lagra i databasen.
-
Äggen.
Varje ägg har ett unikt nummer, en vikt och ett datum när det värptes
(dvs när hönan lagt ägget).
Vi ska också lagra vilken höna som lagt ägget.
-
Hönor kan drabbas av en mängd olika sjukdomar.
Varje sjukdom har ett unikt namn,
som ankpest, duvpest eller gåspest.
-
Hönorna vaccineras mot de olika sjukdomarna.
Vi ska lagra vilka hönor som vaccinerats mot vilka sjukdomar,
och datumet när det gjordes.
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 uppgifterna 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 (12 p)
Formulera följande frågor i SQL.
Definiera gärna vyer eller CTE:er om det underlättar, men skapa inte nya tabeller.
a) (1p)
Vilka olika sorters pest finns det?
Dvs, vad heter de sjukdomar vars namn innehåller "pest"?
b) (1p)
Vad heter de sjukdomar vars namn inte innehåller "pest"?
c) (1p)
Här är ägg nummer 1234567.
Vad heter hönan som värpt det ägget?
d) (1p)
Vad väger alla hönorna tillsammans?
e) (3p)
Det kan vara svårt att hitta på namn till alla hönorna,
och det blir lätt så att man har hundratals hönor som heter Agda.
Hur många hönor finns det som har vart och ett av de olika namnen?
Vi vill ha dem sorterade i ordning med namnet som har flest hönor först.
f) (3p)
Vad heter den sjukdom som vi har vaccinerat flest hönor mot?
g) (2p)
En sjukdom som alla hönorna är vaccinerade mot
är det ingen risk att vi får ett utbrott av.
Vilka sjukdomar har vi inte vaccinerat alla hönorna mot?
Uppgift 4 (5 p)
Alla tabeller i databasen växer och blir mycket stora.
De fyra första sökningarna i deluppgiften ovan,
alltså deluppgift 3a, 3b, 3c och 3d,
körs ofta, men kanske med andra konstanter än de i uppgiften.
Vi vill få dem att gå snabbare.
Vilka index bör vi skapa för att de sökningarna ska gå snabbare?
Från början finns det inga index i databasen, inte ens på nycklar.
Är det kanske så att för en del av sökningarna hjälper det inte att skapa index?
Vilka sökningar är det,
och kan vi göra något annat för att få de frågorna att gå snabbare?
Uppgift 5 (6 p)
I samband med transaktionshantering i databaser talar man om
de så kallade ACID-egenskaperna.
a)
Beskriv, för var och en av ACID-egenskaperna,
något problem som kan uppstå i just den här databasen med hönor och ägg
om den egenskapen inte upprätthålls.
b)
ACID-egenskaperna skulle kunna upprätthållas
av databashanteraren, av applikationsprogrammet eller av användaren.
Vilket av dessa alternativ är bäst, och varför?
Uppgift 6 (3 p)
Ett flygbolag vill hålla reda på resenärernas väskor.
Varje väska har ett unikt nummer och en vikt,
samt mått som består av bredd, höjd och djup.
Varje väska här också till en viss resenär,
och resenärerna har namn och ett unikt nummer.
En del av väskorna är resväskor,
och eftersom resväskor ofta har hjul
ska man lagra antalet hjul på varje resväska.
En del av väskorna är handväskor,
och eftersom handväskor kan vara mycket dyra
ska man hålla reda på priset för varje handväska.
Rita ett EER-diagram för flygbolagets väskor och resenärer!
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 7 (3 p)
Inom databasområdet finns många förkortningar.
Ange för var och en av de här förkortningarna vad den betyder, och förklara kort vad det är.
DBA
DBMS
DDL
DML
JSON
XML