KaU - Datavetenskap - DAV B04 - MGö DAV B04 - Databasteknik Normalisering (igen) 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 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 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 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 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö Mål för normalisering Minska redundansen!!! 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
Exempel utan redundans Staff staffNo sName position salary branchNo SL21 SG37 SG14 John White Ann Beech David Ford Manager Assistant Supervisor 30000 12000 18000 B005 B003 Branch branchNo bAddress B005 B003 22 Deer Rd, London 163 Main St, Glasgow 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö Exempel med redundans StaffBranch staffNo sName position salary branchNo bAddress SL21 SG37 SG14 John White Ann Beech David Ford Manager Assistant Supervisor 30000 12000 18000 B005 B003 22 Deer Rd, London 163 Main St, Glasgow 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö Uppdateringsproblem Uppstår eventuellt när redundant data existerar insertion deletion modification 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
Insättningsproblem i exemplet StaffBranch 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... 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
Borttagningsproblem i exmplet StaffBranch Vad händer om vi tar bort den sista anställda på en branch? 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
Modifieringsproblem i exemplet StaffBranch Uppdatera en branch... måste uppdatera i alla tupler där den branchen finns Risk? 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
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 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
Funktionella beroenden Beskriver samband mellan attribut i en relation 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 R A B 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö FB diagram A (determinant) B (dependent) B är funktionellt beroende av A 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 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 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 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö FB i StaffBranch Antagande Position och branch bestämmer lönen staffNo {sName, position, salary, branchNo, bAddress} branchNo bAddress bAddress branchNo {branchNo, position} salary {bAddress, position} salary 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 2018-12-31 FB i StaffBranch 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 staffNo -> {sName, position, salary, branchNo} branchNo -> bAddress bAddress -> branchNo {branchNo, position} -> salary {bAddress, position} -> salary 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö Karlstads Universitet, Datavetenskap
KaU - Datavetenskap - DAV B04 - MGö Normalformerna Ju högre normaliseringsgrad desto... starkare, begränsat format mindre sårbart för uppdateringsproblem 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 1 NF En relation där korsningen av varje rad och kolumn innehåller ett och bara ett värde R A B C a1 a2 a3 b1 b2 c1 c3 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö Lösning UNF 1 NF ”Platta till” tabellen varje B-värde på en ny rad nyckel {A, B} Flytta ut till en ny relation R = {A, C} R2 = {A, B} R A B C a1 a2 a3 {b1, b2} b2 {b1, b2, b3} c1 c3 c2 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 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… {staffNo, sName} {position, salary} inte OK! Staff staffNo sName position salary SL21 SG37 SG14 John White Ann Beech David Ford Manager Assistant Supervisor 30000 12000 18000 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö 3 NF Ingen av de attribut som inte tillhör PN är transitivt beroende av PN staffNo branchNo branchNo bAddress Inte OK! StaffBranch staffNo sName position salary branchNo bAddress SL21 SG37 SG14 John White Ann Beech David Ford Manager Assistant Supervisor 30000 12000 18000 B005 B003 22 Deer Rd, London 163 Main St, Glasgow 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö
KaU - Datavetenskap - DAV B04 - MGö BCNF Alla determinanter är en KN Skillnad 3NF och BCNF 3NF tillåter AB om B är PN och A inte en KN BCNF insisterar på att AB är tillåtet bara om A är en KN 2018-12-31 KaU - Datavetenskap - DAV B04 - MGö