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




Tentamen i

Databasteknik
för D1, SDU1 m fl

onsdag 18 augusti 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 32.
För betyget 3 respektive G krävs 16 poäng.
Resultat och lösningar: Meddelas på kursens hemsida eller via e-post senast onsdag 8 september 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 uppgift 1-4

Försvarets forskningsinstitut, FOI, genomför i hemlighet rymdfärder till främmande planeter. Nu behöver man en databas för att administrera rymdfärderna.

I databasen lagras data om ett antal planeter, som var och en har ett unikt nummer, ett namn, och ett avstånd från jorden. Man lagrar också data om FOI:s olika rymdskepp, som vart och ett har ett unikt nummer och ett unikt namn. Man har också företagit ett antal expeditioner. Varje expedition har ett unikt nummer, ett startdatum (när man lämnade jorden) och ett returdatum (när man kom tillbaka).

I varje expedition deltog ett eller flera rymdskepp. Varje expedition besöker noll, en eller flera planeter. Samma rymdskepp kan ingå i flera olika expeditioner. Samma planet kan besökas av flera olika expeditioner.

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

Formulera följande frågor i SQL:

a) Vilka rymdskepp har namn som börjar på X? Vi vill veta deras namn.

b) Vilka expeditioner har ännu inte återvänt? (Man ser det på att deras returdatum är null.) Vi vill veta expeditionernas nummer, och när de åkte.

c) Vilka planeter har rymdskeppet "Stålkomet 7" besökt? Vi vill veta planeternas namn och nummer.

d) Hur många expeditioner har besökt planeten "Ismisär 2"?

e) Vilken planet ligger längst bort? Vi vill veta den planetens namn och nummer.

f) Vi vill ha fram en lista med antalet planeter som varje rymdskepp besökt. Resultatet ska se ut ungefär så här:

+--------+-------------+-------+
| Nummer |     Namn    | Antal |
+--------+-------------+-------+
|     17 | Stålkomet 7 |    13 |
|      4 | Dunderplutt |     0 |
|     11 | Stålkomet 5 |     9 |
+--------+-------------+-------+
Formulera en SQL-fråga som ger ett sådant svar!

(Tänk på att eftersom rymdskeppet "Dunderplutt" inte besökt några planeter alls, så får man inte med det alls i svaret om man inte gör på ett speciellt sätt när frågan formuleras.)

Definiera gärna vyer om det underlättar frågorna.

Uppgift 4 (3 p)

Alla rymdfärderna är hemliga, men en del av expeditionerna är extra hemliga, så att bara vissa särskilt säkerhetskollade anställda får känna till dem. Vilka mekanismer brukar finnas i en databashanterare för att hjälpa till med detta? Hur gör man?

Uppgift 5 (4 p)

Många databashanterare stöder ACID-transaktioner, där A:et står för "atomicitet" och D:et för "durability", dvs "hållbarhet" på svenska.

a) Ge ett exempel på hur illa det kan gå om man använder den databashanterare som inte erbjuder atomicitet!

b) Ge ett exempel på hur illa det kan gå om man använder den databashanterare som inte erbjuder hållbarhet!

Uppgift 6 (3 p)

Du skapar en databas åt ett litet företag. Du börjar med att rita ett ER-diagram, som du sen översätter till tabeller, och sen lägger in i databashanteraren med create table-kommandon. Du ser också till att få med de integritetsvillkor som gäller för databasen.

När du testkör fungerar allt bra, och i början fungerar det utmärkt även i skarp drift. Men efter ett år eller så ringer de från företaget och klagar över att databasen går trögt. Frågorna tar lång tid att köra.

Vad kan ha blivit fel? Hur bör du lösa problemet?