Abhängigkeiten und Abhängigkeiten als Ursachen für Inkonsistenzen Der sprozess Normalformen (1NF, 2NF, 3NF) Seite 1 Abhängigkeiten Funktionale Abhängigkeit Ein Attribut bzw. eine Attributkombination A ist funktional abhängig von einem Attribut bzw. einer Attributkombination B desselben Entity-Typs E, wenn zu einem bestimmten Wert von A höchstens ein Wert von B möglich ist. Schreibweise: E.A E.B Beispiel: Beim Entity-Typ ist das Attribut Name funktional abhängig von PersonalNummer PNr (PNr, Name, AbtNr, AbtName, ProjNr, PName, MitarbProjZeit) also: PNr Name (zur PNr gibt es genau einen Namen) Seite 2
Abhängigkeiten Funktionale Abhängigkeit Ein Identifikationsschlüssel ist ein Attribut oder eine Attributkombination, so dass gilt: Jedes Attribut in einem Entity-Typ ist von dessen Identifikationsschlüssel funktional abhängig und kein Attribut aus dem Identifikationsschlüssel ist von dessen übrigen Attributen funktional abhängig Seite 3 Abhängigkeiten Volle funktionale Abhängigkeit Seien A ein zusammengesetzter Identifikationsschlüssel und B ein Attribut oder eine Attributkombination des gleichen Entity-Typs E B ist genau dann von A voll funktional abhängig, wenn B von der Attributkombination A funktional abhängig ist, aber nicht bereits von Teilen von A Schreibweise: E.A E.B Seite 4
Abhängigkeiten Volle funktionale Abhängigkeit Beispiel: In ist das Attribut MitarbProjZeit voll funktional abhängig von der Attributkombination (PNr, ProjNr) (PNr, Name, AbtNr, AbtName, ProjNr, PName, MitarbProjZeit) also: PNr, ProjNr MitarbProjZeit (die Arbeitszeit des s in einem Projekt ist von der Kombination PNr, ProjNr abhängig, nicht aber von PNr oder ProjNr allein) Seite 5 Abhängigkeiten Transitive Abhängigkeit A sei der Identifikationsschlüssel eines Entity-Typs E B und C seien zwei weitere Attribute (Attributkombinationen) von E derart, dass die drei Attribute (Attributkombinationen) voneinander verschieden (disjunkt) sind. C ist transitiv abhängig von A, falls jederzeit gilt: E.A E.B E.B E.A E.B E.C transitiv abhängig = abhängig auch über schlüsselfremden Umweg Schreibweise: E.A E.C Seite 6
Abhängigkeiten Transitive Abhängigkeit Beispiel: Im Entity-Typ ist AbtName von PNr transitiv abhängig, da AbtNr funktional von PNr und AbtName funktional von AbtNr abhängen, während PNr nicht funktional von AbtNr abhängt (PNr, Name, AbtNr, AbtName, ProjNr, PName, MitarbProjZeit) also: PNr AbtName weil PNr AbtNr AbtNr PNr AbtNr AbtName (einer PNr ist genau eine AbtNr zugeordnet, einer AbtNr genau ein AbtName, so dass auch der AbtName über die AbtNr der PNr zugeordnet ist) Seite 7 sprozess Beim sprozess werden mit Hilfe der definierten Abhängigkeiten die inneren Zusammenhänge in einem Entity- Typ analysiert, um Redundanzen zu eliminieren und Modifikationsanomalien zu vermeiden Redundanzen entstehen dadurch, dass identische Attribute in mehreren Entity-Typen aufgeführt sind; sie können ohne Informationsverlust weggelassen werden Modifikationsanomalien entstehen dadurch, dass bei Datenmodifikationen (einfügen, ändern, löschen) redundant gespeicherte Daten nicht gleichzeitig aktualisiert werden kann auf der konzeptionellen (ER-Modell) oder auf der logischen Ebene (Tabellenstruktur) durchgeführt werden Seite 8
1. Normalform (1NF) Ein Entity-Typ befindet sich in der 1. Normalform, wenn alle seine Attribute nur einfache Attributwerte aufweisen. Beispiel: Die Attribute ProjNr, PName und MitarbProjZeit enthalten mehrere Attributwerte; es liegt keine 1NF vor PNr Name AbtNr AbtName ProjNr PName MitarbProjZeit 101 Becker 1 Physik 11,12 A,B 60,40 102 Heinrich 2 Chemie 13 C 100 103 Dittrich 2 Chemie 11,12,13 A,B,C 20,50,30 104 Nowak 1 Physik 12,13 A,C 80,20 Seite 9 1. Normalform (1NF) Umwandlung in die 1NF: PNr Name AbtNr AbtName ProjNr PName MitarbProjZeit 101 Becker 1 Physik 11 A 60 101 Becker 1 Physik 12 B 40 102 Heinrich 2 Chemie 13 C 100 103 Dittrich 2 Chemie 11 A 20 103 Dittrich 2 Chemie 12 B 50 103 Dittrich 2 Chemie 13 C 30 104 Nowak 1 Physik 12 A 80 104 Nowak 1 Physik 13 C 20 Neuer Primärschlüssel notwendig: PNr/ProjNr Seite 10
2. Normalform (2NF) Ein Entity-Typ ist in der 2. Normalform, wenn er in der 1NF ist und jedes nicht zum Identifikationsschlüssel gehörige Attribut von diesem voll funktional abhängig ist Beispiel: Im angegebenen Beispiel sind die Attribute Name, AbtNr, AbtName und PName nicht voll funktional abhängig vom Schlüsselattribut (PNr, ProjNr), sondern von Teilen des Schlüssels Aufspaltung in zwei neue Entity-Typen (, Projekt) und einen Beziehungstyp (Mitarbeit) führt zur 2NF Seite 11 2. Normalform (2NF) PNr Name AbtNr AbtName 101 Becker 1 Physik 102 Heinrich 2 Chemie 103 Dittrich 2 Chemie 104 Nowak 1 Physik Projekt ProjNr PName 11 A 12 B 13 C Mitarbeit PNr ProjNr MitarbProjZeit 101 11 60 101 12 40 102 13 100 103 11 20 103 12 50 103 13 30 104 12 80 104 13 20 Noch immer problematisch (), obwohl in 2NF; noch Redundanzen vorhanden Seite 12
3. Normalform (3NF) Ein Entity-Typ befindet sich in der 3. Normalform, wenn er in der 2NF ist und kein Attribut, das nicht zum Identifikationsschlüssel gehört, von diesem transitiv abhängt. Beispiel: Im angegebenen Beispiel sind AbtName bzw. AbtNr transitiv abhängig von PNr über AbtNr bzw. AbtName. Aufspaltung in die Entity-Typen und Abteilung und die Beziehung tätig_in erzeugt die 3NF Seite 13 3. Normalform (3NF) PNr Name AbtNr 101 Becker 1 102 Heinrich 2 103 Dittrich 2 104 Nowak 1 Abteilung AbtNr AbtName 1 Physik 2 Chemie Seite 14
Abteilung AbtNr AbtName 1 Physik 2 Chemie PNr Name AbtNr 101 Becker 1 102 Heinrich 2 103 Dittrich 2 104 Nowak 1 Projekt ProjNr PName 11 A 12 B 13 C Ergebnis Abteilung Projekt hat gehört zu tätig in hat tätig_in PNr ProjNr MitarbProjZeit 101 11 60 101 12 40 102 13 100 103 11 20 103 12 50 103 13 30 104 12 80 104 13 20 Seite 15