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
Titta på videoinspelningarna från föreläsning 7
om normalisering.
Vi föreslår också att studenten läser om normalformer och normalisering i kursboken,
och att studenten gör 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 skrivas på engelska.
Rapporten ska innehålla:
- Ett försättsblad med namn, datum och vilken kurs och inlämningsuppgift det är
- Vilken målgrupp rapporten vänder sig till
-
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
Hadi Banaee
(hadi.banaee@oru.se).
Enklast är att skicka den med vanlig e-post, alternativt som ett kursmeddelande i Blackboard.
Gör helst en PDF.
(Word-dokument brukar inte fungera så bra med diagram.)
Den här rapporten ska skrivas på engelska.
|
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!
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
29 mars 2020