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

Tentamen i

Databasteknik
för D1, SDU1 m fl

tisdag 15 januari 2013

Gäller som tentamen för:
DT1026 Datateknik A, Databasteknik, provkod 0100
DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0310
DT1012 Datateknik A, Databasteknik, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0310


Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 34.
För betyget 3 respektive G krävs 21 poäng.
För den som följt kursen hösten 2012 ger varje i tid inlämnad inlämningsuppgift en extra poäng.
Den som inte gått kursen hösten 2012 får dessa (fem) extrapoäng ändå.
Resultat: Meddelas på kursens hemsida eller via e-post senast tisdag 5 februari 2013.
Återlämning av tentor: Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Scenario till uppgift 1-4

Maskar bor i äpplen som växer på träd. Träden sköts om av trädgårdsmästare, Varje mask bor i ett äpple, och det finns inga hemlösa maskar. Varje äpple växer på ett träd, och det finns inga lösa äpplen. En mask har ett unikt ID-nummer, ett (inte nödvändigtvis unikt) namn och en längd som mäts i centimeter. Även träd, äpplen och trädgårdsmästare har unika ID-nummer. Dessutom har varje äpple en färg, och varje träd har en höjd som mäts i meter. Varje trädgårdsmästare har ett (inte nödvändigtvis unikt) namn. Varje träd sköts om av en eller flera trädgårdsmästare. En och samma trädgårdsmästare kan sköta om flera träd. En del trädgårdsmästare har inga träd att sköta om.

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 (5 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 (8 p)

Formulera följande frågor i SQL. Använd dina tabeller från uppgift 2. Definiera gärna vyer om det underlättar.

a) Det finns bara en mask som heter Max. Vad har han för ID-nummer och längd?

b) Hur långa är maskarna som heter Bengt och Kurt?

c) Vilka maskar bor i röda äpplen? Vi vill veta dessa maskars ID-nummer och namn.

d) Hur många maskar bor i äpplen som växer på träd som sköts om av en trädgårdsmästare som heter Göran Grön?

e) Vilket äpple bor det flest maskar i? Vi vill veta det äpplets ID-nummer och färg.

Uppgift 4 (4 p)

a) Databasen växer så att varje tabell innehåller många miljoner rader. SQL-frågorna a och b i uppgiften ovan körs många gånger. Vilka index bör man skapa för att just de frågorna ska gå snabbt att köra? Motivera svaret!

b) Ge två olika exempel på integritetsvillkor som databasen kan behöva.

Scenario till uppgift 5-7

Här är tabellen Tidrapport från en databas. Vi ser hur många timmar varje anställd har jobbat varje månad. Exempelvis har anställd nummer 7 arbetat 160 timmar under september.

ID Anställd Timmar Månad
1 7 160 september
2 8 48 oktober
3 6 144 november
4 9 160 augusti
5 9 100 oktober
6 1 80 september
7 8 140 augusti
8 9 184 november
9 3 48 augusti
10 2 184 november
11 1 100 november

ID är primärnyckel i tabellen. Anställd och Månad bildar ytterligare en kandidatnyckel.

Uppgift 5 (1 p)

Vilken är den högsta normalform (av 1NF, 2NF, 3NF och BCNF) som tabellen uppfyller?

Uppgift 6 (2 p)

Vi misstänker fusk med tidrapporterna, och vi vill undersöka om några anställda lämnat in likadana tidrapporter, dvs med samma antal timmar för samma månad. (I våra exempeldata är tidrapport 8 och 10 likadana.) Skriv en SQL-fråga som tar fram alla sådana likadana tidrapporter.

Ett möjligt utseende på resultatet:

ID Anställd Timmar Månad
8 9 184 november
10 2 184 november

Uppgift 7 (4 p)

Vi ger följande SQL-kommandon:

start transaction;
insert into Tidrapport values (12, 7, 101, 'oktober');
insert into Tidrapport values (13, 7, 122, 'november');
insert into Tidrapport values (14, 7, 200, 'december');
commit;

a)

Antag att strömmen går precis efter att det första insert-kommandot körts, och databasservern stannar. Hur kommer Tidrapport-tabellen att se ut när systemet har startats om?

b)

Antag att strömmen går precis efter att commit-kommandot körts, och databasservern stannar. Hur kommer Tidrapport-tabellen att se ut när systemet har startats om?

c)

Vad händer om man i stället för commit ger kommandot rollback? Hur kommer Tidrapport-tabellen att se ut?

d)

Antag att precis innan vi skriver commit så är det någon annan som loggar in i databasen och skriver det här kommandot:

insert into Tidrapport values (12, 8, 34, 'november');

Vad händer?

Uppgift 8 (5 p)

a) Vad är det som är "relationerna" i en relationsdatabas?

b) Vad är XML, och vad kan man ha det till?

c) Ange tre olika databashanterare. Skriv för var och en åtminstone någon egenskap som skiljer den från de andra.