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




Tentamen i

Databasteknik
för D1, SDU1 m fl

onsdag 17 augusti 2011

Gäller som tentamen för:
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 37.
För betyget 3 respektive G krävs 18 poäng.
Resultat och lösningar: Meddelas på kursens hemsida eller via e-post senast onsdag 7 september 2011.
Å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 uppgifterna

Vi ska bygga en databas över vägar, så man kan använda den för ruttplanering, ungefär som man brukar kunna göra i en GPS. Databasen ska innehålla:
  1. Orter, som var och en har ett unikt nummer, ett namn, en folkmängd och en position bestående av latitud och longitud.
  2. Vägar. Varje väg har ett unikt nummer, en längd (i kilometer) och går mellan två orter.
  3. Rutter. En rutt går mellan två orter, och består av en eller flera vägar. Den har också ett unikt nummer.

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- eller EER-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:

a) (1p) Vilka vägar är mellan 100 och 150 km långa? Vi vill veta de vägarnas nummer.

b) (2p) Vilka vägar leder till Rom? Vi vill veta de vägarnas nummer.

c) (2p) Hur många rutter utgår från Arboga?

d) (2p) Finns det orter som inte går att nå (via en väg)? Vad heter de i så fall?

e) (3p) Vilken rutt är längst, i kilometer räknat?

Definiera gärna vyer om det underlättar frågorna.

Uppgift 4 (3 p)

Från Openstreetmap, som är en fri och gratis kartdatabas, kan man ladda ner en XML-fil med kartdata som beskriver orter, vägar med mera i hela världen. Det är inte riktigt samma data som i databasen i scenariot ovan, men liknande. Uppackad är filen hela 254 gigabyte.

a) (2p) Spekulera lite om hur XML-filens format kan se ut.

b) (1p) Vi tar XML-filen och lägger i stället in dess orter, vägar med mera i en relationsdatabas, med ett schema i stil med det som gavs i scenariot ovan. Ungefär hur mycket plats kommer den relationsdatabasen att ta på disken? Motivera svaret!

Uppgift 5 (4 p)

a) Vad menar man i databassammanhang med transaktioner? Ge exempel!

b) Hur skulle man kunna ha nytta av transaktioner i vägdatabasen ovan? Ge exempel! Ange i exemplen särskilt vad är det för problem man undviker genom att använda transaktioner.

Uppgift 6 (5 p)

Databasen innehåller miljontals orter, vägar och rutter. Din chef, som inte kan så mycket om databaser, frågar dig om ifall databashanteraren kommer att klara detta. Får det plats? Kommer det att gå fort nog? Måste man göra något särskilt mer än att skapa tabellerna och lägga in data? Vad bör man tänka på?

Uppgift 7 (5 p)

Vi ska göra ett EER-diagram för en databas som handlar om böcker och deras läsare.

Det finns böcker, och varje bok har ett unikt nummer och en titel. En bok kan antingen vara en roman, en fackbok eller en sagobok. Fackböcker har ett ämne och sagoböcker har en åldersgräns.

Det finns läsare, och varje läsare har ett unikt nummer och ett namn. En läsare kan antingen vara en vuxen eller ett barn. Vuxna har ett yrke.

Man ska också kunna lagra vilka böcker läsarna har läst. (Varje bok kan läsas av flera läsare, och varje läsare kan läsa flera böcker.) Vuxna kan läsa alla böcker, men barn kan bara läsa sagoböcker.

a) (2p) Rita ett EER-diagram för den beskrivna databasen.

b) (3p) Översätt EER-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.