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. |
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:
Ä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.
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.
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.
Vilka index bör man skapa, för att webbsöktjänsten Gurgel ska fungera snabbt och bra? Motivera valet!
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?
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.