Örebro universitet
Institutionen för teknik
Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se)




Tentamen i

Databasteknik
för D1, SDU1 m fl

lördag 27 februari 2010

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 30.
För betyget 3 respektive G krävs 15 poäng.
Resultat och lösningar: Meddelas på kursens hemsida eller via e-post senast lördag 20 mars 2010.
Återlämning av tentor: Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning i L1506, måndag till torsdag kl 10-14.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

Av omtanke om mänskligheten, och för att utöka skattebasen, har den svenska regeringen beslutat att omvandla Sverige till en imperialistisk stormakt. Alla andra länder ska bli svenska kolonier. Därför inrättas ett kolonialdepartement. Kolonialdepartement behöver förstås en databas för att hålla reda på kolonierna. Det man behöver hålla reda på är, mer detaljerat, följande saker:
  1. Kolonierna. Varje koloni har ett unikt nummer, ett unikt namn (till exempel "Frankrike" eller "USA"), en folkmängd och en huvudstad.
  2. Svenskar. Varje svensk har ett unikt personnummer, och ett namn.
  3. Vilka svenskar som är utplacerade i vilka kolonier. En svensk kan (men måste inte) vara utplacerad i en koloni. I varje koloni finns minst en svensk utplacerad.
  4. Vilken svensk som är ansvarig för varje koloni. Varje koloni har en ansvarig svensk (som inte behöver vara utplacerad i den kolonin).
  5. Skatteinbetalningar. Från kolonierna betalas skatt. Varje skatteinbetalning består av ett visst belopp, den kommer från en viss koloni, och det finns en svensk som är ansvarig för den skatteinbetalningen. (Det behöver inte vara samma svensk som är ansvarig för kolonin.) Skatteinbetalningen har också ett visst datum.

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

Implementera den beskrivna databasen i relationsmodellen, dvs översätt ER- (eller EER-)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 (10 p)

Formulera följande frågor i SQL:

a) Vilka svenskar finns i kolonin Norge? Vi vill veta deras personnummer och namn.

b) Danskarna gör revolution, och frigör sig från Sverige. Alla svenskar som fanns i Danmark blir utkastade. Ta bort deras placering i Danmark ur databasen.

c) Vad är den totala summan av inbetalade skatter?

d) Vilka skatteinbetalningar har ansvarats för av svenskar som inte finns i den koloni som inbetalningen kommer från?

e) Vi vill veta namn och personnummer på den svensk som är ansvarig för den största summan av skatteinbetalningar.

Uppgift 4 (7 p)

a) (2p) Databasen innehåller ett hundratal kolonier, flera miljoner utplacerade svenskar, och många miljoner skatteinbetalningar. De två SQL-frågorna a och c i uppgiften ovan körs väldigt ofta (men kanske med andra konstanter) 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) (3p) Finns det något bättre sätt att snabba upp fråga c? Förklara!

c) (2p) Efter att ha skapat indexen provkör vi databasen med de stora datamängderna som vi har, och det visar sig att frågorna går snabbt att köra. Är det något mer vi behöver tänka på när det gäller prestanda, innan vi sätter databasen i skarp drift?

Uppgift 5 (3 p)

Man kan säga att motsatsen till SQL-kommandot grant är SQL-kommandot revoke, eftersom grant delar ut rättigheter och revoke tar bort dem igen.

a) Vad är motsatsen till SQL-kommandot create, som till exempel i create table?

b) Vad är motsatsen till SQL-kommandot insert?

c) Vad är motsatsen till SQL-kommandot commit?