Databasteknik: Lösningar till teoriövning 6

Uppgift 1

Det stod 9, 4 och (överkurs?) ett värde som inte var 7, 8 eller 9.

På första raden står det 7 i kolumn B och 9 i kolumn C. Även på tredje raden står det 7 i kolumn B, och eftersom B → C måste det stå 9 i kolumn C på den raden.

På första raden står det 7 i kolumn B, 6 i kolumn D och 4 i kolumn E. Även på tredje raden står det 7 i kolumn B och 6 i kolumn D, och eftersom {B, D} → E måste det stå 4 i kolumn E på den raden.

Vi ser att det står 9 i kolumn C både på första raden och sista raden, och det finns ett ffb B → C, men funktionella beroenden är inte dubbelriktade, så bara för att det står 7 i kolumn B på första raden kan vi inte sluta oss till att det står 7 i kolumn B också på sista raden.

Däremot kan vi använda beroendet {B, D} → E för att se vad det inte kan stå:

Alltså kan kolumnen B på sista raden inte vara 7, 8 eller 9.

Uppgift 2

Ett fullständigt funktionellt beroende är ett funktionellt beroende där det inte finns med några onödiga kolumner i determinanten. Har man ett fullständigt funktionellt beroende kan man alltså skapa ett icke-fullständigt funktionellt beroende genom att lägga till onödiga kolumner i determinanten.

Utgående från de två ffb vi känner till, dvs B → C och {B, D} → E, kan vi skapa många funktionella beroenden som inte är fullständiga:

{ A, B, D, E } → C
{ A, B, D } → C
{ A, B, E } → C
{ A, B } → C
{ B, D, E } → C
{ B, D } → C
{ B, E } → C
{ A, B, C, D } → E
{ A, B, D } → E
{ B, C, D } → E

(Om uppgiften hade varit att lista alla funktionella beroenden, och inte bara alla icke-fullständiga funktionella beroenden, skulle vi också tagit med B → C och {B, D} → E. Ett fullständigt funktionellt beroende är ett funktionellt beroende.)

Uppgift 3

...

Uppgift 4

Det finns två kandidatnycklar: kombinationen { Båt, Datum, Tid 1 } samt kombinationen { Båt, Datum, Tid 2 }.

Det går inte att veta vilken av kandidatnycklarna man har valt som primärnyckel, men en rimlig gissning är den första av de två, dvs { Båt, Datum, Tid 1 }.

Fullständiga funktionella beroenden:

Tabellen uppfyller normalformerna 1NF, 2NF och 3NF, men inte BCNF.

Uppgift 5

Det finns en enda kandidatnyckel, nämligen kombinationen { Båt, Person, Datum }.

Eftersom det bara finns en kandidatnyckel blir den också primärnyckel.

Fullständiga funktionella beroenden:

Tabellen uppfyller alla normalformerna 1NF, 2NF och 3NF och BCNF.

Uppgift 6

Fullständiga funktionella beroenden: Tabellen uppfyller alla normalformerna 1NF, 2NF och 3NF och BCNF.

Uppgift 7

a)

Första normalformen föreskriver enkla, odelbara värden, eller annorlunda uttryckt "högst ett värde i varje ruta". Här har jag stoppat in en hel lista med värden i samma ruta.

b)

Ingen av dessa. De höge normalformerna lägger var och en på ytterligare krav, som tabellen måste uppfylla. 2NF förutsätter 1NF, och lägger sen på ytterligare krav. 3NF förutsätter 2NF, och lägger sen på ytterligare krav. BCNF förutsätter 3NF, och lägger sen på ytterligare krav.

c)

Primärnycklarna är understrukna:

Referensattribut:

Med exempeldata:

Program
Id Kanal Namn Viktighet
1 TV3 Oprah Winfrey Show Inte så värst
2 SVT 1 Bolibompa Jätte
3 SVT 2 Kulturnyheterna Ganska
4 SVT 1 Rapport Sådär
5 TV4 Hem till gården Jätte
6 Kanal 5 Big Brother Ganska
Visningar
Program Tid
1 13:40
2 18:00
3 19:00
3 23:30
4 19:30
5 20:00
5 22:00
5 23:30
6 23:00

d)

Båda tabellerna innehåller nu endast enkla, atomära värden, så de uppfyller 1NF. De uppfyller också BCNF, eftersom varje determinant är en kandidatnyckel, dvs det finns inga fullständiga funktionella beroenden som går från något som inte är en kandidatnyckel:

Uppgift 8

...

Uppgift 9

...


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 18 november 2022