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

Tentamen i

Databasteknik

måndag 22 augusti 2022

Gäller som tentamen för:
DT105G Databasteknik, provkod A001


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 40. För godkänt betyg krävs 20 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2.
Resultat: Meddelas senast 15 arbetsdagar efter tentamensdatum.
Återlämning av tentor: Elektroniskt via webbportalen Studenttjänster.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgifterna

Ett företag som vi kan kalla Brun utvecklar och tillverkar produkter inom hemelektronik, bland annat elektriska tandborstar. Här är en äldre modell från 1937:

Motodent elektrisk tandborste

(Foto av användaren Gazebo, Wikipedia. Licens: Creative Commons Attribution-Share Alike 4.0 International)

De mer avancerade modellerna av Bruns eltandborstar använder Bluetooth och en mobilapp för att ansluta till en central databas, där vi lagrar:

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 (12 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) Jag har ett användarkonto med användarnamnet Padrone. Jag har flera tandborstar av modellen Dentomatic 1000. Vad är serienumren på dessa tandborstar?

b) (2p) Igår (2022-08-21) borstade jag (som har användarnamnet Padrone) bara tänderna en gång. Hur länge borstade jag?

c) (2p) Hur många användare med e-postadresser på Örebro universitet (dvs som slutar med @oru.se) finns det?

d) (3p) Vilken tandborstmodell är vanligast? Vi vill alltså veta namnet på den modell som det finns flest tandborstar av.

e) (3p) Ibland glömmer någon att borsta tänderna. Vi ska skicka e-post och påminna dem. Vad är e-postadresserna till alla de användare som inte borstade tänderna igår (2022-08-21)?

Uppgift 4 (4 p)

Tabellen Modeller innehåller tjugo rader, och de andra tabellerna har många miljoner rader. Sökningen i delfråga 3a ovan, den om serienumren på mina Dentomatic 1000, körs ofta, men kanske med andra konstanter. Frågan tar för lång tid att köra. Vi ser att det inte finns några index i databasen, inte ens på nycklar.

a) Vilka index bör man skapa för att den sökningen ska bli snabbare?

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

Uppgift 5 (10 p)

Inom databasområdet finns många förkortningar. Ange för var och en av de här förkortningarna vad den betyder, och förklara kort vad det är.

ACID
BCNF
CGI
DBA
DBMS
DDL
DML
GDPR
JSON
XML

Uppgift 6 (3 p)

Nämn tre olika databashanterare, och ange för var och en av dem någon egenskap som skiljer den från de två andra.