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








Tentamen i

Databaskonstruktion

för D1, SDU1 m fl

lördag 3 mars 2007 kl 08:00 - 13:00 i L001








Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 48.
För betyget 3 respektive G krävs 24 poäng.
Resultat och lösningar: Meddelas på kursens hemsida senast lördag 24 mars 2007.
Visning: Måndag 26 mars 2007 kl 12:00-12:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på expeditionen.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070-7347013.



LYCKA TILL!

Scenario till uppgifterna

Polisen i Örebro arbetar med att minska utbudet av svarttaxi, och nu behöver de en relationsdatabas för att lagra information om svarttaxiverksamheten. Det man behöver lagra i databasen är, mer detaljerat, följande:
  1. Bilar som används eller använts för att köra svarttaxi. Varje svarttaxibil har förstås ett registreringsnummer, till exempel RFN 540. Den är av ett visst märke, en viss modell och en viss årsmodell. Det kan till exempel vara en Volvo av modellen 240 från 1985. Den har också en ägare.
  2. Personer, som dels är ägare av svarttaxibilarna, och dels kör dem. Varje person har ett namn och ett personnummer. I databasen vill vi lagra dels vilka bilar varje person äger, och dels vilka bilar de brukar köra. Varje person kan äga flera bilar, men varje bil ägs av exakt en person. Varje person kan köra flera bilar, och varje bil kan köras av flera personer.
  3. Gripanden. Då och då stoppar polisen en svarttaxi, och griper föraren och hans eventuella medhjälpare. Ett gripande sker vid ett datum och en tidpunkt. Det kan hända att det är flera personer som grips vid ett och samma gripande, och det är alltid minst en person som grips. Det kan, men behöver inte, vara en eller flera svarttaxibilar inblandade i varje gripande. En person kan gripas flera gånger. En bil kan vara inblandad i flera gripanden.

Uppgift 1 (7 p)

Rita ett ER-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-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å vad som är primärnyckel, och 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) (2p) Berra Bengtsson äger flera bilar. Vilka märken har dessa bilar?

b) (2p) Vilka personer äger bilar som varit inblandade i gripanden? Vi vill veta dessa personers personnummer och namn.

c) (2p) Vilka personer har gripits? Vi vill veta deras personnummer och namn.

d) (3p) Vem kör flest bilar? Vi vill veta den personens personnummer och namn.

e) (3p) Vi vill ha en lista över alla personer (med personnummer och namn) och hur många bilar de brukar köra. Personer som inte brukar köra några bilar alls ska också vara med, med antalet noll.

Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.

Uppgift 4 (4 p)

SQL-frågorna a, b och c i uppgiften ovan körs väldigt ofta, och behöver snabbas upp. Vi märker att det inte finns några index alls i databasen, inte ens på primärnycklar. Vilka index bör man skapa för att frågorna a-c ska gå snabbt att köra? Motivera valet!

Svarttaxiverksamheten i Örebro är mycket omfattande, med tusentals bilar och förare, och många tusen gripanden.

Uppgift 5 (6 p)

Om man frågar en bibliotekarie, så består världen av böcker och låntagare. En bok har ett nummer och en titel. En låntagare har ett nummer, ett namn och en adress.

En bok är antingen en fackbok eller en skönlitterär bok, och skönlitterära böcker delas i sin tur in i romaner och novellsamlingar. En novellsamling har ett antal, som anger hur många noveller den innehåller.

a) (3p) Rita upp ett EER-diagram över böckerna och låntagarna.

b) (3p) Översätt 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å vad som är primärnyckel, och vilka referensattribut som finns och vad de refererar till.

Uppgift 6 (6 p)

Vad är det för skillnad på:

a) en databashanterare och en databasadministratör
b) ett databasschema och en datamodell
c) logiskt och fysiskt dataoberoende

Uppgift 7 (3 p)

a) Vad innebär SQL-injektion?
b) Är det bra eller dåligt?
c) Visa med ett exempel hur det går till!

Uppgift 8 (4 p)

I databassammanhang pratar man om ACID-transaktioner.

a) Vad är en transaktion?

b) Förklara vad förkortningen ACID innebär. (Berätta gärna vad bokstäverna står för, men det viktigaste är att förklara vad de innebär!)