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

Tentamen i

Databasteknik
för D1, SDU1 m fl

tisdag 13 januari 2009 kl 08:00 - 12:00

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 40.
För betyget 3 respektive G krävs 25 poäng.
För den som följt kursen hösten 2008 ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2008 får dessa (fem) extrapoäng ändå.
Resultat och lösningar: Meddelas på kursens hemsida eller via e-post senast tisdag 3 februari 2009.
Återlämning av tentor: Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

Läraren är trött på att hitta på uppgifter till sina databastentor, så i fortsättningen kommer han bara att återanvända uppgifter från gamla tentor. Han samlar förstås alla uppgifterna i en databas, tillsammans med studenternas resultat.

Här är ett ER-diagram för databasen:

Ett ER-diagram

Här är några kommentarer om ER-diagrammet:

Uppgift 1 (3 p)

Det finns en eller flera saker som verkar konstiga med ER-diagrammet. (Jämför med din egen erfarenhet av hur tentor fungerar.) Förklara vad, och hur det nog borde vara i stället!

Uppgift 2 (7 p)

Implementera den beskrivna databasen i relationsmodellen, dvs översätt diagrammet till tabeller.

Utgå från det givna ER-diagrammet, och inte eventuella förändringar som du föreslagit i uppgift 1.

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.

Observera att du alltså ska utgå från det givna ER-diagrammet, och inte ha med eventuella förändringar som du föreslagit i uppgift 1.

Uppgift 3 (13 p)

Formulera följande frågor i SQL.

a) (1p) Hur lyder uppgiften med id-nummer 199?

b) (2p) Det är bara en tenta som ges 2009-01-13. Hur lyder uppgift nummer 3 på den tentan?

c) (2p) Vad är maxpoängen på den tentan?

d) (2p) Vilka uppgifter har aldrig varit med på någon tenta? (Vi vill veta de uppgifternas id-nummer.)

e) (3p) Vilken uppgift har varit med på flest tentor? (Vi vill veta den uppgiftens id-nummer.)

f) (3p) Ordna studenterna i ordning efter hur många tentor de skrivit. Studenter med flest tentor ska komma först, och studenter med minst tentor ska komma sist. Även studenter som inte skrivit några tentor alls ska vara med i resultatet, och förstås komma sist. Vi vill ha med studenternas id-nummer och namn.

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

Uppgift 4 (4 p)

Databasen är stor, med många rader i varje tabell. De fyra SQL-frågorna a, b, c och d i uppgiften ovan körs väldigt ofta (men med andra konstanter än 199 och 2009-01-13), 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? Förklara varför!

Uppgift 5 (4 p)

I kursen har vi tagit upp tre databashanterare: Mimer, MySQL och Microsoft Access. Diskutera för var och en av dessa om det hade varit lämpligt att använda just den databashanteraren till den här databasen.

Uppgift 6 (9 p)

För att lägga in en ny student i databasen behövs två SQL-kommandon: först ett kommando för att ta reda på vilket studentnummer (kolumnen Id i tabellen Student) som är det högsta hittills, och sen ett kommando för att lägga in den nya studenten i tabellen.

a) (2p)

Skriv de två SQL-satserna. Vi kan kalla den nya studenten för Olle, och vi kan anta att det högsta studentnumret var 4711.

b) (1p)

Hur gör man för att samla dessa satser i en transaktion?

c) (1p)

Vad är en transaktion?

d) (4p)

Transaktioner ska ha fyra egenskaper, som man brukar ange med förkortningen ACID. Förklara kort vad var och en av dessa egenskaper innebär.

e) (1p)

Visa med ett exempel något fel som skulle kunna uppstå om man inte samlade SQL-satserna från delfråga a i en transaktion.