Ö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.



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:

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 08:00 7 30 140
2 1 08:30 8 10 140
3 1 08:45 11 100 140
4 2 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.

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!