dinozero Geschrieben 9. Juni 2020 Teilen Geschrieben 9. Juni 2020 (bearbeitet) Hallo Zusammen, in der Winterprüfung 2019 für den Anwendungsentwickler gab es eine Aufgabe zur Normalisierung. Ich Finde jedoch einfach die Lösung für die 3NF nicht. Ich sehe keinen Unterschied zwischen der 2NF und der 3NF für diese Tabelle: BikeID BikeType MaintanenceDate MaintanenceID MaintainenceType Time EmployeeID EmployeeName E5 E-Bike 400 10/17/2019 12, 09, 05 Breaks, Clutch, Akku 30, 12, 15 123, 345, 512 Klaus Müller, Beatrice Richter, Kurt Helming C2 Citybike 28 10/20/2019 03, 12 Pedals, Breaks, 25, 10 345, 123 Beatrice Richter, Klaus Müller E5 E-Bike 400 11/15/2019 9 Clutch 15 123 Klaus Müller 1NF: BikeID BikeType MaintanenceDate MaintanenceID MaintainenceType Time EmployeeID EmployeeName EmployeeFirstname E5 E-Bike 400 10/17/2019 12 Breaks 30 123 Müller Klaus E5 E-Bike 400 10/17/2019 9 Clutch 12 345 Richter Beatrice E5 E-Bike 400 10/17/2019 5 Akku 15 512 Helming Kurt C2 Citybike 28 10/20/2019 3 Pedals 25 345 Richter Beatrice C2 Citybike 28 10/20/2019 12 Breaks 10 123 Müller Klaus E5 E-Bike 400 11/15/2019 9 Clutch 15 123 Müller Klaus 2NF: BikeID BikeType E5 E-Bike 400 C2 Citybike 28 EmployeeID EmployeeName EmployeeFirstname 123 Müller Klaus 345 Richter Beatrice 512 Helming Kurt MaintanenceID MaintainenceType 3 Pedals 5 Akku 9 Clutch 12 Breaks BikeID EmployeeID MaintanenceID MaintanenceDate Time E5 123 12 10/17/2019 30 E5 345 9 10/17/2019 12 E5 512 5 10/17/2019 15 C2 345 3 10/20/2019 25 C2 123 12 10/20/2019 10 E5 123 9 11/15/2019 15 Wie würde denn jetzt die 3NF aussehen? Habe ich vlt. schon einen Fehler bei der 1NF oder 2NF gemacht? Bearbeitet 9. Juni 2020 von dinozero Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 Du hast in deiner Umformung in die 1NF schon einen Schritt zu viel gemacht, sodass deine 1NF schon die 2NF ist. Die 1NF besagt nämlich nur, dass jede Information in der Tabelle eine Spalte bekommt. Du hast aber die Namen der Mitarbeiter schon atomar aufgeteilt. Das wäre der Schritt für die 2NF. Die 1NF sähe eigentlich so aus: 1NF: BikeID BikeType MaintanenceDate MaintanenceID MaintainenceType Time EmployeeID Employee E5 E-Bike 400 10/17/2019 12 Breaks 30 123 Klaus Müller E5 E-Bike 400 10/17/2019 9 Clutch 12 345 Beatrice Richter E5 E-Bike 400 10/17/2019 5 Akku 15 512 Kurt Helming C2 Citybike 28 10/20/2019 3 Pedals 25 345 Beatrice Richter C2 Citybike 28 10/20/2019 12 Breaks 10 123 Klaus Müller E5 E-Bike 400 11/15/2019 9 Clutch 15 123 Klaus Müller Der nächste Schritt, um in die 2NF zu gelangen, wäre Employee in FirstName und LastName aufzuteilen. 2NF: BikeID BikeType MaintanenceDate MaintanenceID MaintainenceType Time EmployeeID EmployeeFirstName EmployeeLastName E5 E-Bike 400 10/17/2019 12 Breaks 30 123 Klaus Müller E5 E-Bike 400 10/17/2019 9 Clutch 12 345 Beatrice Richter E5 E-Bike 400 10/17/2019 5 Akku 15 512 Kurt Helming C2 Citybike 28 10/20/2019 3 Pedals 25 345 Beatrice Richter C2 Citybike 28 10/20/2019 12 Breaks 10 123 Klaus Müller E5 E-Bike 400 11/15/2019 9 Clutch 15 123 Klaus Müller Um nun in die 3NF zu kommen, müssen die Informationen in Tabellen aufgeteilt werden, den du schon richtig gemacht hast. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
badPractice Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 (bearbeitet) Das kann doch nicht richtig sein, wenn man die Definition für die zweite Normalform ansieht: Ein Relationstyp (Tabelle) befindet sich genau dann in der zweiten Normalform (2NF), wenn er sich in der ersten Normalform (1NF) befindet und jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist. Demnach würde ich sagen, dass in der 2. Normalform z.B. EmployeeFirstName und Time auf keinen Fall in der gleichen Tabelle stehen können. Hab das Problem auch jedes Mal mit zweiter Normalform, 3. ist easy und intuitiv aber zweite... Bearbeitet 10. Juni 2020 von badPractice spelling Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
badPractice Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 Also wenn das mal jemand richtig erklären könnte, wäre echt toll! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast paranoiwarum? Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 (bearbeitet) Also leider ist die Antwort von @Whiz-zarD nicht ganz korrekt. In der 1.NF teilst du den Employee bereits in Vor- und Nachname auf, also atomatisierst die Werte. In der 2.NF tust du dann die Tabelle aufteilen in Bike, Maintenance und MaintenanceType. Erst in der 3.NF spaltest du Employee von Maintenance ab. Employee hat nämlich Attribute (Vor- und Nachname) die nicht direkt von BikeID, MaintenanceDate und MaintenanceTypeID (Zusammengesetzter Primary Key) abhängig sind, sondern nur von EmployeeID. Also ab in eigene Tabelle. Mit anderen Worten war dein Problem einfach nur dass du die transitive Abhängigkeit bereits in der 2.NF behoben hast statt wie vorrausgesetzt in der 3. Bearbeitet 10. Juni 2020 von paranoiwarum? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 Stimmt, da hab ich irgendwas durcheinander gebracht. Sorry. thereisnospace reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast paranoiwarum? Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 @Whiz-zarD Alles gut, vor 6 Stunden war es auch noch ziemlich früh morgens Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
badPractice Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 (bearbeitet) Wenn in der 2.Normalform Bike und MaintenanceType rausgezogen werden, warum dann nicht Employee? Bearbeitet 10. Juni 2020 von badPractice Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.