Databaser Design och programmering Fortsättning på relationsmodellen: Normalisering funktionella beroenden normalformer informationsbevarande relationsschemauppdelning
2 Varför normalisera? Metod att skydda oss från dum design Lagra samma data flera ggr i onödan Inte kunna lagra viss information Otydlig betydelse av en tupel/rad som kan komma från otydlig betydelse av entitetsinstans
3 Dubbellagring - problem Student Namn Adress Föddat epost Program Namn Studierektor Programansvarig Anna Rydsv 940304 annni f7ksa statist Lotta Linda Pelle Bygat 960311 pella f7kko kogret Mattias DMnämnd Olle Rydsv 991115 ollan f7ksa statist Lotta Linda
Universitetet - med studieplaner och poäng 4
5 Relationsmodell Universitetet Student (PNr, Namn, Gata, GatNr, PostNr, PostOrt, liu-id, Lösen) StudentTel (Student, Tel) Program (Kod, Namn, Programansv, Studierektor, Sektion) Sektion (Namn, Lokal) Fest(Sektion, Namn, tidpunkt, budget) RegistreradPå (Student, Program, År) MedlemI (Student, Sektion, BetTermin)
6 Relationsmodell Universitetet Student (PNr, Namn, Gata, GatNr, PostNr, PostOrt, liu-id, Lösen) StudentTel (Student, Tel) Program (Kod, Namn, Programansv, Poäng, År, Studierektor, Sektion, Studieplan) Sektion (Namn, Lokal) Fest(Sektion, Namn, tidpunkt, budget) RegistreradPå (Student, Program) MedlemI (Student, Sektion, BetTermin)
7 Relationen Program (exempel) Program Pgmkod Namn Studierektor Programansvarig Studieplan Poäng År Sektion f7ksa statistik Lotta Linda Dokument1 300 2017 Statistik f7kko kogvet Jalal Mattias Dokument2 300 2017 Kogvet f7ksa statistik Lotta Linda Dokument3 300 2016 Statistik f7ksa statistik Lotta Kalle Dokument 4 300 2009 Statistik 6cddd datatek - DMnämn den Dokument 5 500 2016 D- sektion
8 Problem med Program Samma namn, sektion och poäng återkommer: redundans Tar plats. Uppdateringsanomali Insättningsanomali Borttagningsanomali Otydlig tolkning Hur undvika redundans?
9 Normalisering En metod att finna redundans Normaliserings-villkor: normalformer Begrepp: atomära attribut, kandidatnycklar, primärnycklar och nyckelattribut (primattribut) funktionella beroenden, determinant informationsbevarande relationsschemauppdelning
10 1:a Normalform (1NF) Alla attribut ska vara atomära (odelbara) Relationsmodellen antar att alla attribut är odelbara. 2:a normalform, 3:e normalform, BCNF baseras på Funktionella beroenden i relationen.
11 Funktionellt beroende X är en delmängd av attributen i en relation. Om X entydigt bestämmer värdet på ett attribut Y, kallas det att Y är funktionellt beroende av X eller att X bestämmer Y. X Y X kallas determinant i det funktionella beroendet.
Exempel Ex: Student {pnr} {namn} {pnr} {Gata} {pnr} {GatNr} {pnr} {PostNr} {pnr} {PostOrt} {pnr} {liuid}{pnr} {lösen} {pnr} {pnr} 12 Kan också skrivas: {pnr} {pnr,namn,gata, GatNr, PostNr, PostOrt,liuid,lösen} Determinanten kan vara flera attribut ex: Program {ProgKod,år}=>{Programansvarig, Studierektor} Determinanten behöver inte vara nyckelattribut {PostNr} => {PostOrt}
13 Funktionella beroenden, forts Funktionella beroenden baseras på relationens semantik. Ett fb ska gälla i alla möjliga instanser av databasen! OBS: Att det finns ett fb X Y betyder inte att det finns ett fb Y X ex: pnr=>namn betyder inte att Namn=>pnr
14 Funktionella beroenden kan härledas Transitivitet: om X Y och Y Z så X Z Kan ibland vara svårt att avgöra vilket som kom först (ex: pnr, liuid) Reflexivitet: X X alltid. Om Y X så X Y Augmentation: Om X Y så har vi också {XZ} YZ
15 Fullt funktionellt beroende Givet: X Y. Om inget attribut kan tas bort ur X utan att vi förlorar det funktionella beroendet (dvs X är minimal), kallas det fullt funktionellt beroende, ffb.
16 Fullt funktionellt beroende, exemplet Program Program (Kod, Namn, Programansv, Poäng, År, Studierektor, Sektion, Studieplan) Nyckeln ger {Kod, år} {namn, ProgAnsv, poäng, År, Studierektor, Sektion, Studieplan} MEN: {kurskod, år} {poäng} är FB men ej FFB för ett program får inte ändra poäng hur som helst! Likaså för {kod, år} => {Namn, Sektion} för ett program kan inte byta namn eller sektion. OBS att verkligheten styr!
17 Nycklar och funktionella beroenden Supernyckel en attributmängd som har fb till mängden av alla attribut i relationen (hela raden/tupeln) (pga reflexivitet finns alltid en! - Vilken?) Kandidatnyckel en attributmängd som har ffb till mängden av alla attribut i relationen (hela raden/tupeln). Primärnyckel den kandidatnyckel som väljs ut.
18 Nyckelattribut (prim-attribut) Nyckelattribut = attribut som ingår i någon kandidatnyckel till relationen. Ex Student (pnr, namn, Gata, Gatnr, Postnr, postort, liuid,lösen) pnr har ffb till alla attribut men liuid har det också, är också kandidatnyckel! Ex: Program (Kod, Namn, Programansv, Poäng, År, Studierektor, Sektion, Studieplan) Nyckelattribut markeras i relationsschemat med * Student (pnr*, namn,. liuid*,lösen) Program (Kod*, Namn År*, Studierektor.)
19 Andra normalformen - 2NF Definition: Ett relationsschema R är i 2NF om det är i 1NF och varje icke-nyckelattribut A i R är FFB av varje kandidatnyckel i R. Eller som fråga: Är alla attribut som inte är nyckelattribut FFB av alla kandidatnycklar?
20 2NF Exemplet program Program (Kod, Namn, Programansv, Poäng, År, Studierektor, Sektion, Studieplan) {Kod, läsår} {Studierektor} {Kod, läsår} {Programansv} {Kod, läsår} {Studieplan} {Kod} {namn} {Kod} {poäng} {Kod} {sektion} Uppfyller ej 2NF FFB FFB FFB FFB FFB FFB
21 Informationsbevarande relationsschemauppdelning Kom ihåg Naturlig sammansättning (*) Om relationen R delas upp i R1 och R2 så att R1*R2=R så är uppdelningen informationsbevarande!
Informationsbevarande relationsschemauppdelning, exempel 22 Person(Pnr,Namn,Adress) med funktionella beroenden: Pnr Namn, Pnr Adress, inte Namn Adress pnr namn Adress 7908101234 Anna Ågatan 3 8112237890 Anna Rydsv.12 pnr namn 7908101234 Anna 8112237890 Anna namn Adress Anna Ågatan 3 Anna Rydsv.12
23 Relationsschemauppdelning Lyft ut det/de problematiska funktionella beroendet/ na till en egen tabell ny tabell: determinant plus de attribut som bestäms av det fb gamla tabellen: stryk de attribut som bestäms av fb informationsbevarande? dubbelkolla med naturlig join (sammansättning)
24 Exemplet Program Program (Kod, Namn, Programansv, Poäng, År, Studierektor, Sektion, Studieplan) {Kod, År} {Studierektor, Programansvarig, Studieplan} {Kod} {namn, poäng, sektion} Ger: Program (Kod, namn, poäng, sektion) ProgramInstans(Kod, År, Studierektor, Programansvarig, Studieplan)
25 Tredje normalform - 3NF Definition: Ett relationsschema R är i 3NF om det är i 2NF och inget icke-nyckel-attribut är ffb av något annat icke-nyckel-attribut Eller, motsvarande: 2NF och det för varje FFB X A som finns i R, gäller något av följande villkor: a) determinanten X är en supernyckel för R b) A är ett nyckelattribut i R Frågan för 3NF: För varje ffb: är X en supernyckel eller A ett nyckelattribut?
26 Exemplet Student Student (pnr, namn, Gata, Gatnr, Postnr, postort, liuid,lösen) Funktionella beroenden: {pnr}=> {namn, Gata, Gatnr, Postnr, postort, liuid,lösen} {liuid}=> {pnr, namn, Gata, Gatnr, Postnr, postort,lösen} {Postnr}=>{postort} Uppfyller INTE 3NF
27 Boyce-Codd normalform - BCNF Ett relationsschema R är i BCNF om det är i 2NF och inget attribut är ffb av något icke-nyckel-attribut Eller, motsvarande: om det är i 3NF och för varje ffb X A som finns i R, X är en kandidatnyckel för R. Frågan för BCNF: är varje determinant en kandidatnyckel?
28 3NF/BCNF Inte alltid möjligt att transformera ett schema till BCNF och behålla beroendena. 3NF har de flesta av BCNF s fördelar. Det är inte självklart att man måste uppfylla BCNF. OBS: 3NF tillåter någon sorts redundans som BCNF inte gör (funktionella beroenden mellan primattribut).
29 Resultat: Student (pnr, namn, Gata, Gatnr, Postnr, liuid,lösen) PostAdress (PostNr, PostOrt) Program (Kod, namn, poäng, sektion) ProgramInstans(Kod, År, Studierektor, Programansvarig, Studieplan) Vilka nycklar får de nya relationerna? Definition: En nyckel kan identifiera hela tupeln.
Frågor? Normalisering Funktionella beroenden Normalformer: 1NF, 2NF, 3NF, BCNF Informationsbevarande relationsschemauppdelning