Wir betrachten "F" als menge von FDs die auf dem Relationsschema R definiert sind
Normalerweise werden die FDs aufgestellt, die semantisch "offensichtlich" sind
Allerdings gibt es auch sachen die von den FDs inferred werden können
"F" enthält alle legalen relationen auf der R, dementsprechend können wir schauen, wenn irgendetwas da rein passt / da drin ist, dass es dann dazugehört
Interferiert werden die dinge mit den sog. Armstrong Axiomen (yay)
Setzen sicherheit, integrität und simplicity vorraus, und verhindern komplexe strukturen
jede DB der 1NF limitiert sich auf simple, atomic werte, wo jedes attribut einnerhalt eines Tupels ist, wodurch die komplexität von verschachtelten relationen eliminiert wird
Eine 2NF ist eine 1NF auf der alle nicht-key elemente funktional von dem primary key abhängig sind, dementsprechend gibt es keine partiellen dependencies
2NF baut auf dem prinzip der "vollständigen abhängigkeit"
Full Functional Dependency: Jedes Attribut Y ist vollständig funktional abhängig von einer menge von attributen namens X, wenn die abhängigkeit abbricht, wenn ein attribut von x entfernt wird.
Also: Y ist von allen X gemeinsam abhängig
Partial Dependency: Passiert, wenn ein attribut Y immernoch auf einem subset von X abhängig ist, was zeigt, dass nicht alle elemente von X für diese Relation benlötigt wird
2NF ist sehr wichtig, wenn man verdopplungen verringern will, und daten nur dann ordentlich abzuspeichern, wenn sie von einem vollständigen primary key abhängig sind
Eine Relation ist in 3NF, wenn sie schon 2NF ist, und kein nichtprimäres Attribut eine transitive abhängigkeit zu dem Primarykey hat
Eine Transitive Dependency ist eine funktionale Abhängigkeit X→Y ist genau dann transitiv, wenn es eine mittelmenge Z gibt, sodass X→Z und Z→Y gilt, und Z nicht teil eines Kandidatenschlüssel ist
Achieving 3NF enhances database design by ensuring each non-key attribute is directly related to the primary key, eliminating indirect dependencies that can cause data anomalies
Eine Relaiton ist genau dann BCNF, wenn es in 1NF ist und jede nicht-triviale funktionale dependency X→A X ein superkey von R ist
Anders als 3NF, erlaubt BCNF keine nicht-superkey funktionalen dependencies, wo die rechte hand primäre attribute sind. Die absence macht BCNF strikter