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



Tentamen i

Databasteknik
för D1 m fl

tisdag 14 januari 2020

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


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 39. För godkänt betyg krävs 23 poäng, varav minst fyra poäng på uppgift 1 och minst fem poäng på uppgift 2. För den som följt kursen hösten 2019 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen hösten 2019 får dessa (fem) extrapoäng ändå.
Resultat: Meddelas på kursens hemsida eller via e-post senast tisdag 4 februari 2020.
Å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

En del lärare skriver och ritar ganska mycket på tavlan när de undervisar:

En bild med pennor

Whiteboard-pennorna blir ibland utslitna eller uttorkade, och det är ett ständigt besvär att hålla reda på vilka som är bra och vilka som är dåliga. Nu vill vi hålla reda på universitetets alla whiteboard-pennor, och det ska vi förstås göra med hjälp av en databas. Här är några pennor som vi ska hålla reda på:

En bild med pennor

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

  1. Tillverkare av pennor. Varje tillverkare har ett unikt namn, till exempel Ballograf eller Faber-Castell.
  2. Penntyper. Det här är den modell av penna som till exempel kan beställas ur en katalog. Varje typ tillverkas av en viss tillverkare, och har ett namn, till exempel Artline 519. Två penntyper som tillverkas av samma tillverkare kan inte ha samma namn, men det kan vara så att exempelvis tillverkarna Ballograf och Faber-Castell båda tillverkar en penna som heter Ultra-super-marker 2000.
  3. Färger. Det här är de färger som pennorna kan ha. Varje färg har ett unikt namn, till exmpel svart eller röd.
  4. Pennor. Det här är de enskilda pennorna som vi ska hålla reda på, till exempel just den här röda Artline 519 tillverkad av Ballograf, som börjat torka ut, till skillnad från en annan röd Artline 519 tillverkad av Ballograf, som kanske är i skick som ny. Varje penna är av en viss penntyp, och den har en viss färg. Den har ett unikt nummer, och en status, som är en valfri text, till exempel helt slut eller ganska dålig men håller nog en föreläsning till.

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 (10 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) (1p) Hur många olika tillverkare finns det?

b) (2p) Vilken eller vilka tillverkare tillverkar en penntyp med ett namn som innehåller ultra, till exempel Ultramarker 2000 eller Turbo-ultratronic B-36?

c) (2p) Hur många typer av pennor tillverkas av Faber-Castell?

d) (2p) Hur många av våra enskilda pennor har tillverkats av Faber-Castell?

e) (3p) Vilken färg finns det flest enskilda pennor av?

Uppgift 4 (4 p)

Databasen växer, och efter några år har alla tabeller väldigt många rader. Sökningarna i uppgiften ovan tar lång tid att köra. Vi ser att det inte finns några index i databasen, inte ens på nycklar.

a) Hur skulle man kunna få sökningen i delfråga 3a att gå snabbare att köra?

b) Hur skulle man kunna få sökningen i delfråga 3b att gå snabbare att köra?

Uppgift 5 (7 p)

Här är ett försök att lösa uppgift 2 ovan, med en databas som bara består av en enda tabell.

Pennor
Penn-nummer Färg Penntyp Tillverkare Status
1 röd Friendly Whiteboard Marker Ballograf helt slut
2 svart Winner 152 Faber-Castell helt slut
3 svart Friendly Whiteboard Marker Ballograf ganska bra
5 röd Friendly Whiteboard Marker Ballograf helt slut
6 blå Winner 152 Faber-Castell helt slut
7 blå Artline 519 Shachihata ny
11 grön Artline 519 Shachihata helt slut

a) Vilka kandidatnycklar finns i tabellen?

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

c) Vilka av de fyra normalformerna 1NF, 2NF, 3NF och BCNF uppfyller tabellen?

d) Är det här ett bra sätt att lösa uppgift 2? Motivera svaret!

e) Användarna trivs med en databas som ser ut som den här enda tabellen. Skapa en vy som motsvarar denna tabell, baserad på dina egna tabeller i din egen lösning på uppgift 2.

Uppgift 6 (7 p)

Förklara, eventuellt med korta exempel om det behövs, skillnaden mellan

a) SQL-kommandona update och alter table
b) SQL-kommandona drop och delete
c) SQL-kommandona revoke och rollback
d) group by och order by i SQL
e) en vy och en tabell
f) en databashanterare och en databasadministratör
g) atomicitet och isolering (i samband med transaktioner)