Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se)
Tentamen i
Databasteknik
måndag 3 juni 2019
Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod 0100
Hjälpmedel:
|
Ordbok för översättning.
|
Poängkrav:
|
Maximal poäng är 43.
För godkänt betyg krävs 25 poäng,
varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
För den som följt kursen våren 2019
ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen våren 2019 får dessa (fem) extrapoäng ändå.
|
Resultat:
|
Meddelas på kursens hemsida eller via e-post senast måndag 24 juni 2019.
|
Återlämning av tentor:
|
Elektroniskt via Studentforum.
|
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
Det har nyligen varit val till Europaparlamentet,
och vi vill lagra resultaten från det och andra EU-val.
Vi behöver förstås en databas för det!
Det som ska lagras i databasen är följande:
-
Länder som är med i EU, och som har partier som medborgarna i landet kan rösta på.
Varje land har ett unikt namn, till exempel Sverige eller Tyskland.
-
Partier som väljarna kan rösta på.
Varje parti har ett unikt namn,
till exempel Socialdemokraterna eller Moderaterna.
Varje parti hör till ett land,
till exempel att Socialdemokraterna hör till Sverige.
-
Partigrupper är sammanslutningar av partier.
Varje partigrupp har ett unikt namn,
som EPP, ECR eller ENF,
och den kan innehålla ett eller flera partier.
Ett parti kan bara vara med i en partigrupp,
men det finns partier som inte är med i någon partigrupp alls.
-
Val, till exempel det nyligen hållna valet 2019.
Varje val har ett unikt år, som 2014 eller 2019.
-
Partierna deltar i valen.
Till exempel kan Socialdemokraterna ha deltagit i valet 2014 och valet 2019,
så varje parti kan delta i flera val.
I varje val är det förstås flera partier som deltar.
I varje val får partiet ett antal röster.
För enkelhets skull tänker vi oss att partier aldrig ändrar
vilken partigrupp de tillhör.
Partierna flyttar inte heller till andra länder.
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 (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 (9 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) (2p)
Vilka partier finns i Sverige och Tyskland?
Vi vill alltså veta namnen på alla partier från Sverige och från Tyskland.
b) (2p)
Vilka partier från Sverige är med i partigruppen EPP?
c) (2p)
Totalt hur många röstade i Sverige
i EU-valet 2019?
d) (3p)
Vad heter den partigrupp som fick
flest röster i EU-valet 2019?
Uppgift 4 (2 p)
Man kanske vill ha med inte bara antalet röster som varje parti fick,
utan också hur många procent av rösterna de fick.
Hur skulle man kunna lösa det med en vy?
Om du inte vill skriva SQL-kod,
kan du i stället förklara hur det skulle fungera.
Uppgift 5 (5 p)
Här är ett försök att lösa uppgift 2 ovan,
med en databas som bara består av en enda tabell.
Den ser ganska rimlig ut, och skulle man visa valresultatet
som en tabell i en tidning skulle den mycket väl kunna se ut så här.
Valresultat |
Parti | Land | Grupp | År | Röster |
Vänsterpartiet | Sverige | GUE/NGL | 2019 | 267949 |
Socialdemokraterna | Sverige | S&D | 2019 | 940131 |
Miljöpartiet | Sverige | G/EFA | 2019 | 454336 |
Kristdemokraterna | Sverige | EPP | 2019 | 344884 |
Centerpartiet | Sverige | Alde | 2019 | 429811 |
Liberalerna | Sverige | Alde | 2019 | 163169 |
Moderaterna | Sverige | EPP | 2019 | 670931 |
Sverigedemokraterna | Sverige | ECR | 2019 | 614699 |
a)
Om vi betraktar tabellen som en tabell i en relationsdatabas,
och inte en tabell som är tryckt i en tidning,
vilka kandidatnycklar finns i tabellen?
b)
Vilka fullständiga funktionella beroenden finns i tabellen?
c)
Vilka av de fyra normalformerna
1NF, 2NF, 3NF och BCNF
uppfyller tabellen?
d)
Motivera svaret i c-uppgiften ovan!
Uppgift 6 (4 p)
a) Vad skulle transaktioner kunna behövas till i EU:s valdatabas?
b) Databashanterare brukar använda en loggfil.
Vad är det som lagras på loggfilen,
och vad har man för nytta av den
i samband med transaktioner?
Uppgift 7 (5 p)
a) (3p)
Visa med ett par enkla exempel
vad man har SQL-kommandona grant och revoke till.
Glöm inte att förklara vad som händer!
b) (2p)
Visa hur man kan kombinera grant och revoke
med vyer för att ge en mer finkornig kontroll av vad användarna får göra med databasen.
Uppgift 8 (3 p)
Förklara vad ett B-träd är, och särskilt hur B-träd skiljer sig från binära träd.
Varför används B-träd ofta i databashanterare?
Uppgift 9 (4 p)
I databaser kan det förekomma redundans av olika slag.
Förklara vad som menas med redundans.
Beskriv också två olika typer av redundans som kan förekomma,
och i vilka sammanhang de förekommer.
Vilka fördelar och nackdelar finns med de olika typerna av redundans?