Übungen Teil 1: Normalisierung Dozent: Stefan Maihack Dipl. Ing. (FH)
1. Übung: Normalisierung Eine Tabelle zur Verwaltung von Personalinformationen soll bis in die 3. Normalform überführt werden. Angelegt wurde eine naive Tabelle PERSONAL-PROJEKT. Mitarbeiterinnen und Mitarbeiter können an mehreren Projekten beteiligt sein. Es wird jeweils notiert, wie viele Stunden sie in einem Projekt geleistet haben. P# P_Name Abt# Abt-Name Pj# Pj-Name Pj-Std 101 Müller 1 Motoren 11, 12 A, B 60, 40 102 Meier 2 Karosserie 13 C 100 103 Krause 2 Karosserie 11, 12, 13 A, B, C 20, 50, 30 104 Schmidt 1 Motoren 11, 13 A, C 80, 20
1. Übung: Normalisierung Lösung: 1NF Eine Tabelle liegt in der ersten Normalform vor, wenn jeder Attributwert eine atomare, nicht weiter zerlegbare Dateneinheit ist. Alternativ: Eine Tabelle ist nicht in der 1NF, wenn Attribute mehrfach komplex in einer Spalte auftreten; d.h. 1NF ist eine Strukturierungsvorschrift. Rezept: Auslagern der nicht atomaren Attribute in verschiedene Zeilen oder Spalten oder eine eigene Tabelle. P# P_Name Abt# Abt-Name Pj# Pj-Name Pj-Std 101 Müller 1 Motoren 11 A 60 101 Müller 1 Motoren 12 B 40 102 Meier 2 Karosserie 13 C 100 103 Krause 2 Karosserie 11 A 20 103 Krause 2 Karosserie 12 B 50 103 Krause 2 Karosserie 13 C 30 104 Schmidt 1 Motoren 11 A 80 104 Schmidt 1 Motoren 13 C 20
1. Übung: Normalisierung Lösung: 2NF Eine Tabelle liegt in der zweiten Normalform vor, wenn sie in der ersten Normalform ist und jedes Nichtschlüsselattribut voll funktional abhängig vom Primärschlüssel ist. Alternativ: Eine Tabelle ist nicht in der 2 NF, wenn Attribute von einem Teil des Schlüssels eindeutig identifiziert werden. Voraussetzung ist die 1NF. Rezept: Auslagern von Teilschlüsseln und zugehörigen Informationen in eigene Tabelle nach Sachgebieten; bzw. separaten Entitätstypen mit eigenem Schlüssel finden. Beim Auslagern durch entsprechende Beziehungen darauf achten, dass Informationen nicht verloren gehen. Tabelle: PERSONAL Tabelle: PROJEKT P# P-Name Abt# Abt-Name Pj# Pj-Name 101 Müller 1 Motoren 11 A 102 Meier 2 Karosserie 12 B 103 Krause 2 Karosserie 13 C 104 Schmidt 1 Motoren Tabelle: PERSONAL-PROJEKT P# Pj# Pj-Std 101 11 60 101 12 40 102 13 100 103 11 20 103 12 50 103 13 30 104 11 80 104 13 20
1. Übung: Normalisierung Lösung: 3NF Eine Tabelle liegt in der 3NF vor, wenn sie sich in der 2NF befindet und jedes Nichtschlüsselattribut nicht transitiv abhängig vom Primärschlüssel ist. Alternativ: Eine Tabelle ist nicht in der 3NF, wenn Attribute von anderen NICHT-Schlüsselattributen identifiziert werden. Voraussetzung ist außerdem die 2NF. Rezept: Auslagern der transitiv abhängigen Attribute in eigene Tabellen. Tabelle: PERSONAL Tabelle: PROJEKT Tabelle: PERSONAL-PROJEKT P# P-Name Abt# Pj# Pj-Name P# Pj# Pj-Std 101 Müller 1 11 A 101 11 60 102 Meier 2 12 B 101 12 40 103 Krause 2 13 C 102 13 100 104 Schmidt 1 103 11 20 103 12 50 103 13 30 104 11 80 104 13 20 Tabelle: ABTEILUNG Abt# Abt-Name 1 Motoren 2 Karosserie
2. Übung: Normalisierung In der vorliegende Zusammenfassung der Daten zum Personalwesen zeigt die angegebenen Tabelle in der Spalte QUALI eine Wiederholungsgruppe an. Diese Verschachtelung ist ohne Informationsverlust zu beseitigen. Außerdem ist die Ausübung des Berufs nicht ohne eine entsprechende Qualifikation möglich. Der eindeutige Schlüssel wird aus den Attributen ANG_ID und QUALI gebildet. ANG_ID NAME GEBJAHR ABT_ID JOB_ID QUALI A1 Fritz 2.1.1950 OD SY SY A1 Fritz 2.1.1950 OD SY PR A1 Fritz 2.1.1950 OD SY OP A2 Tom 2.3.1951 KO IN IN A2 Tom 2.3.1951 KO IN SY A3 Werner 23.4.1948 OD PR PR A4 Gerd 3.11.1950 VT KA KA A5 Emil 2.3.1960 PA PR PR A6 Uwe 3.4.1952 RZ OP OP A7 Eva 17.11.1955 KO TA TA A8 Rita 02.12.1957 KO TA TA A9 Ute 08.09.1962 OD SY SY A10 Willi 7.7.1956 KO IN IN A11 erna 13.10.1966 OD KA KA A12 Anton 5.7.1948 OD SY SY A13 Josef 2.8.1952 KO SY SY A14 Maria 17.09.1964 PA KA KA Beseitigen sie die funktionalen Abhängigkeiten der vorliegenden Tabelle. Alle Attribute mit Ausnahme von QUALI sind von einem Schlüsselteil (ANG_ID) funktional determiniert und sollten deshalb in eine eigene Tabelle aufgenommen werden.
2. Übung: Normalisierung Lösung1/2 Tabelle: Abteilung ABT_ID BEZEICHNUNG KO Konstruktion OD Organisation und Datenverarbeitung PA Personalabteilung RZ Rechenzentrum VT Vertrieb Tabelle: ANGESTELLTE ANG_ID NAME GEBJAHR ABT_ID JOB_ID A1 Fritz 2.1.1950 OD SY A2 Tom 2.3.1951 KO IN A3 Werner 23.4.1948 OD PR A4 Gerd 3.11.1950 VT KA A5 Emil 2.3.1960 PA PR A6 Uwe 3.4.1952 RZ OP A7 Eva 17.11.1955 KO TA A8 Rita 02.12.1957 KO TA A9 Ute 08.09.1962 OD SY A10 Willi 7.7.1956 KO IN A11 Erna 13.10.1966 OD KA A12 Anton 5.7.1948 OD SY A13 Josef 2.8.1952 KO SY A14 Maria 17.09.1964 PA KA
2. Übung: Normalisierung Lösung2/2 Tabelle: JOB JOB_ID TITEL GEHALT KA Kaufm. Angestellter 1.500 TA Techn. Angestellter 1.500 SY Systemplaner 3.000 PR Programmierer 2.500 OP Operateur 2.000 Tabelle: QUALIFIKATION ANG_ID JOB_ID A1 SY A1 PR A1 OP A2 IN A2 SY A3 PR A4 KA A5 PR A6 OP A7 TA A8 IN A9 SY A10 IN A11 KA A12 SY A13 IN A14 KA
3. Übung: Normalisierung Lösen sie die folgende Tabelle gemäss der 1. Normalform auf: Familie Mutter Vater Kinder Meier Theres Paul Erich Anja Roman Lydia Gantenbein Noemi George Erich Mariane
3. Übung: Normalisierung Lösung Tabelle: Familie Familie Mutter Vater Meier Theres Erich Gantenbein Noemi George Tabelle: Kinder Familie Meier Meier Meier Meier Gantenbein Gantenbein Kinder Erich Anja Roman Lydia Erich Marianne
4. Übung: Normalisierung Lösen sie die folgende Tabelle gemäss der 1. Normalform auf: CD_ID Album Titelliste 4811 Anastacia Not That Kind; I`m Outta Love; Cowboys & Kisses 4212 Pink Floyd Wish You Where Here Shine On You Crazy Diamond
4. Übung: Normalisierung Lösung 1NF Verletzung der 1NF: Das Feld Album beinhaltet die Attributwertebereiche Titel und Interpret Das Feld Titelliste enthält eine Menge von Titeln CD_ID Albumtitel Interpret Titel 4811 Not That kind Anastacia Not That Kind 4811 Not That kind Anastacia I`m Outta Love 4811 Not That kind Anastacia Cowboys & Kisses 4712 Wish You Where Here Pink Floyd Shine On You Crazy Diamond Das Feld Album wird in Felder Albumtitel und Interpret gespalten. Das Feld Titelliste wird auf mehrere Datensätze aufgeteilt.
4. Übung: Normalisierung Lösung 2NF Eine Relation ist genau dann in der 2NF wenn gilt: Sie ist in der 1NF. Für jeden Schlüsselkandidaten (Key Candidate, KC) und jedes Attribut a der Relation gilt: * a gehört zu KC oder * a ist nicht von einer Teilmenge von KC abhängig. Mann sagt: a ist voll funktional abhängig von jedem Schlüsselkandidaten. (Wobei der Schlüsselkandidat KC auch durch die Kombination mehrer Attribute gebildet wwerden kann). CD_ID Album Interpret Track Titel 4811 Not That Kind Anastacia 1 Not That Kind 4811 Not That Kind Anastacia 2 I`m Outta Love 4811 Not That Kind Anastacia 3 Cowboys & Kisses 4712 Wish You Were Here Pink Floyd 1 Shine On You Crazy Diamond Der Primärschlüssel der Relationen ist aus den Feldern CD_ID und Track zusammengesetzt. Der Felder Album und Interpret sind zwar vom Feld CD_ID abhängig nicht aber vom Feld Track.
4. Übung: Normalisierung Lösung 2NF Probleme die sich daraus ergeben: Die Informationen aus diesen beiden Feldern sind, wie am Beispiel der CD Not That Kind zu erkennen. Mehrfach vorhanden d.h. redundant. Dadurch gibt es die Gefahr, dass die Integration der Daten verletzt wird. So könnte man den Namen der CD für das Lied That Kind ändern ohne jedoch die passenden Einträge bei den Liedern I`m Outta Love und Cowboys & Kisses zu ändern (Update-Anomalie). CD_ID Album Interpret Track Titel 4811 That Kind Anastacia 1 Not That Kind 4811 Not That Kind Anastacia 2 I`m Outta Love 4811 Not That Kind Anastacia 3 Cowboys & Kisses 4712 Wish You Were Here Pink Floyd 1 Shine On You Crazy Diamond In diesem Fall ist ein Zustand erreich, den man als Dateninkonsistenz bezeichnet. Über die komplette Tabelle betrachtet, passen die Daten nicht mehr zusammen.
4. Übung: Normalisierung Lösung 2NF Lösung: Die Daten in der Tabelle werden in zwei Tabellen aufgeteilt: CD und Lieder. Tabelle: CD CD_ID Album Interpret 4811 Not That Kind Anastacia 4712 Wish You Where here Pink Floyd Tabelle: LIEDER CD_ID Track Titel 4811 1 Not that Kind 4811 2 I`m Outta Love 4811 3 Cowboys & Kisses 4712 1 Shine On You Crazy Diamond Das Feld CD_ID aus der Tabelle LIEDER bezeichnet man als Fremdschlüssel, der auf den Primärschlüssel der Tabelle CD verweist.
4. Übung: Normalisierung Lösung 3NF Beispiel: CD_ID Album Interpret Gründungsjahr 4811 Not That Kind Anastacia 1999 4713 Freak of Nature Anastacia 1999 4712 Wish You Where here Pink Floyd 1965 Verletzung der 3. Normalform: Offensichtlich lässt sich der Interpret einer CD aus der CD_ID bestimmen, das Gründungsjahr der Band hängt dagegen vom Interpreten und damit nur transitiv von der CD_ID ab. Das Problem ist hierbei wieder Datenredundanz. Wird zum Beispiel eine neue CD mit einem existierenden Interpreten eingeführt, so wird das Gründungsjahr zweimal abgespeichert.
4. Übung: Normalisierung Lösung 3NF Lösung: Tabelle: CD CD_ID Album 4811 Not That Kind 4713 Freak of Nature 4712 Wish You Where Here Tabelle: CD/Künstler Tabelle: BANDINFOS CD_ID I_ID I_ID Interpret Gründungsjahr 4811 2423 2423 Anastacia 1999 4713 2423 3433 Pink Floyd 1965 4712 3433 Die Relation wird aufgeteilt, wobei eine Zwischentabelle gebildet wird. Grund: Eine CD kann mehrere Künstler haben und ein Künstler kann mehrere CD s machen. Es werden Redundanzen erzeugt, wenn man keine Zwischentabelle macht, den sobald eine CD auf den Markt kommt, die mehrere Künstler in sich birgt, taucht die gleiche CD_ID (Primary Key) mehrmals auf. Bei der Zwischentabelle ist dies zwar auch der Fall, aber die Datensätze insgesamt sind eindeutig, da beide Attribute identifizierende Fremdschlüssel sind.