Ö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.
|
-
Skriv tydligt och klart. Lösningar som inte går att läsa kan
naturligtvis inte ge några poäng.
Oklara och tvetydiga formuleringar kommer att misstolkas.
-
Skriv den personliga tentamenskoden på varje inlämnat blad.
Skriv inte namn eller personnummer på bladen.
-
Skriv bara på en sida av papperet.
Använd inte röd skrift.
-
Antaganden utöver de som står i uppgifterna måste anges. Gjorda
antaganden får inte förändra den givna uppgiften.
-
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.
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:
(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:
-
Användarkonton.
Den som köper en Brun-tandborste registrerar sig med ett unikt användarnamn,
en e-postadress som också måste vara unik, och ett lösenord.
Vi ger också varje användare ett unikt nummer.
-
Tandborstmodeller.
Varje modell har ett unikt modellnummer,
och ett unikt namn.
-
Tandborstar.
Varje tandborste har ett unikt serienummer
och är av en viss modell.
Den har också ett aktiveringsdatum,
och den tillhör en viss användare.
-
Tandborstningar.
Varje tandborstning har ett unikt nummer,
den skedde ett visst datum med en viss starttid,
och den hade en längd (mätt i sekunder).
Dessutom ska man hålla reda på vilken tandborste som användes.
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.