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



Tentamen i

Databasteknik för civilingenjörer

måndag 21 augusti 2017

Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod 0100


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 35. För godkänt betyg krävs 20 poäng, varav minst fyra poäng på uppgift 1 och minst fyra poäng på uppgift 2.
Resultat: Meddelas på kursens hemsida eller via e-post senast måndag 11 september 2017.
Återlämning av tentor: Elektroniskt via Studentforum.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



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:

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

Formulera följande frågor i SQL. Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.

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) (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?

Uppgift 4 (6 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. Från början finns det inga index alls i databasen, inte ens på primärnycklar.

a) (2p) Vi lägger in några testrader i databasen och provkör frågan. Den går tillräckligt snabbt. Då är väl allt bra, och vi behöver inte göra något mer? Förklara hur det är!

b) (2p) Vi vill (oavsett svaret på fråga a) snabba upp körningen av frågan. Vilka index bör man skapa för att just den frågan ska gå snabbt att köra? Motivera valet.

c) (2p) När databasen varit i drift några månader ringer McDonald's och berättar att de har skapat alla index som behövs, och visst går frågan fortare att köra än utan indexen, men den tar ändå alldeles för lång tid. Förklara varför, och berätta vad de kan göra åt saken!

Uppgift 5 (6 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) (2p) 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!