Databasteknik: Hemtentamen 2021-01-13

Det här är hemtentan som går tisdag 13 januari 2021 i kursen DT105G Databasteknik, provkod A001. Ansvarig lärare är Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), telefon 070-73 47 013.

Tid: 08:15 - 13:15

Instruktioner

  1. Den här hemtentan ersätter den planerade salstentan.
  2. Uppgifterna ska lösas enskilt, dvs inga grupper av två eller flera studenter.
  3. Du får använda dator, böcker och vilka andra hjälpmedel som helst, men du får inte samarbeta eller fråga någon (utom mig). Exempelvis är det tillåtet att söka och läsa på webbplatser som Stack Overflow, men inte att ställa egna frågor. Du kan alltså provköra kommandon och program, om du vill.
  4. Diskutera inte uppgifterna eller dela med dig av svar förrän tidigast dagen efter tentan.
  5. Lös de angivna uppgifterna och samla svaren på lämpligt sätt, till exempel i en PDF. Skicka sen in lösningarna till mig i Blackboard. (Gå till kursens sida i Blackboard, gå in i mappen Hemtentor, och välj den rätta tentan. Där kan man sedan välja att skicka in sin lösning. Då blir bedömningen anonym.)
  6. Om det skulle bli problem med Blackboard, kan man i nödfall skicka in svaren antingen som ett kursmeddelande i Blackboard eller via vanlig e-post (thomas.padron-mccarthy@oru.se), senast vid tentatidens slut. Då blir bedömningen inte anonym.
  7. I Blackboard ser du att du skickat in din lösning. Om du i stället skickade in med e-post, och inte senast en timme efter tentatidens slut fått ett svar från mig med en bekräftelse på att du skickat in svaren, bör du kontakta mig, enklast genom att ringa eller SMS:a mig (ifall det är e-posten som inte fungerar). Tänk på att en del mailtjänster (särskilt Microsoft-tjänster som Hotmail.com, Outlook.com och Live.com) ibland kastar bort brev med bilagor, utan att meddela det.
  8. Skriv gärna svaren i ett ordbehandlingsprogram. Rita gärna eventuella diagram i ett ritprogram. Det är inte förbjudet att skriva och rita för hand, men då måste text och bilder scannas in eller fotograferas. Det finnas scanner-appar till Android och iPhone, till exempel Adobe Scan, som ger bättre resultat än att bara ta vanliga kort med kameran.
  9. Tentatiden är utökad med en extra timme för att täcka in problem med e-post, inscanning eller fotografering av diagram, och liknande.
  10. Om du behöver fråga något, så kontakta gärna mig. Ring eller skicka SMS, för jag kanske inte kommer att sitta vid datorn hela tiden.
  11. Oklara och tvetydiga formuleringar kommer att misstolkas. Lösningar som inte går att läsa eller förstå kan naturligtvis inte ge några poäng.
  12. Antaganden utöver de som står i uppgifterna måste anges. Gjorda antaganden får inte förändra den givna uppgiften.
  13. Skriv gärna förklaringar om hur du tänkt. Även ett svar som är fel kan ge poäng, om det finns med en förklaring som visar att huvudtankarna var rätt.
  14. Maximal poäng är 41 För godkänt betyg krävs minst 26 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
  15. För den som följt kursen hösten 2020 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen hösten 2020 får dessa (fem) extrapoäng ändå.
  16. Resultat meddelas senast 15 arbetsdagar efter tentamensdatum. Eftersom svaren skickas in elektroniskt scannas tentorna inte för retur.

Scenario till uppgifterna

Edward Jenner Anders Tegnell

