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





Tentamen i

Databasteknik

onsdag 9 januari 2019

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 33. För godkänt betyg krävs 17 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
Resultat: Meddelas på kursens hemsida eller via e-post senast onsdag 30 januari 2019.
Återlämning av tentor: Elektroniskt via Studenttjänster.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

Här är ett par varuautomater som står utanför kafeterian i Teknikhuset:

Automater

De har varit trasiga åtminstone sen i somras, och Sodexo, som äger automaterna, har inte lagat dem. Kanske har de glömt var de ställt dem, och kan inte hitta dem? Vi måste hjälpa dem genom att skapa en databas!

Det som ska lagras i databasen är följande:

  1. Kunder. Kunderna är de företag och andra organisationer där Sodexo har placerat ut automaterna. Varje kund har ett namn, till exempel Örebro universitet, och ett unikt kundnummer, till exempel 83712.
  2. Byggnader. Varje kund har en eller flera byggnader där Sodexo kan ställa automater. På Örebro universitet finns till exempel Teknikhuset och Långhuset. Dessa namn är inte unika globalt, men en och samma kund kan inte ha två byggnader med samma namn.
  3. Automater. Varje automat har ett unikt nummer, till exempel 602827, och den står i en av byggnaderna.
  4. Varor som finns i automaterna. Varje vara har ett unikt namn, till exempel Coke Zero, 50 cl, och även ett unikt varunummer, till exempel 1283798.
  5. Automaterna innehåller varor. Varje automat kan förstås innehålla flera varor, och varje vara kan förstås finnas i flera automater.

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 (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å 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 (9 p)

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

a) (2p) Vad är numren på de automater som är placerade i Teknikhuset hos kunden Örebro universitet?

b) (2p) Hur många automater finns hos kunden USÖ? Vi vill veta antalet, inte numren.

c) (2p) I vilka byggnader står det inga automater? För varje sådan byggnad vill vi veta byggnadens namn och kundens namn.

e) (3p) Hos vilken kund står den automat som innehåller flest varor? Vi vill veta namnet på den kunden.

Uppgift 4 (3 p)

Frågorna a och b i uppgiften ovan körs ofta, men kanske med andra konstanter än just Teknikhuset och Örebro universitet. Vi vill att den ska gå snabbare att köra. Databasen innehåller inga index, inte ens på primärnycklar. Alla tabellerna har väldigt många rader.

a) Vilka index bör man skapa?

b) Ange något index som inte skulle hjälpa, och förklara varför det inte skulle hjälpa.

Uppgift 5 (5 p)

När man programmerar numera är det populärast med objektorienterad programmering. Samtidigt är det relationsdatabaser som är den vanligaste typen av databaser. Om man har ett objektorienterat program, och vill lagra det programmets objekt i en databas, brukar man därför behöva översätta från programmets objekt till databasens tabeller.

Ett objektorienterat program innehåller följande klasser, alltså typer av objekt:

a) (2p) Rita ett EER-diagram som innehåller entitetstyperna ovan, med arv och egenskaper.

b) (2p) Ö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 färgen på alla mått som är större än 1 liter.

Uppgift 6 (5 p)

Ibland behöver man kombinera de vanliga select-frågorna i SQL med konstruktioner som vi känner igen från vanliga programmeringsspråk, som variabler, if-satser och loopar.

Beskriv vilka olika sätt som det finns att göra det på, och några av deras för- och nackdelar.