Ö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 21 augusti 2013

Gäller som tentamen för:
DT1026 Datateknik A, Databasteknik, provkod 0100
DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0310
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 30.
För betyget 3 respektive G krävs 15 poäng.
Resultat: Meddelas på kursens hemsida eller via e-post senast onsdag 11 september 2013.
Å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

Sveriges bilar har drabbats av ett nytt problem: det har börjat växa svampar och rabarber i dem. I varje bil växer det noll, en eller flera svampar samt noll, en eller flera rabarber. Vi skapar förstås en databas för att lagra informationen. Den innehåller de tre tabellerna Bilar, Svampar och Rabarber:

Bilar
Bilnummer Märke Årsmodell
RFN 540 Renault 1999
PXT 158 Citroen 2010
JHR 109 Citroen 2008

Svampar
ID Art Bil
1 Karl-Johan PXT 158
2 kantarell JHR 109
5 fotsvamp null
4 Karl-Johan PXT 158

Rabarber
ID Vikt Bil
1 1.03 JHR 109
4 1.16 JHR 109
3 2.14 null
6 1.16 RFN 540

De understrukna attributen är primärnyckel i respektive tabell. Bil är referensattribut och refererar till tabellen Bilar.

Uppgift 1 (5 p)

Rita ett ER- eller EER-diagram för databasen. Utgå från de givna tabellerna.

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 (8 p)

Formulera följande frågor i SQL. Definiera gärna vyer om det underlättar.

a) Vad är arterna på de svampar som finns i bilen med registreringsnummer RFN 540?

b) Vad är ID-numren på de svampar som finns i bilar av märket Citroen?

c) Vad är den sammanlagda vikten av alla rabarber som finns i bilar av märket Renault?

d) Hur många svmpar finns det i varje bil? Med de exempeldata som gavs i scenariot vill vi ha ett resultat som ser ut så här:

Bilnummer Antal
RFN 540 0
PXT 158 2
JHR 109 1

Uppgift 3 (3 p)

Det finns många miljoner bilar, och ännu fler svampar och rabarber. De tre SQL-frågorna a, b och c i uppgiften ovan körs många gånger, men med andra konstanter (dvs andra bilnummer och bilmärken). Vilka index bör man skapa för att just de frågorna ska gå snabbt att köra? Databashanteraren som vi använder skapar inte några index automatiskt, inte ens på primärnycklar. Motivera svaret!

Uppgift 4 (4 p)

Vi ger följande SQL-kommandon:

start transaction;
insert into Svampar values (171, 'skivsopp', 'RFN 540');
insert into Svampar values (172, 'strutskivling', 'RFN 540');
insert into Svampar values (173, 'gnölfläs', 'PXT 158');
commit;

a)

Antag att strömmen går precis efter att det första insert-kommandot körts, och databasservern stannar. Hur kommer tabellen Svampar att se ut när systemet har startats om?

b)

Antag att strömmen går precis efter att commit-kommandot körts, och databasservern stannar. Hur kommer tabellen Svampar att se ut när systemet har startats om?

c)

Vad händer om man i stället för commit ger kommandot rollback? Hur kommer tabellen Svampar att se ut?

d)

Antag att precis innan vi skriver commit så är det någon annan som loggar in i databasen och skriver det här kommandot:

insert into Svampar values (171, 'smörsopp', 'PXT 158');

Vad händer?

Uppgift 5 (5 p)

En konsult (som kostar 1400 kronor i timmen plus moms) föreslår att man i stället använder en enda tabell för att lagra databasen. Här visas samma data som i exemplet i scenariot:

Bilnummer Märke Årsmodell Svamp-ID Svampart Rabarber-ID Rabarbervikt
PXT 158 Citroen 2010 1 Karl-Johan null null
JHR 109 Citroen 2008 2 kantarell null null
null null null 5 fotsvamp null null
PXT 158 Citroen 2010 4 Karl-Johan null null
JHR 109 Citroen 2008 null null 1 1.03
JHR 109 Citroen 2008 null null 4 1.16
null null null null null 3 2.14
RFN 540 Renault 1999 null null 6 1.16

Förklara vilka problem som finns med detta nya schema!

Om man använder sig av normalformer i svaret, räcker det inte med att säga att tabellen "inte uppfyller normalformen", utan man måste förklara vad problemen är.

Uppgift 6 (5 p)

Förklara skillnaden mellan

a) ett index och en primärnyckel
b) en primärnyckel och en främmande nyckel
c) ett ER-diagram och ett EER-diagram
d) ett schema och en vy
e) en relation och en tabell