Ich habe kürzlich etwas über Normalisierung gelernt und verstehe, wie wichtig es ist, ein neues Schema zu implementieren.
Wie kann ich überprüfen, ob meine Datenbank 2NF- oder 3NF-kompatibel ist?
Manuelle Überprüfung ist eine sichere Option, aber ich suche hier ein automatisiertes Tool.
Ich bin nicht auf der Suche nach einem Point-and-Click-Tool, das mögliche Optimierungen hervorhebt, um eine Tabelle 3NF-kompatibel zu machen. Ich vermute, es könnten Statistiken verwendet werden, die auf guten Beispieldaten und / oder einer semantischen Analyse der Spaltennamen basieren.
Antworten:
Normalisierung wird absolut in der realen Welt verwendet ... und hoffentlich wissen Sie, dass 3NF nur die dritte von ... was ist jetzt, 8? Aber 3NF sollte ein einfaches Ziel sein.
Allerdings ... würde ich sagen, dass es so ein Tool nicht geben könnte.
Normalisierung ist technisch ein Attribut jeder Tabelle. Innerhalb einer bestimmten Datenbank können verschiedene Tabellen unterschiedliche Normalisierungsebenen aufweisen.
Jede Tabelle repräsentiert Fakten ... Fakten über Instanzen einer bestimmten Art von Sache (Person, Konto, Bestellung, Versand, Artikel, Ort), einschließlich manchmal Fremdschlüssel, die Sie zu anderen Arten von Fakten über diese Sache führen.
Die Normalisierung hat mit der Genauigkeit und Effizienz der Darstellung von Fakten in den Tabellen sowie mit der Fähigkeit des Tabellenentwurfs zu tun, mehrdeutige und redundante Datenmuster zu vermeiden.
Daher ist ein Verständnis der tatsächlichen Gegebenheiten erforderlich, das außerhalb des Anwendungsbereichs automatisierter Tools liegt.
In einer Welt, in der alle Ausbilder alle Fächer unterrichteten und jeder Schüler von jedem Ausbilder eine beliebige Kombination, jedoch nicht mehr als einen Kurs zu jedem Fach belegen konnte, könnte man sagen, dass diese Tabelle in 3NF vorliegt. In der Realität ist es absurd, 3NF für diesen Tisch zu beanspruchen.
Um zu verstehen, dass dies nicht in 3NF enthalten ist, muss man die Natur der Fakten verstehen, die es darstellt. In unserer Realität wird diese Tabelle nicht 3NF sein, da (unter anderem) das Fach und der Ausbilder auf eine Weise miteinander verbunden sind, die nichts mit dem Schüler zu tun hat. Wenn wir Kurse haben, in denen die Dozenten Fächer unterrichten, die an anderer Stelle in unserer Datenbank gespeichert sind, warum sollten wir dann beide Werte hier anstelle eines Fremdschlüssels aus der anderen Tabelle kopieren, der angibt, dass der Student für den Kurs angemeldet war? Wenn der Ausbilder ersetzt wird, müssen wir mehrere Datensätze an mehreren Stellen ändern.
Je normaler eine Datenbank ist, desto stärker stimmt sie mit der realen Welt und mit sich selbst überein, und desto schwieriger ist es, dass die Fakten der Datenbank versehentlich falsch sind. Datenbankdesign ist eine Kunst, aber definitiv auch eine Wissenschaft.
Auch wenn ich nicht alles, was er schreibt, auf Augenhöhe sehe, würde ich Chris Dates Buch " Database Design and Relational Theory: Normal Forms" und "All That Jazz" empfehlen, in dem die zugrunde liegende Theorie des relationalen Modells bis ins kleinste Detail erläutert wird.
quelle
Ein Teil des Einsatzes formaler Methoden bei der Entwicklung der relationalen Theorie bestand darin, Verfahren zu entwickeln, die automatisiert werden konnten. Ich bin mir ziemlich sicher, dass CJ Date das auch in seiner Einführung in Datenbanksysteme sagt .
Mehrere Ende der 1980er oder Anfang der 1990er Jahre veröffentlichte CASE-Tools könnten jedes mögliche 5NF-Schema entweder durch Analyse von ER-Diagrammen oder durch statistische Analyse von Probendaten ableiten.
Visio Enterprise Architect (glaube ich) ist in dieser Hinsicht ein relativ neues Tool.
quelle
Ich bezweifle sehr, dass Sie noch eine Antwort benötigen, aber falls Sie oder jemand anderes davon profitieren könnte, können Sie dieses Tool ausprobieren: http://uisacad5.uis.edu/cgi-bin/mcrem2/ database_design_tool.cgi
quelle
Ich denke, wenn Sie ein Tool dafür schreiben könnten, müsste es noch manuell überprüft werden, damit es funktioniert. Normalformen werden aufgrund funktionaler Abhängigkeiten definiert und können nicht durch bloße Einsichtnahme in die Daten bestimmt werden. Mit anderen Worten handelt es sich eher um eine induktive als um eine deduktive Logik, um festzustellen, ob eine funktionale Abhängigkeit vorliegt.
quelle