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








Tentamen i

Databasteknik

onsdag 29 maj 2024

Gäller som tentamen för:
DT504G Databasteknik för civilingenjörer, provkod A001


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 40. För godkänt betyg krävs 24 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 våren 2024 ger varje i tid inlämnad inlämningsuppgift en extra poäng. Den som inte gått kursen hösten 2024 får dessa (fem) extrapoäng ändå.
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

IMDB står för Internet Movie Database, och är en webbplats med information om filmer. Nu vill vi skapa en konkurrent, kallad BDMI (Big Deposit of Movie Information). Den ska finnas på webben och lagra informationen om filmerna i en databas.

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

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 uppgifterna 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 (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) (1p) Från vilket land kommer skådespelaren Arnold Schwarzenegger?

b) (2p) Hur många filmer har han spelat i?

c) (2p) Vad heter rollfiguren som Max von Sydow spelar i filmen Det sjunde inseglet?

d) (3p) Vilket genomsnittsbetyg har filmen Terminator 2: Judgment Day? (Tips: Man kan använda vanliga matematiska operationer, som division, i SQL.)

e) (3p) Från vilket land kommer flest filmer?

Uppgift 4 (3 p)

Alla tabeller i filmdatabasen blir mycket stora, utom tabellen med länder ifall vi har en sådan. Vi märker att fråga c, om Max von Sydows rollfigur, körs ofta, men kanske med andra konstanter. Till exempel vill vi kanske veta vad Arnold Schwarzeneggers rollfigur i filmen The Terminator hette. Dessa frågor tar för lång tid att köra. Vi ser att det inte finns några index i databasen, inte ens på nycklar.

Vilka index bör man skapa för att denna sökning ska bli snabbare?

Uppgift 5 (3 p)

ACID-transaktioner kan vara viktiga när man arbetar med databaser. Välj en av de fyra egenskaperna och visa hur det skulle kunna uppstå problem i filmdatabasen om egenskapen saknades. Ge specifika exempel utgående från scenariot och din lösning.

Uppgift 6 (2 p)

En fruktodlare har en databas med alla sina träd och alla sina äpplen. Det är normala äppelträd och normala äpplen. Varje äpple växer på ett träd.

Fruktodlaren har förstås många äppelträd och många äpplen. Sambandet att äpplena växer på träden, är det ett många-till-många-samband? Förklara!

Uppgift 7 (2 p)

Fruktodlaren i uppgiften ovan är upptagen med att odla äpplen, och har förstås inte tid att fördjupa sig i databaser. Hon försöker ändå skapa en databas för sina träd och äpplen, och åstadkommer denna tabell:

Äpplen
Trädnummer Äppelnummer
1 1, 2, 3, 4, 9
2 5, 7, 8, 10, 11
3 6, 12, 13
4 14, 15, 16, 17, 18, 19
5 20, 22, 24
6 21, 23

Vilka normalformer, av 1NF, 2NF, 3NF och BCNF, uppfyller tabellen? Motivera svaret!

Uppgift 8 (8 p)

a) Vad är det för skillnad på DBA och DBMS?

b) Vad är det för skillnad på ett index och en primärnyckel?

c) Vad är det för skillnad på ALTER och UPDATE?

d) Vad är det för skillnad, särskilt med tanke på webbplatser som använder databaser, på serverkällkod och klientkällkod?