Just nu är det aktuellt med vaccinationer. Det är viktigt att hålla reda på vilka som ska vaccineras och vilka som redan är vaccinerade. Därför ska vi förstås skapa en databas. Det som ska lagras i databasen är följande:

  1. Personer. Varje person har ett unikt personnummer, ett namn, en adress, en ålder och en kroppsvikt. Personen har också en prioritet, som är ett heltal större än eller lika med noll.
  2. Vaccinationsplatser. Platsen har ett unikt nummer, ett unikt namn, och en adress.
  3. Vaccinationer. En vaccination sker ett visst datum, på en viss vaccinationsplats, och det är en viss person som vaccineras. Vi vet inte hur länge immuniteten från vaccinationen räcker, så en och samma person kan behöva vaccineras flera gånger.
  4. Gruppvaccinationer. För att spara pengar har man också infört gruppvaccinationer, med en extra lång nål så man kan vaccinera flera personer på en gång. En gruppvaccination är precis som en vanlig vaccination, förutom att det är flera personer som vaccineras.

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

Implementera den beskrivna databasen i relationsmodellen, dvs översätt ER-diagrammet till tabeller. Implementationen ska vara bra.

a) Visa en tydlig översikt över dina tabeller. Ange vilka relationer som finns och vilka attribut varje relation innehåller, med väl valda exempeldata. Ange också alla kandidatnycklar, vilken av dessa som är primärnyckel, samt vilka referensattribut som finns och vad de refererar till.

b) I delfrågan ovan står det att man ska ange vilka relationer som finns. Vad är en relation?

c) Skriv de SQL-kommandon som behövs för att skapa tabellerna, med lämpliga integritetsvillkor.

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) Personen Anna Alm har vaccinerat sig, med en vanlig vaccination (inte en gruppvaccination). Var? Ange adressen till vaccinationsplatsen.

b) (2p) Personen Bengt Berg har vaccinerat sig med en gruppvaccination. Vad heter de andra personer som vaccinerades vid samma tillfälle?

c) (2p) Hur många personer har vaccinerats med gruppvaccinationer?

d) (3p) Vad heter den person som har högst prioritet, av de som ännu inte är vaccinerade (vare sig med en vanlig vaccination eller en gruppvaccination)?

Uppgift 4 (4 p)

Formulera följande som kommandon i SQL:

a) Lägg in personen Cecilia Ceder, med personnummer 650402-7266, adressen Vägen 7, Örebro, ålder 55 år och vikt 70 kilo.

b) Riskgrupper ska vaccineras först. Låt alla personer som är 70 år eller äldre, och alla personer som väger mer än 130 kilo, få prioriteten 2.

c) Det visar sig att vaccinet som levererades till vaccinationsplatsen Örebro COVID-camp var verkningslöst. Endast vanliga vaccinationer genomfördes där, inga gruppvaccinationer. Ta bort alla vaccinationer som gjordes på den vaccinationsplatsen.

Uppgift 5 (3 p)

Det är många personer som ska vaccineras, och alla tabellerna i databasen blir snabbt mycket stora. Vi märker att fråga 3a, om adressen till platsen där Anna Alm vaccinerade sig, körs ofta, men vi kanske söker efter andra personer. Det går för långsamt. Vi märker att det inte finns några index i databasen, inte ens på nycklar.

a) Vilka index bör man skapa för att få den sökningen att gå snabbare? Skriv CREATE INDEX-kommandon.

b) Ange ett index som inte skulle gjort att sökningen går snabbare, och förklara varför det indexet inte hjälper.

Uppgift 6 (6 p)

Transaktionshanteringen i databaser är till för att upprätthålla de fyra "ACID-egenskaperna", atomicitet (A), konsistensbevarande (C), isolering (I) och hållbarhet (D).

Visa med tydliga exempel från databasen som du skapat i uppgifterna ovan vad som skulle kunna hända som gör att var och en av dessa egenskaper bryts, om man inte använder transaktioner.

Uppgift 7 (3 p)

Vad skulle de olika nivåerna i tre-schema-arkitekturen kunna innehålla i vår databas? Skriv inte bara vad nivåerna normalt innehåller, utan ge specifika exempel utgående från scenariot.

Uppgift 8 (3 p)

Vilken databashanterare bör man välja för vaccinationsdatabasen? Nämn tre förslag på databashanterare, och tala om varför, eller varför inte, de passar för den här tillämpningen!


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 11 januari 2021