Wann wird die Normalisierung im Datenbankdesign angewendet?

7

Hallo Datenbankadministratoren. Vor kurzem habe ich über Normalisierung gelesen, um meine Fähigkeiten im Datenbankdesign zu verbessern. Ich bin jedoch etwas verwirrt darüber, wann ich diese Technik anwenden soll. Bevor ich etwas über Normalisierung lernte, las ich normalerweise das Szenario / die Beschreibung in den Anforderungen und erstellte ein ER-Diagramm (unter Verwendung der Chen-Notation), wobei Substantive als Entitäten und Verben als Hinweise auf ihre Beziehungen verwendet wurden, und führte dann direkt die zu erstellenden SQL-Anweisungen aus die Tische.

Im Moment scheint es mir, dass die Normalisierung durchgeführt wird, nachdem ein ER-Diagramm entworfen und dann auf jede Entität angewendet wurde, die ein mehrwertiges Attribut enthält.

Bin ich richtig darin zu denken? Oder soll ich vor dem Erstellen eines ER-Digramms eine Normalisierung durchführen, möglicherweise nachdem ich die möglichen Attribute eines Systems aufgelistet habe?

morris_wiemp
quelle

Antworten:

4

Gute Frage. Die Datenbanknormalisierung wird häufig als ein Prozess der Normalisierung durch Zerlegung gelehrt. Das heißt, Sie nehmen ein vorhandenes Schema und verbessern es, indem Sie nicht verlustbehaftete Zerlegungen anwenden, die aus dem alten Entwurf ein neues Schema erstellen. In der Praxis ist dies normalerweise nicht erforderlich.

Wenn Sie eine neue Tabelle oder einen Satz neuer Tabellen erstellen, ist Ihr Ausgangspunkt in der Regel eine Liste der Attribute, die Sie darstellen möchten. Sie sollten daher Abhängigkeiten zwischen den Attributen identifizieren und dann normalisierte Tabellen direkt basierend auf diesen Abhängigkeiten erstellen. Oft kann dies mental oder auf Papier erfolgen, bevor die Tabellen überhaupt zum eigentlichen Design hinzugefügt werden.

ER-Modellierung ist nicht unbedingt der beste Weg, um dies zu erreichen. Die Objektrollenmodellierung ist eine Möglichkeit, ein semantisches Modell zu erstellen, das mehr Aspekte der Datenmodellierung und Geschäftsregeln genau erfasst als die ER-Modellierung. Sie können Tools wie NORMA verwenden , um ein 5NF-Datenbankschema direkt aus einem ORM-Modell ohne bestimmte Normalisierungsschritte zu generieren.

nvogel
quelle
Dies mental zu schaffen, ist normalerweise eine erworbene Fähigkeit, ähnlich wie die Fähigkeit, eine Gleichung abzuleiten oder eine Gleichung in den Kopf zu integrieren, eine erworbene Fähigkeit ist. Zuerst muss man es auf lange Sicht machen, aber mit der Zeit und dem wiederholten Üben wird es einfacher, es im laufenden Betrieb zu machen.
Jcolebrand
4

Es hört sich so an, als hätten Sie es irgendwo in einem CS-Kurs oder ähnlichem gelernt (was IMO gut ist). Ich habe es auch in einigen Klassen gelernt und mir hat der Ansatz des Lehrers gefallen:

Kollegen von anderen Universitäten, Kursen, ... sagten mir, sie hätten große Artikel erhalten, die die Normalisierung auf sehr theoretische (daher ziemlich langweilige) Weise erklärten, und sie hätten keine Ahnung, wie sie dieses theoretische Wissen in ein ER-Diagramm übertragen könnten.

Andererseits verbringen wir viele Stunden damit, zu lernen, wie ER-Diagramme richtig entworfen werden, welche Ideen eine gute und wartbare Datenbank ausmachen, wie auftretende Probleme im Diagramm sowie in der Datenbank (mit SQL) selbst gelöst werden und vieles mehr . Nachdem diese Konzepte durchdacht waren, wurde uns gesagt, "was Sie getan haben, heißt" Normalisierung "". Sie haben dies und das beim Entwerfen der Notaufnahme getan. Dies ist die erste Form der Normalisierung.

Ein Satz, der mir bei solchen Fragen meines Lehrers im Kopf hängen geblieben ist, lautet: "Mit einem gut durchdachten und richtig gestalteten ER-Modell haben Sie BEREITS eine normalisierte Datenbank, sodass Sie nicht über alle Formen der Normalisierung nachdenken müssen."

Da es bei Ihrer Frage nicht darum geht, wie / WARUM Normalisierung verwendet wird, sondern WANN im Entwurfsprozess, gibt Ihnen mein langer Text oben eine mögliche Antwort: Wenn Sie die Prinzipien eines guten DB-Entwurfs verstanden haben, ist Ihr endgültiges ER-Modell normiert (z Sie haben richtige Join-Tabellen erstellt, verwendete Fremdschlüssel waren anwendbar, ...). Ich denke, es ist ein Prozess, der mit der Einrichtung der Tabellen, ihren Beziehungen usw. Hand in Hand gehen muss.

Natürlich ist eine Normalisierung nicht immer erforderlich oder erwünscht, aber in den meisten Fällen erspart Ihnen das "Zeichnen" und Durchdenken der Notaufnahme die Anwendung der Normalisierung, indem Sie sich das Modell ansehen und denken: "OK, 1. Form, sind meine Werte so atomar wie möglich ""

DrColossos
quelle
1

Die Normalisierung als Prozess erfolgt nach der logischen Modellierung und vor dem physischen Modell. Zu oft überspringen Benutzer das eigentliche logische Modell und erhalten ein physisches Modell mit geschäftsfreundlichen Namen. Das logische Modell sollte die Datenentitäten und -beziehungen definieren (normalerweise verwechselt mit Tabelleneinschränkungen), daher der Begriff "ERD".

Da physikalische Modelle häufig als "Normalformen" diskutiert werden, müssen die Tabellen bereits "normalisiert" worden sein, oder? Aus gestalterischer Sicht besteht der Prozess der Umwandlung in ein physikalisches Modell darin, dass Sie die Normalisierung anwenden. In diesem Fall werden Entitäten zu Beziehungen (oder Tabellen) und die Beziehungen werden als Nebenprodukt des Normalisierungsprozesses durch Einschränkungen erzwungen.

Mit anderen Worten, dein Denken ist richtig :)

dba4life
quelle