Örebro universitet
Institutionen för teknik
Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se)






Tentamen i

Databaskonstruktion

för Dataingenjörsprogrammet

lördag 28 maj 2005 kl 8:00 - 13:00 i L003






Hjälpmedel: Inga hjälpmedel.
Poängkrav: Maximal poäng är 32.
För betyget 3 krävs 17 poäng.
För betyget 4 krävs 22 poäng.
För betyget 5 krävs 27 poäng.
För den som följt kursen våren 2005 ger varje i tid inlämnad inlämningsuppgift en halv extra poäng.
Resultat och lösningar: Meddelas på kursens hemsida senast lördag 18 juni 2005.
Visning: Tid för visningen meddelas senare.
Efter visningen kan tentor hämtas på expeditionen.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070-7347013.



LYCKA TILL!

Scenario till uppgifterna

Webbsöktjänsten Gurgel används för att hitta webbsidor som innehåller sökord. Till exempel kan man mata in flogiston struts, och Gurgel svarar med en lista med adresserna till alla de webbsidor som innehåller både ordet flogiston och ordet struts.

Söktjänsten Gurgel kan förstås inte läsa igenom hela webben för varje fråga den kör, utan i stället bygger den upp en databas som beskriver vilka ord som finns på vilka webbsidor. Den databasen lagras lokalt hos Gurgel, och när någon söker efter ord (till exempel flogiston och struts) så översätter Gurgel det till en SQL-fråga, som körs mot den databasen.

Här är ett ER-diagram som visar hur Gurgels databas ser ut:

Ett ER-diagram som visar hur Gurgels databas ser ut

Även om såväl sökorden (attributet Ord hos entitetstypen Sökord) som webbsidornas adresser (attributet Adress hos entitetstypen Webbsida) är unika, och alltså skulle kunna användas som nycklar, har man valt att ge båda entitetstyperna en primärnyckel (attributen Id) som är ett enkelt heltal.

Uppgift 1 (4 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å vad som är primärnyckel, och vilka referensattribut som finns och vad de refererar till.

Implementationen ska vara bra.

Uppgift 2 (10 p)

Formulera följande frågor i SQL:

a) Vilka webbsidor innehåller sökordet flogiston?

b) Vilka webbsidor innehåller inte sökordet flogiston?

c) Vilka webbsidor innehåller både flogiston och struts?

d) Vilka webbsidor innehåller minst ett av sökorden flogiston och struts?

e) Vilka webbsidor innehåller flogiston men inte struts?

f) Vilka ord finns på webbsidan med adressen "http://www.oru.se/"?

g) Finns det något ord som är med i databasen, men som inte förekommer på någon webbsida?

h) Vilket ord är vanligast, dvs förekommer på flest webbsidor?

Definiera gärna vyer om det underlättar, men skapa inte nya tabeller.

Uppgift 3 (3 p)

För att lagra Gurgels databas väljer vi en databashanterare som inte automatiskt skapar index på angivna nycklar.

Vilka index bör man skapa, för att webbsöktjänsten Gurgel ska fungera snabbt och bra? Motivera valet!

Uppgift 4 (2 p)

I scenariot ovan står att man valt att ge de båda entitetstyperna Sökord och Webbsida primärnycklar i form av enkla heltal (attributen Id).

Förklara varför man har gjort så, och vad den alternativa lösningen skulle innebära för implementationen. Vilka problem kunde man ha fått?

Uppgift 5 (5 p)

I Gurgels databas kan man lagra det faktum att ett viss ord förekommer på en viss webbsida, men inget om hur många gånger ordet finns på sidan, eller var på sidan.

a) Nu vill vi lägga till en notering om hur många gånger varje ord förekommer på varje webbsida. Exempelvis förekommer ordet universitet sex gånger på webbsidan "http://www.oru.se/". Visa hur man bör ändra ER-diagrammet, och hur tabellerna sen kommer att se ut.

b) Nu vill vi i stället lagra på vilka rader som varje ord förekommer på varje webbsida. Exempelvis förekommer ordet universitet på rad nummer 7, 12, 22, 50, 66 och 113 på webbsidan "http://www.oru.se/". Visa hur man bör ändra ER-diagrammet, och hur tabellerna sen kommer att se ut.

Uppgift 6 (4 p)

Webbsöktjänsten Gurgel kommer själv att vara tillgänglig via webben, så att besökare kan gå till Gurgels webbplats, skriva in sökord och få svar. Eftersom svaren hämtas ur en databas, blir det hela alltså en databasbaserad webbplats. Vilka tekniker kan man använda för att bygga en sådan?

Uppgift 7 (4 p)

Vilken databashanterare bör Gurgel välja för sin databas? Nämn några förslag på databashanterare, och tala om varför, eller varför inte, de passar för Gurgels tillämpning!