Übung Normalisierung 1
Transcription
Übung Normalisierung 1
Ü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 P# 101 102 103 104 P-Name Müller Meier Krause Schmidt Tabelle: PROJEKT Abt# 1 2 2 1 Tabelle: PERSONAL-PROJEKT P# 101 101 102 103 103 103 104 104 Pj# 11 12 13 11 12 13 11 13 Pj-Std 60 40 100 20 50 30 80 20 Abt-Name Motoren Karosserie Karosserie Motoren Pj# 11 12 13 Pj-Name A B C 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 P# 101 102 103 104 P-Name Müller Meier Krause Schmidt Tabelle: ABTEILUNG Abt# 1 2 Abt-Name Motoren Karosserie Abt# 1 2 2 1 Tabelle: PROJEKT Tabelle: PERSONAL-PROJEKT Pj# 11 12 13 P# 101 101 102 103 103 103 104 104 Pj-Name A B C Pj# 11 12 13 11 12 13 11 13 Pj-Std 60 40 100 20 50 30 80 20 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 A1 Fritz 2.1.1950 OD A2 Tom 2.3.1951 KO A3 Werner 23.4.1948 OD A4 Gerd 3.11.1950 VT A5 Emil 2.3.1960 PA A6 Uwe 3.4.1952 RZ A7 Eva 17.11.1955 KO A8 Rita 02.12.1957 KO A9 Ute 08.09.1962 OD A10 Willi 7.7.1956 KO A11 Erna 13.10.1966 OD A12 Anton 5.7.1948 OD A13 Josef 2.8.1952 KO A14 Maria 17.09.1964 PA JOB_ID SY IN PR KA PR OP TA TA SY IN KA SY SY KA 2. Übung: Normalisierung Lösung2/2 • • Tabelle: JOB JOB_ID TITEL KA Kaufm. Angestellter TA Techn. Angestellter SY Systemplaner PR Programmierer OP Operateur 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 GEHALT 1.500 € 1.500€ 3.000€ 2.500€ 2.000€ 3. Übung: Normalisierung • Lösen sie die folgende Tabelle gemäss der 1. Normalform auf: Familie Meier Mutter Theres Vater Paul Gantenbein Noemi George Kinder Erich Anja Roman Lydia Erich Mariane 3. Übung: Normalisierung Lösung • Tabelle: Familie Familie Meier Gantenbein Mutter Theres Noemi Tabelle: Kinder Familie Meier Meier Meier Meier Gantenbein Gantenbein Kinder Erich Anja Roman Lydia Erich Marianne Vater Erich George 4. Übung: Normalisierung • Lösen sie die folgende Tabelle gemäss der 1. Normalform auf: CD_ID 4811 Album Anastacia 4212 Pink Floyd – Wish You Where Here Titelliste Not That Kind; I`m Outta Love; Cowboys & Kisses 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 4811 Not That kind 4811 Not That kind 4811 Not That kind 4712 Wish You Where Here Interpret Anastacia Anastacia Anastacia Pink Floyd Titel Not That Kind I`m Outta Love Cowboys & Kisses 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 4811 4811 4811 4712 Album Not That Kind Not That Kind Not That Kind Wish You Were Here Interpret Anastacia Anastacia Anastacia Pink Floyd Track 1 2 3 1 Titel Not That Kind I`m Outta Love Cowboys & Kisses 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 4811 4811 4811 4712 • Album That Kind Not That Kind Not That Kind Wish You Were Here Interpret Anastacia Anastacia Anastacia Pink Floyd Track 1 2 3 1 Titel Not That Kind I`m Outta Love Cowboys & Kisses 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 4811 4712 Album Interpret Not That Kind Anastacia Wish You Where here Pink Floyd Tabelle: LIEDER CD_ID 4811 4811 4811 4712 Track 1 2 3 1 Titel Not that Kind I`m Outta Love Cowboys & Kisses 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 4811 4713 4712 Album Not That Kind Freak of Nature Wish You Where here Interpret Anastacia Anastacia Pink Floyd Gründungsjahr 1999 1999 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 4811 4713 4712 Album Not That Kind Freak of Nature Wish You Where Here Tabelle: CD/Künstler CD_ID I_ID 4811 2423 4713 2423 4712 3433 • • Tabelle: BANDINFOS I_ID Interpret Gründungsjahr 2423 Anastacia 1999 3433 Pink Floyd 1965 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.