Es gibt einen Unterschied zwischen EAV, der treu oder schlecht gemacht wird; 5NF von erfahrenen Leuten oder von denen, die keine Ahnung haben.
Sechste Normalform ist die nicht reduzierbare Normalform (keine weitere Normalisierung ist möglich). Es beseitigt viele der Probleme, die häufig auftreten, z. B. das Nullproblem, und bietet die ultimative Methode zum Identifizieren fehlender Werte. Es ist die wissenschaftlich und technisch robuste NF. Es gibt keine Produkte, die dies unterstützen, und es wird nicht häufig verwendet. Um korrekt und konsistent implementiert zu werden, muss ein Katalog für Metadaten implementiert werden. Natürlich wird das SQL, das für die Navigation benötigt wird, noch umständlicher (SQL ist bereits mühselig), aber dies lässt sich leicht umgehen, indem die Produktion von SQL aus den Metadaten automatisiert wird.
EAV ist ein Teilsatz oder eine Teilmenge von 6NF. Das Problem besteht in der Regel in einem bestimmten Zweck (damit Spalten hinzugefügt werden können, ohne DDL-Änderungen vornehmen zu müssen) und in Personen, die die 6NF nicht kennen und keine Metadaten implementieren. Der Punkt ist, 6NF und EAV als Prinzipien und Konzepte bieten erhebliche Vorteile, und die Leistung steigt; aber normalerweise wird es nicht richtig implementiert, und die Vorteile werden nicht realisiert. Einige EAV-Implementierungen sind Katastrophen, nicht weil EAV schlecht ist, sondern weil die Implementierung schlecht ist.
Eg. Einige Leute denken, dass das SQL, das benötigt wird, um die 3NF-Zeilen aus der 6NF/EAV-Datenbank zu konstruieren, komplex ist: Nein, es ist umständlich, aber nicht komplex. Noch wichtiger ist, dass eine gewöhnliche SQL VIEW bereitgestellt werden kann, so dass alle Benutzer und Berichttools nur die direkte 3NF VIEW sehen und die 6NF/EAV Probleme für sie transparent sind. Zuletzt kann das benötigte SQL automatisiert werden, so dass die Arbeitskosten, die viele Menschen ertragen müssen, nicht notwendig sind.
So ist die Antwort wirklich, Sixth Normal Form, der Vater von EAV, und eine reinere Form, ist der Ersatz dafür. Der Vorbehalt ist, stellen Sie sicher, dass es richtig gemacht wird. Ich habe eine große 6NF db, und es leidet keine der Probleme, über die Leute Post, es funktioniert sehr gut, der Kunde ist sehr glücklich (keine weitere Arbeit ist ein Zeichen der vollständigen Funktionszufriedenheit).
Ich habe gepostet bereits eine sehr ausführliche Antwort auf eine andere Frage, die auch auf Ihre Frage gilt, die Sie interessieren könnten.
Other EAV Question
Anstatt zu ersetzen, was Sie haben, da es einen bestimmten Bedarf erfüllt, sollten Sie Ihr grundlegendes EAV-Modell mit etwas erweitern, das die Änderungen im Laufe der Zeit speichert. – RibaldEddie
Ich stimme RibaldEddie zu, es wird nicht einfach sein, aber das Hinzufügen eines Datums/einer Version zu Ihren Attributdefinitionen ist wahrscheinlich einfacher als das vollständige Refactoring des gesamten Codes, der auf dem aktuellen Schema aufgebaut ist. – JeremyWeir
Gibt es eine Chance, damit Schluss zu machen? Entweder Kommentare und Fortschritte oder Abstimmung und Auswahl der Antwort. Vielen Dank. – PerformanceDBA