220 likes | 323 Vues
Learn about methods for database design, ER modeling, normalization, keys, and rules for functional dependencies in relational data models. Understand the importance of superkeys, closure, BCNF, and 3NF for maintaining data quality in relationships.
E N D
3. Funktionelle afhængigheder og normalisering Kvalitet i relationer 3. Funktionelle afhængigheder og normalisering
Normalisering 82 • Metoder til database-design • ER-model + konvertering til relationel model • Top down (start med strukturen) • Normalisering → relationel model • Baseret på funktionelle afhængigheder • Bottom up (starte med de enkelte data) 3. Funktionelle afhængigheder og normalisering
Funktionelle afh. def. 83 • Funktionel afhængighed i en relation R • ABC → D • Hvis attributterne A, B og C er ens, så skal D også være ens - for alle tupler, til enhver tid!! • Kræver indgående kendskab til data! • Eksempler • cpr → navn cpr → adresse • adresse → telefon • gælder næppe i disse mobil-tider • postnr → postdistrikt omv. gælder ikke, Viby • cpr, kursusnr → karakter 3. Funktionelle afhængigheder og normalisering
Nøgler, 84 • En nøgle er en mængde af attributter, som alle andre attributter i relationen afhænger af. • Eksempler • Person (cpr, navn, adr) • Postdistrikt (postnr, distrikt) • Kursus (stud_cpr, kursusnr, tidspunkt, karakter) 3. Funktionelle afhængigheder og normalisering
Super-nøgler, 86 • Minimal: En nøgle må ikke indeholde unødvendige attributter • Hvis en attribut tage ud af mængden, så forsvinder nøgle-egenskaben • Super-nøgle: Mængde af attributter, der indeholder en nøgle + evt. ekstra attributter • En super-nøgle er ikke ekstra god - tværtimod! 3. Funktionelle afhængigheder og normalisering
Nøgler i ER, 87 • Nøgler i relationelt skema lavet på baggrund af ER • Entity set • Har allerede nøgle (check minimal) • Relationship • Nøgle = nøgler fra deltagende entity sets • Svag entity set • Egen nøgle + nøgle fra "stærke" entity set 3. Funktionelle afhængigheder og normalisering
Regler for funk. afh., 90 • Trivielle afhængigheder • AB…C → A • Kombiner • AB → C og AB → D, så AB → CD • Split • AB → CD, så AB → C og AB → D • Transitiv • A → B og B → C, så A → C 3. Funktionelle afhængigheder og normalisering
Closure, 92 • Aflukningen (closure) af en mængde af attributter: • Alle de attributter, der er afhængige af attributterne i mængden • Notation: {A, B}+ • Hvis X+ er alle attributter i R, så er X supernøgle i R 3. Funktionelle afhængigheder og normalisering
Design af relationelt skema, 102 • Vi skal undgå relationer med dårlige egenskaber fig. 3.21, side 103 • redundans • Samme information flere gange • opdaterings-problemer • Opdatering i en tupel, kræver opdatering i andre tupler • sletnings-problemer • sletning af en tupel medfører at anden information slettes. 3. Funktionelle afhængigheder og normalisering
Opdeling af relationer, 103 • Relationer med dårlige egenskaber skal opdeles i flere mindre relationer, der hver især er uden dårlige egenskaber. • Fig. 3.22, side 104 • Fig. 3.23, side 105 3. Funktionelle afhængigheder og normalisering
Boyce-Codd normal-form (BCNF), 105 • Normal-form • Reglement for relationer • Høj normalform = få dårlige egenskaber • BCNF • Hvis X → B (ikke triviel), så er X supernøgle i relationen. • Enhver determinant (venstre side i funk. afhængighed) skal være supernøgle. 3. Funktionelle afhængigheder og normalisering
BCNF eksempel • BCNF eksempel • Person (cpr, navn, adresse, postnr, bynavn) • cpr → navn, adresse, postnr, bynavn • postnr → bynavn • Opdeles i • Person2 (cpr, navn, adresse, postnr) • Postdistrikt (postnr, bynavn) 3. Funktionelle afhængigheder og normalisering
Join af relationer, 112 • Opdelte relationer skal kunne samles (join), så de bliver præcis som før • ingen nye (bogus) tupler • ingen manglende tupler 3. Funktionelle afhængigheder og normalisering
3. normal-form (3NF), 114 Svagere udgave af BCNF + Svagere: Flere dårlige egenskaber − Mindre opdeling = hurtigere søgning De-normalisering Regel: Hvis X → A (ikke-triviel), så er X supernøgle eller A er attribut i en nøgle (ny i forhold til BCNF) 3. Funktionelle afhængigheder og normalisering
3NF eksempel, 114 • Mulige nøgler • {title, city} og {theater, title} • 3NF OK • City er en del af nøglen {Title, City} • Brud på BCNF • Theater → City, men Theater er ikke nøgle • Problem: Opdeling {theater, city} for sig selv bryder den funktionelle afhængighed {title, city} → theater • Løsning: Undladt opdeling, bliv ved 3NF 3. Funktionelle afhængigheder og normalisering
1NF og 2NF • 1NFAlle attributter er atomare + alle relationer har en nøgle • Ingen sammensatte attributter • 2NF Afhængighed af hele nøglen • En attribut må ikke være afhængig af en del af nøglen. • {cpr, navn, kursusnr, karakter} • cpr → navn kun afhængig af en del af nøglen • Forholdet cpr, navn må ud i en selvstændig relation. 3. Funktionelle afhængigheder og normalisering
The Relational Oath • "I promise to use the key, the whole key, and nothing but the key, so help me Codd" • Det var Codd, der definerede den relationelle model - og normalformerne. 3. Funktionelle afhængigheder og normalisering
Flerværdi afhængigheder, 118 • Multivalued dependencies (MVD) • Generalisering af funk. afhængighed. • 2 mængder af attributter er uafhængige af hinanden. • 2 typer information i samme relation medfører redundans. • Fig. 3.29 , s. 118 vs. 3. Funktionelle afhængigheder og normalisering
Flerværdi afh. def., 119 A1A2…An→ → B1B2…Bk • Værdierne i B'erne er uafhængige af værdierne af alle andre attributter [end A'erne] • For alle tupler t, u [ens mht. A'er] eksisterer en tupel v, der er • ens med t og u mht. A'er • ens med t mht. B'er • ens med u mht. alle attributter ikke i A eller B • Fig. 3.29 side 118 + 120 3. Funktionelle afhængigheder og normalisering
Regler for MVD, 121 • A → → BC medfører ikke A → → B • name → → street holder ikke, da city ikke kan variere frit • A → B medfører A → → B • Alm. FD er altså er særtilfælde af MVD 3. Funktionelle afhængigheder og normalisering
4. normalform (4NF), 122 • Regler • A1A2…An→ → B1B2…Bk er triviel, hvis • nogle af B'erne også er blandt A'erne eller • A'erne og B'erne tilsammen udgør alle attributterne i relationen • 4NF • hvis A1A2…An→ → B1B2…Bk så skal A1A2…An være en supernøgle • Hvis en relation ikke overholder 4NF,så må den opdeles i flere mindre relationer, der hver især overholder 4NF. • Eksempel • name → → street, city • name → → title, year • Opdeles i {name, street, city} og {name, title, year} • Begge afhængigheder er nu trivielle (jf. ii.) 3. Funktionelle afhængigheder og normalisering
Afsluttende kommentarer, 124 • Højere normalform = højere kvalitetskrav • Færre relationer opfylder den høje normalform end den lave • Med en instans af en database kan man • ikke påvise funk. afhængigheder • måske afvise funk. afhængigheder • Funk. afhængigheder må man efterspørge i den modellerede verden. 3. Funktionelle afhængigheder og normalisering