Databasteknik: Inlämningsuppgift 4 - Normalisering
I tabellen med uppgifter
står när det är meningen att du ska göra den här uppgiften,
och när den senast ska lämnas in.
Mål
-
Att lära sig, förstå och öva på normalisering med normalformerna 1NF, 2NF, 3NF och BCNF.
-
Att tänka mer kring bra och dåliga sätt att bygga en databas.
-
Att öva på rapportskrivning.
Förberedelser
Vi föreslår att studenten läser om normalformer och normalisering i kursboken,
och att studenten läser detta med flit och noggrannhet:
-
Kapitel 11 i kursboken, Normalformer och normalisering
Repetera också
övning 3,
där du skapade och analyserade
demodatabasen.
Scenario
Du är fortfarande DBA för
demodatabasen.
Det finns en del problem med designen av den databasen,
och det är ditt jobb att använda teorin för normalisering
för att hitta dessa problem, och åtgärda dem.
Uppgift
Analysera var och en av tabellerna i demodatabasen,
och bestäm om den uppfyller BCNF.
Om den inte gör det, modifiera den så att den gör det.
Man kan behöva ersätta den med två eller flera nya tabeller.
När du gör uppgiften, så antag att stadsnamn är unika,
dvs att det inte kan finnas två städer med samma namn.
Detta innebär att det finns ett funktionellt beroende
mellan city och state.
Några ledtrådar
-
Normalformer och funktionella beroenden bestäms inte av vilka data som råkar finnas i tabellen just nu.
-
Normalformer och funktionella beroenden beror på exakt vad tabellen och dess kolumner betyder.
Om man tolkar tabellen på ett nytt sätt, även utan att ändra schemat alls, kan normalformen ändras.
-
Tabellen sale är förmodligen
värst roligast.
Glöm inte att titta på kvittona i
övning 3
för att få ledtrådar till vad tabellens data representerar.
Redovisning
Lämna in en skriftlig rapport.
Rapporten ska innehålla:
-
För varje tabell i den ursprungliga databasen:
- Vilka kandidatnycklar finns?
- Vilken av dessa är primärnyckel?
- Ange alla fullständiga funktionella beroenden i tabellen.
- Vilken är den högsta normalform (av första, andra, tredje och BCNF) som tabellen uppfyller?
-
För varje tabell av dessa som inte uppfyller BCNF:
- Visa varför den inte uppfyller nästa högre normalform.
- Visa minst ett problem som finns med tabellen,
och som skulle försvinna om den hade en design som uppfyllde BCNF.
- Gör om tabellen så att den uppfyller BCNF.
Man kan behöva ersätta den med två eller flera nya tabeller.
-
Du behöver inte skriva create table-kommandon,
eller utföra dem i databasen.
Ange bara vilka kolumner som de nya tabellerna ska ha.
-
Det är förmodligen mycket lättare att förstå vad du gör,
både för läraren och för dig själv,
om du visar de nya tabellerna med några rader inlagda som exempel.
Den här inlämningsuppgiften lämnas till
Andreas Persson
(andreas.persson@oru.se).
Man kan lämna den på papper, antingen direkt till honom eller till Thomas,
eller i brevlådan utanför dörren till korridoren där
studievägledningen sitter.
Det går också bra att skicka den med e-post, och då helst som pdf.
Word-dokument brukar inte fungera så bra med diagram,
så använd papper eller pdf!
|
Bestäm målgruppen för rapporten
(se Hur man skriver en rapport)
och ange i rapporten vad du förväntar dig av läsaren.
Men skriv inte för en databaslärare som redan vet allt som du kommer att skriva!
Tanken är att i första hand ska två studenter arbeta tillsammans, och lämna in en gemensam rapport,
men det går också bra med grupper, och rapporter, på en eller i nödfall tre studenter.
Man får samarbeta i större grupper,
men då måste man ändå lämna in en rapport per grupp om en till tre studenter.
Dessutom måste varje rapport ange namnet på alla som bidrog i arbetet.
Samarbete är alltså tillåtet, men måste redovisas.
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
24 mars 2017