DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 1 Normalisering Förut sunt förnuft Nu formell metod riktlinjer för att hjälpa till att gruppera attributen (egenskaperna) för varje relation serie av tester KaU - Datavetenskap - DAV B04 - MGö 2 Normalisering Är därmed en formell metod för att identifiera relationer utifrån deras primär- eller kandidatnycklar och de funktionella beroenden som finns mellan deras attribut KaU - Datavetenskap - DAV B04 - MGö 3 Karlstads Universitet, Datavetenskap 1
Mål för normalisering Minska redundansen!!! KaU - Datavetenskap - DAV B04 - MGö 4 Exempel utan redundans Staff staffno SL21 SG37 SG14 sname John White Ann Beech David Ford position Manager Assistant Supervisor salary 30000 12000 18000 branchno B005 Branch branchno B005 baddress 22 Deer Rd, London KaU - Datavetenskap - DAV B04 - MGö 5 Exempel med redundans staffno sname position salary branchno baddress SL21 SG37 SG14 John White Ann Beech David Ford Manager Assistant Supervisor 30000 12000 18000 B005 22 Deer Rd, London KaU - Datavetenskap - DAV B04 - MGö 6 Karlstads Universitet, Datavetenskap 2
Uppdateringsproblem Uppstår eventuellt när redundant data existerar insertion deletion modification KaU - Datavetenskap - DAV B04 - MGö 7 Insättningsproblem i exemplet En ny anställd skall in i databasen Branchinformationen måste matcha informationen i de andra tuplerna Hur lägger jag in information om en ny branch? Måste lägga in nulls på staffno, sname, position och salary... KaU - Datavetenskap - DAV B04 - MGö 8 Borttagningsproblem i exmplet Vad händer om vi tar bort den sista anställda på en branch? KaU - Datavetenskap - DAV B04 - MGö 9 Karlstads Universitet, Datavetenskap 3
Modifieringsproblem i exemplet Uppdatera en branch... måste uppdatera i alla tupler där den branchen finns Risk? KaU - Datavetenskap - DAV B04 - MGö 10 Viktiga egenskaper vid normalisering Får inte förlora data när relationerna delas Ingen ny information får tillkomma om man skulle slå ihop de nya relationerna igen KaU - Datavetenskap - DAV B04 - MGö 11 Funktionella beroenden Beskriver samband mellan attribut i en relation R A B A B A bestämmer unikt B B är unikt beroende av A om varje värde i A ger exakt ett värde av B KaU - Datavetenskap - DAV B04 - MGö 12 Karlstads Universitet, Datavetenskap 4
FB diagram A (determinant) B är funktionellt beroende av A B (dependent) Om vi vet värdet på A och undersöker relationen så kommer vi bara att hitta ett värde på B som har det givna värdet på A Om vi hittar två tupler som har samma värde på A så kommer de också att ha samma värde på B! För ett givet värde på B kan det dock finnas flera olika värden av A KaU - Datavetenskap - DAV B04 - MGö 13 Egenskaper FB 1:N förhållande 1:1 mellan staffno och position 1:N mellan position och staffno StaffNo är determinant i beroendet i normalisering letar vi därmed efter 1:1 förhållanden KaU - Datavetenskap - DAV B04 - MGö 14 FB i Antagande Position och branch bestämmer lönen!" #%$$ '&!" (#%$$ ' #%$$ )*!"!" &+ #%$$ &+ KaU - Datavetenskap - DAV B04 - MGö 15 Karlstads Universitet, Datavetenskap 5
FB i Identifiera KN och PN Alla attribut som inte är en del av PN skall vara funktionellt beroende av PN Finns bara en KN: staffno PN branchno, baddress, (branchno, position), (baddress, position) är determinanter, inte KN KaU - Datavetenskap - DAV B04 - MGö 16 Normalformerna Ju högre normaliseringsgrad desto... starkare, begränsat format Högre NF BCNF 3NF 2NF 1NF mindre sårbart för uppdateringsproblem KaU - Datavetenskap - DAV B04 - MGö 17 1 NF En relation där korsningen av varje rad och kolumn innehåller ett och bara ett värde R A a1 a2 a3 B b1 b1 b2 C c1 c3 c1 KaU - Datavetenskap - DAV B04 - MGö 18 Karlstads Universitet, Datavetenskap 6
Lösning UNF " 1 NF 1. Platta till tabellen varje B-värde på en ny rad nyckel {A, B} 2. Flytta ut till en ny relation R = {A, C} R2 = {A, B} R A a1 a2 a3 B {b1, b2} b2 {b1, b2, b3} C c1 c3 c2 KaU - Datavetenskap - DAV B04 - MGö 19 2 NF Alla attribut som inte är en del av PN måste vara till fullo beroende av PN får därmed inte finnas delberoenden Staff staffno SL21 SG37 SG14 {staffno, sname} sname John White Ann Beech David Ford {position, salary} inte OK! position Manager Assistant Supervisor salary 30000 12000 18000 KaU - Datavetenskap - DAV B04 - MGö 20 3 NF Ingen av de attribut som inte tillhör PN är transitivt beroende av PN staffno branchno branchno baddress Inte OK! staffno SL21 SG37 SG14 sname John White Ann Beech David Ford position Manager Assistant Supervisor salary 30000 12000 18000 branchno B005 baddress 22 Deer Rd, London KaU - Datavetenskap - DAV B04 - MGö 21 Karlstads Universitet, Datavetenskap 7
BCNF Alla determinanter är en KN Skillnad 3NF och BCNF 3NF tillåter A B om B är PN och A inte en KN BCNF insisterar på att A B är tillåtet bara om A är en KN KaU - Datavetenskap - DAV B04 - MGö 22 Karlstads Universitet, Datavetenskap 8