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








Tentamen i

Databaskonstruktion

för D1, D3 m fl

lördag 27 maj 2006 kl 8:00 - 13:00 i L001








Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 53.
För betyget 3 krävs 25 poäng.
För betyget 4 krävs 35 poäng.
För betyget 5 krävs 43 poäng.
Resultat: Meddelas på kursens hemsida senast lördag 10 juni 2006.
Visning: Måndag 19 juni 2006 kl 12:00-12:30 i mitt rum (T2220).
Efter visningen kan tentor hämtas på expeditionen.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070-7347013.



LYCKA TILL!

Scenario till uppgifterna

I och med den nya McDonald's-restaurangen, som i höst kommer att öppnas i Långhuset på universitetsområdet, kommer McDonald's i Sverige att ha blivit så stora att de behöver en ny databas för att hålla reda på sin försäljning.

Det man behöver hålla reda på är, mer detaljerat, följande:

  1. Restauranger. Varje restaurang har ett unikt nummer, en adress och ett telefonnummer.
  2. Varor som man kan köpa, till exempel "Big Mac". Varje vara har ett unikt nummer, ett unikt namn och ett pris.
  3. Försäljningen. Varje vara som säljs lagras, med vilken vara det var, vilken restaurang den såldes på, och när.
  4. Försäljningstillfällen. Alla varor som slås in i kassan och betalas tillsammans räknas som ett försäljningstillfälle. Det ska gå att se hur många varor av varje sort som sålts vid varje försäljningstillfälle.

Så här ser kan ett ER-diagram för databasen se ut:

ER-diagram över McDonald's-databasen

Uppgift 1 (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 2 (3 p)

I uppgiften ovan står det att "implementationen ska vara bra". Vad kan det betyda?

Uppgift 3 (16 p)

Formulera följande frågor i SQL.

a) (1p) Vad kostar en Big Mac?

b) (1p) Vilka olika pajer (alltså varor som innehåller "paj" i namnet) finns det?

c) (2p) Hur många Big Mac har sålts, sammanlagt?

d) (2p) På vilka restauranger har det sålts äppelpajer? Ge restaurangernas nummer, adress och telefonnummer.

e) (2p) På vilka restauranger har det INTE sålts några äppelpajer? Ge restaurangernas nummer, adress och telefonnummer.

f) (3p) Hur mycket har varje restaurang sålt för? Vi vill ha en listning med restaurangens nummer, adress, och den restaurangens sammanlagda försäljningssumma. Listningen ska sorteras i ordning efter försäljningssumman, så restaurangen som sålt mest kommer först. De restauranger som inte sålt något alls, behöver inte vara med i listan.

g) (1p) Samma fråga som ovan, om hur mycket varje restaurang har sålt för, men nu ska även de restauranger som inte sålt något alls vara med, med försäljningssumman noll.

h) (2p) Vid vilken restaurang sattes rekordet i försäljning vid ett enda tillfälle? Vi vill alltså veta det försäljningstillfälle där varorna sammanlagt kostade mest, och på vilken restaurang det skedde. Ge restaurangens nummer, adress och telefonnummer.

i) (2p) Det är förmodligen fel i databasen om det finns två restauranger på samma adress. Finns det några sådana restauranger i databasen, och vad har de i så fall för nummer och adress?

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

Uppgift 4 (7 p)

McDonald's vill att antalet sålda Big Mac hela tiden ska visas på en gigantisk ljustavla på taket till huvudkontoret. För att få ett aktuellt värde, hämtas antalet ur databasen, genom att köra SQL-fråga c från uppgiften ovan. Frågan kommer att köras flera gånger i sekunden.

a) (2p) Frågan tar för lång tid att köra, 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 just den frågan ska gå snabbt att köra? Motivera valet.

c) (2p) Hjälper indexen? Diskutera!

d) (3p) Finns det några andra sätt att snabba upp frågan, förutom att skapa index? Vilka? Hur gör man?

Uppgift 5 (6 p)

a) (3p) Jag går till McDonald's-restaurangen på Våghustorget i Örebro, och köper tre Big Mac och en kopp kaffe. Vilka insättningar i databasen behöver göras för att lagra detta försälningstillfälle? Skriv de insert-kommandon som behövs.
(Det är tillåtet att göra operationerna i flera steg, till exempel att först ta fram varunumret för Big Mac, och sen använda det numret i ett insert-kommando.)

b) (1p) Dina SQL-kommandon bildar en transaktion, och bör inledas med kommandot start transaction och avslutas med kommandot commit. Vad menar man i databassammanhang med en transaktion?

c) (2p) Om man inte låter SQL-kommandona tillsammans utgöra en transaktion, utan låter varje SQL-kommando räknas som en egen transaktion, så kan det uppstå problem. Ge exempel på ett sådant problem!

Uppgift 6 (7 p)

McDonald's vill kunna dela in sina varor i flera olika kategorier, till exempel Efterrätter, Hamburgare och Drycker.

a) (2p) Man kan göra ändringen i ER-diagrammet, genom att skapa under-entitetstyper till entitetstypen Vara. Diagrammet blir då ett så kallat EER-diagram. Visa hur EER-diagrammet kommer att se ut. (Glöm inte kopplingarna till de andra entitetstyperna.)

b) (2p) Översätt entitetstypen Vara och dess under-entitetstyper 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) (3p) En nackdel med att skapa under-entitetstyper i EER-diagrammet är att databasen blir oflexibel. Det är svårt att lägga till en ny kategori. Visa en alternativ lösning, där det är lättare att lägga till kategorier. Rita upp ett ER- eller EER-diagram, och översätt också till tabeller!

Uppgift 7 (4 p)

I databaser kan det förekomma redundans av olika slag. Förklara vad som menas med redundans. Beskriv också två olika typer av redundans som kan förekomma, och i vilka sammanhang de förekommer. Vilka fördelar och nackdelar finns med de olika typerna av redundans?

Uppgift 8 (5 p)

Förklara följande termer. Ange (kort) vad det är för nåt och vad det används till.

a) alter table

b) databashanterare

c) databasadministratör

d) datamodell

e) databasschema