Databasteknik: Teoriövning 6, om normalformer
Välj själv om du vill göra övningen ensam eller i någon typ av grupp.
Det gör inget om en del av frågorna skulle vara svåra
(eller omöjliga!)
att svara på,
för de är kanske avsedda att inleda en diskussion
snarare än att ha ett enda rätt svar.
Förberedelser
Innan denna övning bör du ha tittat på
föreläsning nummer sju
om normalformer och normalisering
på YouTube
(uppdelad i två Youtube-videor).
Man kan också läsa i kursboken eller motsvarande.
Uppgift 1
Här är en tabell,
men vi har spillt kaffe på den,
så tre av värdena i tabellen har suddats ut
och lämnat tomma rutor:
Data |
A | B | C | D | E |
1 | 7 | 9 | 6 | 4 |
2 | 8 | 3 | 6 | 5 |
4 | 7 | | 6 | |
3 | 9 | 4 | 6 | 7 |
17 | | 9 | 6 | 8 |
Vi vet att det finns två fullständiga funktionella beroenden
i tabellen, nämligen
B → C
och
{B, D} → E.
Kan vi avgöra vad det stod i de tomma rutorna innan vi spillde kaffe på dem?
Uppgift 2
Vad är skillnaden mellan ett funktionellt beroende
och ett fullständigt funktionellt beroende?
Vi vet alltså att i tabellen i uppgiften ovan finns
de två fullständiga funktionella beroendena
B → C
och
{B, D} → E
finns i tabellen.
Vilka icke-fullständiga funktionella beroenden vet vi då att det finns i tabellen?
Uppgift 3
Här är en tabell som verkar handla om båtar:
Båtdata |
Båt | Person | Datum | Tid 1 | Tid 2 |
1 | 7 | 2022-11-21 | 10:00 | 12:00 |
1 | 13 | 2022-11-21 | 13:00 | 15:00 |
2 | 7 | 2022-11-22 | 10:00 | 12:00 |
3 | 7 | 2022-11-22 | 12:00 | 14:00 |
Kan vi svara på följande frågor?
- Vilka kandidatnycklar finns i tabellen?
- Vilken är primärnyckeln?
- Vilka fullständiga funktionella beroenden finns i tabellen?
- Vilka normalformer,
av 1NF, 2NF, 3NF och BCNF, uppfyller tabellen?
Uppgift 4
Det visar sig att tabellen i uppgiften ovan
beskriver uthyrning av båtar.
Personer hyr båtar mellan två klockslag en viss dag.
Uthyrningstiden är alltid två timmar.
Samma båt kan inte vara uthyrd flera gånger samtidigt.
- Vilka kandidatnycklar finns nu i tabellen?
- Vilken är primärnyckeln?
- Vilka fullständiga funktionella beroenden finns i tabellen?
- Vilka normalformer,
av 1NF, 2NF, 3NF och BCNF, uppfyller tabellen?
Uppgift 5
Nu får vi reda på att tabellen inte alls
beskriver uthyrning av båtar,
utan den beskriver att våra spioner upptäckt fientliga ubåtar.
Vi tänker oss att en och samma spion inte kan upptäcka en och samma ubåt mer än en gång per dag.
För att vara säkra på att det var en riktig ubåt,
och att spionen inte inbillat sig,
krävs två olika observationer på olika tider
samma dag av samma spion och samma ubåt
innan vi lägger in den i tabellen.
- Vilka kandidatnycklar finns nu i tabellen?
- Vilken är primärnyckeln?
- Vilka fullständiga funktionella beroenden finns i tabellen?
- Vilka normalformer,
av 1NF, 2NF, 3NF och BCNF, uppfyller tabellen?
Uppgift 6
Här är tabellen Tidrapporter.
Vi ser hur många timmar varje anställd har jobbat varje månad.
Exempelvis har anställd nummer 7 arbetat 160 timmar under september.
ID är primärnyckel,
och ytterligare en kandidatnyckel bildas av
kombinationen av Anställd och Månad.
Tidrapporter |
ID | Anställd | Timmar | Månad |
1 | 7 | 160 | september |
2 | 8 | 48 | oktober |
3 | 6 | 144 | november |
4 | 9 | 160 | augusti |
5 | 9 | 100 | oktober |
6 | 1 | 80 | september |
7 | 8 | 140 | augusti |
8 | 9 | 184 | november |
9 | 3 | 48 | augusti |
10 | 2 | 184 | november |
11 | 1 | 100 | november |
- Vilka fullständiga funktionella beroenden finns i tabellen?
- Vilka normalformer,
av 1NF, 2NF, 3NF och BCNF, uppfyller tabellen?
Uppgift 7
Jag vill hålla reda på vilka TV-program jag ska se under dagen,
och skapar tabellen Program, där jag lägger in när programmen går:
Program |
Id | Kanal | Tid | Namn | Viktighet |
1 | TV3 | 13:40 | Oprah Winfrey Show | Inte så värst |
2 | SVT 1 | 18:00 | Bolibompa | Jätte |
3 | SVT 2 | 19:00,23:30 | Kulturnyheterna | Ganska |
4 | SVT 1 | 19:30 | Rapport | Sådär |
5 | TV4 | 20:00,22:00,23:30 | Hem till gården | Jätte |
6 | Kanal 5 | 23:00 | Big Brother | Ganska |
Det finns två kandidatnycklar: dels Id, och dels kombinationen av Kanal och Tid.
En del av programmen sänds i repris samma dag,
till exempel Hem till gården som sänds inte mindre än tre gånger den här dagen.
Viktighet anger hur gärna jag vill se programmet.
a) Tabellen uppfyller inte första normalformen.
Förklara varför den inte gör det.
b) Tabellen uppfyller alltså inte första normalformen.
Men hur är det med de andra normalformerna,
nämligen 2NF, 3NF och BCNF?
Vilka av dessa uppfyller tabellen?
Motivera svaren!
c) Gör de uppdelningar av tabellen som behövs för att
få en bättre design.
Ange vilka nya tabeller som behövs och vilka kolumner varje tabell innehåller.
Ange också vad som är primärnyckel, och
vilka referensattribut som finns och vad de refererar till.
Uppdelningen ska vara bra,
och var och en av de nya tabellerna ska vara i BCNF.
d) Visa att var och en av de nya tabellerna uppfyller BCNF.
Uppgift 8
Lisa och Kalle bor tillsammans,
och vill hålla koll på städningen.
Därför skapar de följande tabell, som heter Städning:
Städning |
Rum | Dag | Städare | Yta | Tid |
Hallen | 2007-11-16 | Lisa | 4 | 2 |
Hallen | 2007-11-23 | Kalle | 4 | 2 |
Hallen | 2007-11-30 | Lisa | 4 | 2 |
Köket | 2007-11-16 | Lisa | 8 | 20 |
Köket | 2007-11-23 | Kalle | 8 | 20 |
Köket | 2007-11-30 | Lisa | 8 | 20 |
Sovrummet | 2007-11-16 | Lisa | 10 | 10 |
Sovrummet | 2007-11-23 | Kalle | 10 | 10 |
Sovrummet | 2007-11-30 | Lisa | 10 | 10 |
Badrummet | 2007-11-16 | Lisa | 4 | 20 |
Badrummet | 2007-11-23 | Kalle | 4 | 20 |
Badrummet | 2007-11-30 | Lisa | 4 | 20 |
Några observationer om tabellen:
-
Man städar inte samma rum mer än en gång per dag.
-
Lisa och Kalle hjälps aldrig åt att städa,
så det är alltid bara en person som städar per dag.
-
Man bygger inte om lägenheten,
så ett rums yta kan inte ändras.
-
Det tar alltid lika lång tid att städa samma rum.
Svara på följande frågor:
- Vilka kandidatnycklar finns i tabellen?
- Vilken är primärnyckeln?
- Vilka fullständiga funktionella beroenden finns i tabellen? (Rita gärna en figur.)
- Vilka normalformer,
av 1NF, 2NF, 3NF och BCNF, uppfyller tabellen?
- Visa på något problem som uppstår i tabellen,
och som vi skulle sluppit med en högre grad av normalisering.
Uppgift 9
En förening har sex olika medlemmar, och lagrar dem i en tabell som ser ut så här.
Id är primärnyckel.
Medlemmar |
Nummer | Namn | Adress | Postnummer | Ort |
1 | Bo Ek | Granvägen 16 | 702 21 | Örebro |
2 | Anna Berg | Granvägen 23 | 702 21 | Örebro |
3 | Lars Skog | Tallvägen 4 | 702 21 | Örebro |
4 | Bo Lund | Storgatan 3 | 703 61 | Örebro |
5 | Bo Lund | Storgatan 3 | 642 37 | Flen |
6 | Bo Lund | Storgatan 3 | 642 37 | Flen |
a) Vilken är den högsta normalform som tabellen uppfyller? Motivera svaret.
b) Baserat på ditt svar på fråga a, vad bör man göra? Varför?
Förslag på lösningar
Det finns lösningsförslag till en del av uppgifterna,
men försök lösa dem själv först.
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
18 november 2022