Örebro universitet
Institutionen för teknik
Thomas Padron-McCarthy
(Thomas.Padron-McCarthy@tech.oru.se)
Omtentamen i
Databaskonstruktion
för Dataingenjörsprogrammet
onsdag 7 januari 2004 kl 14:00 - 19:00
Hjälpmedel:
|
Inga hjälpmedel.
|
Poängkrav:
|
Maximal poäng är 39.
För betyget 3 krävs 19 poäng.
För betyget 4 krävs 26 poäng.
För betyget 5 krävs 32 poäng.
|
Resultat och lösningar:
|
Meddelas på kursens hemsida senast onsdag 21 januari 2004.
|
Visning:
|
Tisdag 22 januari 2004 kl 12:00-12:30 i mitt rum (T2220).
Därefter kan tentor hämtas på expeditionen.
|
Examinator och jourhavande:
|
Thomas Padron-McCarthy, telefon 070-7347013.
|
-
Skriv tydligt och klart. Lösningar som inte går att läsa kan
naturligtvis inte ge några poäng. Oklara formuleringar kommer att
misstolkas.
-
Skriv den personliga tentamenskoden på varje inlämnat blad.
Skriv inte namn eller personnummer på bladen.
-
Lös bara en uppgift per blad. Skriv bara på en sida av papperet.
Använd inte röd skrift.
-
Antaganden utöver de som står i uppgifterna måste anges. Gjorda
antaganden får inte förändra den givna uppgiften.
LYCKA TILL!
Scenario till uppgifterna
Universitetet behöver spara pengar,
och därför har man beslutat
att effektivisera städningen.
Som ett led i det vill man
mer noggrant hålla reda på vad som ska städas, och när, och av vem.
Naturligtvis kommer man att använda en databas till det.
Uppgift 1 (3 p)
Vilka fördelar och nackdelar finns med att använda databasteknik,
det vill säga att använda en databashanterare,
jämfört med alternativet att låta en applikation hantera sina data själv?
Uppgift 2 (3 p)
Den så kallade tre-schema-arkitekturen innebär att man
beskriver en och samma databas på tre olika nivåer,
med tre olika scheman: ett externt schema, ett logiskt schema och ett fysiskt schema.
Vad beskrivs av de olika schemana?
Vilka fördelar ger denna uppdelning i tre scheman?
Uppgift 3 (3 p)
Rita ett ER-diagram för universitetets städdatabas.
Använd informationen nedan, och tänk också på att det
ska gå att svara på frågorna i uppgift 5.
Om du behöver göra några antaganden när du gör ER-diagrammet,
så ange dessa antaganden.
Det som ska lagras i databasen är följande:
-
Städare.
En städare har ett unikt städarnummer,
ett namn,
och en timkostnad.
-
Ytor som ska städas.
En yta kan till exempel utgöras av ett arbetsrum,
en föreläsningssal eller en korridor.
Varje yta har ett unikt ytnummer,
en area (mätt i kvadratmeter),
och en kort beskrivning (till exempel "Föreläsningssal T1").
-
Vem som städar var.
Varje yta städas av en enda städare,
men en städare kan städa flera olika ytor.
Uppgift 4 (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 5 (7 p)
Formulera följande frågor i SQL:
a) Vem ska städa i föreläsningssal T1?
Vi vill veta vad den städare heter, som ska städa ytan
med beskrivningen "Föreläsningssal T1".
b) Vilka ytor saknar städare som städar dem?
c) Vilka städare saknar ytor att städa?
d) Universitetet räknar med att en städare kan städa en kvadratmeter
per minut. Antag att alla ytor ska städas en gång i veckan, och att alla städare
arbetar 40 timmar i veckan. Vilka städare kommer inte att hinna med att städa sina ytor?
Vi vill veta de städarnas nummer och namn.
Definiera gärna vyer om det underlättar.
Uppgift 6 (4 p)
Frågorna av samma typ som de fyra frågorna i uppgiften ovan förekommer ofta.
Vilka index bör skapas för att de frågorna ska gå snabbt?
Varför bör just dessa index skapas?
(För frågan i deluppgift a betyder "samma typ"
att man också kan fråga efter vem som städar andra ytor,
inte bara just föreläsningssal T1.)
Uppgift 7 (5 p)
Om en SQL-fråga är komplicerad eller arbetar med stora mängder data,
kan den ta lång tid att köra. Om man ändå behöver köra frågan ofta,
kan man beräkna resultatet i förväg, och lagra det i en tabell.
Delfråga d i uppgift 5,
den om vilka städare som inte hinner med att städa sina ytor,
går inte tillräckligt snabbt att köra,
trots indexen som skapades i uppgift 6.
Visa hur man kan skapa en tabell för att lagra hur många kvadratmeter varje städare har att städa,
och hur man kan använda triggers för att hålla det lagrade resultatet uppdaterat.
Du behöver inte skriva exakt riktig SQL-kod,
men det ska framgå vilka triggers som finns, när de utlöses,
och vad de gör.
Uppgift 8 (3 p)
Universitetet upptäcker att schemat från uppgift 3 och 4 inte fungerar så bra.
Det tar till exempel längre tid att städa en toalett
med en golvyta på två kvadratmeter,
än det tar att sopa två kvadratmeter i en korridor.
Därför måste man skilja på olika typer av ytor.
Det finns en hel mängd olika sorters ytor
(toaletter, korridorer, kemilabb, datorhallar och så vidare),
och det tillkommer hela tiden nya som man inte tänkt på tidigare.
Varje yta ska vara av en viss typ.
Hur bör man modellera detta?
Visa vilka tillägg och förändringar som bör göras i ER-diagrammet och i relationsschemat,
och motivera varför den valda lösningen är lämplig.
Uppgift 9 (4 p)
Man vill lagra även städarnas arbetsschema,
alltså när de ska städa de olika ytorna.
Därför skapar man tabellen Arbetsschema:
Passnummer | Städare | Dag | Starttid | Yta | Area | Summa |
1 | 1 | Må | 08:00 | 7 | 30 | 140 |
2 | 1 | Må | 08:30 | 8 | 10 | 140 |
3 | 1 | Må | 08:45 | 11 | 100 | 140 |
4 | 2 | Må | 08:00 | 13 | 1000 | 1000 |
Städarnas arbetstid är uppdelad i städpass.
Ett städpass går ut på att en viss städare städar en viss yta.
Tabellen innehåller alla städpass under en vecka.
Varje rad i tabellen Arbetsschema är tänkt att beskriva ett städpass.
-
Passnummer är ett unikt nummer för varje städpass.
-
En städare kan inte städa på flera ställen samtidigt,
och därför kommer kombinationen av
Städare, Dag och Starttid också att vara unik
för varje städpass.
-
Eftersom varje yta bara städas en gång varje vecka,
kommer Yta också att vara unikt.
-
Area är arean på den angivna ytan.
-
Summa är summan av arean på de ytor
som den angivna städaren städar under hela veckan.
I exemplet ovan städar städare nummer 1 ytorna nummer 7, 8 och 11,
med en sammanlagd yta av 140 kvadratmeter.
a)
Ange vilka fullständiga funktionella beroenden som finns i tabellen.
Tabellen uppfyller inte BCNF, men vilken är den högsta normalform som den uppfyller?
b)
Visa hur man kan göra om tabellen så att den uppfyller BCNF.
c)
Visa något problem som kan uppstå i tabellen i dess ursprungliga form,
och visa hur det problemet försvinner när man gör om den till BCNF.
Uppgift 10 (3 p)
För att underlätta arbetet med städdatabasen,
vill man göra den tillgänglig via webben.
Vilka olika sätt kan man använda för att åstadkomma detta?
Beskriv kort hur metoderna fungerar!