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



Tentamen i

Databasteknik

för D1, SDU1 m fl

lördag 15 december 2007 kl 14:00 - 18:00 i L001

Gäller som tentamen för:
DT1012 Datateknik A, Databasteknik, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0310
DAT024 Databaskonstruktion, provkod 0300 (och 0100)
TDD121 Tillämpad datavetenskap A, provkod 0500 (och 0300)





Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 46.
För betyget 3 respektive G krävs 26 poäng.
För den som följt kursen hösten 2007 ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2007, får dessa (fem) extrapoäng ändå.
Resultat och lösningar: Meddelas på kursens hemsida eller via e-post senast lördag 5 januari 2008.
Visning: Tisdag 8 januari 2008 kl 15:00-15:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070-7347013.



LYCKA TILL!

Scenario till uppgift 1-4

Det är populärt nuförtiden att bygga om sitt kök, och då sätter man in nya skåp och luckor, ny spis och så vidare.

Köksfirman Kök & Co säljer kök, och behöver en databas för att hålla reda på sin verksamhet. Det här är vad man behöver lagra i databasen:

  1. Kunder. En kund har ett unikt nummer, ett namn och en adress.
  2. Skåptyper. Varje skåptyp har ett unikt nummer, ett namn (till exempel "smalt hörnskåp med lådor") och ett pris.
  3. Kök. Ett kök har ett unikt nummer, och ett leveransdatum. Varje kök innehåller ett eller flera skåp av de olika skåptyperna. Man kan ha mer än ett skåp av en viss skåptyp i köket, till exempel tre smala hörnskåp med lådor. Ett kök säljs till en viss kund, men varje kund kan köpa flera kök.

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

Formulera följande frågor i SQL.

a) (1p) Vad är numren på det eller de kök som kund nummer 167 har köpt?

b) (2p) Vilka datum levererades de kök som innehåller skåptypen "grytskåp"?

c) (1p) Ange namnen på de skåptyper som inte ingår i några kök.

d) (3p) Hur många grytskåp har kunden som heter Öbo sammanlagt köpt i alla sina kök?

e) (3p) Vad är namnet på den kund som köpt flest kök?

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

Uppgift 4 (3 p)

SQL-frågorna a och b i uppgiften ovan körs väldigt ofta (men med andra konstanter än 167 och grytskåp), och behöver snabbas upp. Alla tabeller innehåller många rader. 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 frågorna a och b ska gå snabbt att köra? Motivera valet!

Uppgift 5 (7 p)

Världen innehåller saker, som antingen kan vara vassa eller runda. Alla saker har en vikt. Vassa saker har en vasshet. Runda saker har en diameter. Saxar är en sorts vassa saker. En sax har inga särskilda egenskaper förutom vassheten. Bollar år runda, och är därför en sorts runda saker. Förutom diametern har en boll också en studskoefficient, som anger hur högt den studsar.

a) (3p)

Rita ett EER-diagram som innehåller de fem entitetstyperna sak, vass sak, rund sak, sax och boll.

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.

c) (1p)

Skriv en SQL-fråga som tar fram alla data om alla bollar.

Uppgift 6 (5 p)

Lisa och Kalle bor tillsammans, och vill hålla koll på städningen. Därför skapar de följande tabell, som heter Städning:

Rum Dag Städare Yta Tid
Hallen 2007-11-16 Lisa 4 2
Hallen 2007-11-23 Kalle 4 2
Hallen 2007-11-30 Lisa 4 2
Köket 2007-11-16 Lisa 8 20
Köket 2007-11-23 Kalle 8 20
Köket 2007-11-30 Lisa 8 20
Sovrummet 2007-11-16 Lisa 10 10
Sovrummet 2007-11-23 Kalle 10 10
Sovrummet 2007-11-30 Lisa 10 10
Badrummet 2007-11-16 Lisa 4 20
Badrummet 2007-11-23 Kalle 4 20
Badrummet 2007-11-30 Lisa 4 20

Några observationer om tabellen:

a) (1p)

Vilka fullständiga funktionella beroenden finns i tabellen? (Rita gärna en figur.)

b) (2p)

Vilken är den högsta normalform som tabellen uppfyller? Motivera svaret.

c) (2p)

Visa på något problem som uppstår i tabellen, och som vi skulle sluppit med en högre grad av normalisering.

Uppgift 7 (4 p)

Ibland talar man om ACID-transaktioner, där bokstäverna i förkortningen ACID står för Förklara för var och en av de fyra egenskaperna vad den egentligen betyder, och ge exempel på vad som kan hända om den saknas.

Uppgift 8 (3 p)

Ange tre viktiga skillnader mellan Microsoft Access och MySQL.

Uppgift 9 (4 p)

a) (1p) Vad är grant och revoke?

b) (1p) Visa med exempel hur de kan användas.

c) (1p) Grant och revoke kan kombineras med vyer. Varför gör man det?

d) (1p) Visa med ett exempel hur grant kan kombineras med en vy.