Databasteknik: Hemtentamen 2021-08-23

Det här är hemtentan som går måndag 23 augusti 2021 i kursen DT504G Databasteknik för civilingenjörer, provkod A001. Ansvarig lärare är Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), telefon 070-73 47 013.

Tid: 08:15 - 12: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. 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.
  10. 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.
  11. Antaganden utöver de som står i uppgifterna måste anges. Gjorda antaganden får inte förändra den givna uppgiften.
  12. 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.
  13. Maximal poäng är 36. För godkänt betyg krävs minst 20 poäng, varav minst fyra poäng på uppgift 1 och minst fyra poäng på uppgift 2.
  14. Resultat meddelas senast 15 arbetsdagar efter tentamensdatum. Eftersom svaren skickas in elektroniskt scannas tentorna inte för retur.

Information från institutionen angående fusk

Instruktioner inför digital hemtentamen/ examination

Jag vill undvika fusk - hur gör jag? / All form av fusk anmäls
Du ska följa instruktionerna för uppgiften. Om du är osäker, fråga ansvarig lärare om något i instruktionerna är oklart.
Du får inte samarbeta. Det här är en individuell examinationsuppgift. Du ska inte prata med någon, ställa frågor till eller ta hjälp av andra studenter eller kurskamrater. Att hjälpa andra under en individuell examination är också fusk.

Lägg undan mobilen. Stäng av sociala medier.

Du får inte använda hjälpmedel. Det vill säga att du får inte använda dig av något annat än det som står angivet i instruktionerna.
Du får inte använda andra formuleringar än dina egna. Dina svar ska vara självständigt formulerade och redovisa dina kunskaper. Det betyder att inga citat eller referat ska förekomma i dina svar om det inte står i instruktionerna att du får använda citat eller referat.
Dina svar kontrolleras via Urkund.
All misstanke om fusk anmäls till universitetets rektor och kan leda till en prövning i universitets disciplinnämnd.

Konsekvenser av fusk

Om du fuskar kan detta leda till en avstängning som kan få följder både för dina studier och privat:

  • Uteblivet studiemedel som t.ex. som kan påverka din möjlighet att behålla din bostad.
  • Ingen åtkomst till digitala plattformar.
  • Du kan behöva meddela dina kursare om att du är fälld för fusk, om du t.ex. ingår i ett grupparbete på en pågående kurs men blir avstängd.
  • Tillfällen för examination går förlorade vilket kan innebära att du inte kommer vidare i dina studier nästa läsperiod/termin och din studiegång blir därmed påverkad.
  • Beslutet är en offentlig handling som begärs regelbundet ut av en nyhetsbyrå. Och kan även begäras ut av framtida arbetsgivare eller andra.
  • Om du fuskar dig igenom din utbildning har du inte den kunskap som arbetsmarknaden förväntar av dig.
OBS: Tänk efter en gång till innan du påbörjar och genomför din tentamen!

Scenario till uppgifterna

Vaksamma Valdemars Vakt AB tillhandahåller väktare, som vaktar olika lagerlokaler och liknande ställen. En väktare är, skriver Wikipedia, "en person som är anställd av ett bevakningsföretag för att utföra olika bevakningssysslor såsom yttre samt inre tillsyn i och runt objekt (så kallad rondering), stationär bevakning på objekt, områdesbevakning i förutbestämda områden samt rycka ut och åtgärda utlösta larm på både privata och företagsobjekt."

Vaksamma Valdemars Vakt AB har specialiserat sig på stationär bevakning, där en eller flera väktare sitter och vaktar en plats:

En sovande vakt
(Foto av Brad & Sabrina, https://www.flickr.com/photos/19078064@N00/184665954. Licens: Creative Commons Attribution 2.0 Generic.)

Nu behöver de förstås en databas för att hålla reda på väktare, platser som ska vaktas, och schemat för bevakningen. Det vi ska lagra i databasen är:

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 4 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. Implementationen ska vara bra.

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.

Uppgift 3 (3 p)

Skriv de SQL-kommandon som behövs för att skapa tabellerna från uppgiften ovan, med lämpliga integritetsvillkor.

Uppgift 4 (11 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) Det finns en väktare som heter Albert och en som heter Bodil. Vad är Alberts och Bodils personnummer?

b) (2p) Vilka olika platser arbetar väktaren Albert på? Vi vill veta de platsernas namn. (Det gäller alltså alla de platser där Albert är inbokad.)

c) (3p) Vad heter de väktare som börjar ett skift på Bromma Flygplats klockan 08:00 idag (2021-08-23)?

d) (4p) Vilka skift saknar full bemanning? För varje sådant skift vill vi veta skiftets datum och starttid, och platsens nummer och namn.

Uppgift 5 (4 p)

a) Många databashanterare skapar automatiskt index på kolumner och kombinationer av kolumner som man deklarerat som unika, antingen med PRIMARY KEY eller UNIQUE. Det finns flera skäl till att man gör så. Vilka?

b) Om man ofta söker på kolumnen A en tabell, och även på kolumnen B, som i villkoren "WHERE A = 17" respektive "WHERE B = 4711", vill man antagligen skapa index på dem. Då ska man normalt inte skapa ett index på kombinationen, som med kommandot "CREATE INDEX TabellAB ON Tabellen(A, B)". Varför inte?

Uppgift 6 (5 p)

Här är ett försök att lösa uppgift 2. Lösningen består av en enda tabell.

V-nr P-nr V-namn Väktartelefon Skift-nr Datum Start Slut Önskat antal Plats-nr Platsnamn Platsadress
1 196312111658 Albert 0123456789 4 2021-08-23 00:00:00 08:00:00 1 2 Bromma Flygplats Bromma
1 196312111658 Albert 0123456789 5 2021-08-23 08:00:00 16:00:00 2 2 Bromma Flygplats Bromma
2 196312111668 Bodil 0123456789 5 2021-08-23 08:00:00 16:00:00 2 2 Bromma Flygplats Bromma
1 196312111658 Albert 0123456789 6 2021-08-23 16:00:00 23:59:59 1 2 Bromma Flygplats Bromma

("V-nr" står för "väktarnummer", "P-nr" står för "personnummer", och "V-namn" står för "väktarnamn". De är förkortade bara för att tabellen ska få plats på sidan.)

a) Vad är primärnyckel i tabellen?

b) Vilka fullständiga funktionella beroenden finns i tabellen?

c) Uppfyller tabellen 1NF? Motivera svaret!

d) Uppfyller tabellen 2NF? Motivera svaret!

e) Uppfyller tabellen 3NF? Motivera svaret!

f) Uppfyller tabellen BCNF? Motivera svaret!

g) Beskriv något praktiskt problem med den här lösningen!

Uppgift 7 (3 p)

En datastruktur som många databashanterare använder för att lagra data på disk eller SSD är B-träd, eller någon av dess varianter som B+-träd eller B*-träd.

Vi antar att vi arbetar med en sådan databashanterare. Vi antar också att det finns en miljon (106) väktare i databasen, och att det tar 40 ms (0.04 sekunder) att söka fram en väktare med ett visst nummer.

Vaksamma Valdemars Vakt AB utökar sin verksamhet, och efter ett tag finns det en miljard (109) väktare i databasen, dvs 1000 gånger fler än förut.

Ungefär hur lång tid kommer det att ta nu att söka fram en väktare med ett visst nummer? Motivera svaret! Du behöver inte göra en exakt uträkning, utan det räcker med ett ungefärligt resonemang.


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 22 augusti 2021