Datenbanknormalisierung (in einfachem Englisch erklärt)
Einführung in die Datenbanknormalisierung
Die Datenbanknormalisierung ist ein Prozess, mit dem eine Datenbank in Tabellen und Spalten organisiert wird. Die Hauptidee dabei ist, dass eine Tabelle sich auf ein bestimmtes Thema bezieht und nur unterstützende Themen enthält. Nehmen Sie als Beispiel eine Tabelle mit den Informationen, in der die Daten Vertriebsmitarbeiter und Kunden enthalten, die verschiedenen Zwecken dienen:
- Identifizieren Sie Vertriebsmitarbeiter in Ihrer Organisation.
- Listen Sie alle Kunden auf, die Ihr Unternehmen anruft So verkaufen Sie ein Produkt
- Identifizieren Sie, welche Vertriebsmitarbeiter bestimmte Kunden anrufen.
Indem Sie eine Tabelle auf einen Zweck beschränken, reduzieren Sie die Anzahl der in Ihrer Datenbank enthaltenen doppelten Daten. Dies beseitigt einige Probleme, die sich aus Datenbankänderungen ergeben.
Um diese Ziele zu erreichen, verwenden wir einige festgelegte Regeln. Während Sie diese Regeln anwenden, werden neue Tabellen gebildet. Der Übergang von widerspenstig zu optimiert durchläuft mehrere normale Formen.
Es gibt drei normale Formen, die die meisten Datenbanken verwenden. Wenn Tabellen jede nachfolgende Datenbanknormalisierungsform erfüllen, sind sie weniger anfällig für Anomalien bei Datenbankänderungen und konzentrieren sich mehr auf einen einzigen Zweck oder ein einziges Thema. Bevor wir fortfahren, stellen Sie sicher, dass Sie die Definition einer Datenbanktabelle verstehen.
Gründe für die Datenbanknormalisierung
Es gibt drei Hauptgründe für die Normalisierung einer Datenbank. Die erste besteht darin, doppelte Daten zu minimieren, die zweite darin, Datenänderungsprobleme zu minimieren oder zu vermeiden, und die dritte darin, Abfragen zu vereinfachen.
Während wir die verschiedenen Normalisierungszustände durchlaufen, werden wir diskutieren, wie jedes Formular diese Probleme behebt. Schauen wir uns jedoch zunächst einige Daten an, die nicht normalisiert wurden, und diskutieren einige mögliche Fallstricke.
Ich denke, wenn Sie die Probleme erst einmal verstanden haben, schätzen Sie die Normalisierung besser. Betrachten Sie die folgende Tabelle:
Als Erstes fällt auf, dass diese Tabelle vielen Zwecken dient, darunter:
- Identifizierung der Vertriebsmitarbeiter des Unternehmens
- Auflisten der Verkäufe Büros und Telefonnummern
- Verknüpfen eines Verkäufers mit einem Verkaufsbüro
- Anzeigen der Kunden jedes Verkäufers
Als DBA wird eine rote Fahne gehisst. Im Allgemeinen sehe ich gerne Tabellen, die einen Zweck haben. Wenn der Tisch vielen Zwecken dient, ergeben sich viele der Herausforderungen. Datenvervielfältigung, Probleme bei der Datenaktualisierung und erhöhter Aufwand beim Abfragen von Daten.
Anomalien bei der Vervielfältigung und Änderung von Daten
Beachten Sie, dass wir für jede SalesPerson sowohl SalesOffice als auch OfficeNumber aufgelistet haben. Es gibt doppelte Verkäuferdaten. Doppelte Informationen stellen zwei Probleme dar:
- Erhöht den Speicher und verringert die Leistung.
- Es wird schwieriger, Datenänderungen beizubehalten.
Zum Beispiel:
Überlegen Sie, ob wir das Büro in Chicago nach Evanston, IL, verlegen. Um dies in unserer Tabelle richtig wiederzugeben, müssen wir die Einträge für alle SalesPersons aktualisieren, die sich derzeit in Chicago befinden. Unsere Tabelle ist ein kleines Beispiel, aber Sie können sehen, ob sie größer ist und möglicherweise Hunderte von Aktualisierungen umfasst.
Diese Situationen sind Änderungsanomalien. Die Datenbanknormalisierung behebt sie. Es können drei Änderungsanomalien auftreten:
Anomalie einfügen
Es gibt Fakten, die wir erst aufzeichnen können, wenn wir Informationen für die gesamte Zeile kennen. In unserem Beispiel können wir kein neues Verkaufsbüro aufnehmen, bis wir auch den Verkäufer kennen. Warum? Denn um den Datensatz zu erstellen, müssen wir einen Primärschlüssel bereitstellen. In unserem Fall ist dies die EmployeeID.
Aktualisierungsanomalie
In diesem Fall haben wir die gleichen Informationen in mehreren Zeilen. Wenn sich beispielsweise die Büronummer ändert, müssen mehrere Aktualisierungen vorgenommen werden. Wenn nicht alle Zeilen aktualisiert werden, treten Inkonsistenzen auf.
Löschanomalie
Durch Löschen einer Zeile werden mehr als ein Satz von Fakten entfernt. Wenn John Hunt beispielsweise in den Ruhestand geht und wir diese Zeile löschen, verlieren wir Informationen über das New Yorker Büro.
Probleme beim Suchen und Sortieren
Der letzte Grund, den wir in Betracht ziehen, besteht darin, das Suchen und Sortieren Ihrer Daten zu vereinfachen. Wenn Sie in der SalesStaff-Tabelle nach einem bestimmten Kunden wie Ford suchen möchten, müssen Sie eine Abfrage wie
SELECT SalesOfficeFROM SalesStaffWHERE Customer1 = ‘Ford’ OR Customer2 = ‘Ford’ OR Customer3 = ‘Ford’
schreiben In einer Spalte wäre unsere Abfrage einfacher. Überlegen Sie auch, ob Sie eine Abfrage ausführen und nach Kunden sortieren möchten.
Unsere aktuelle Tabelle macht dies schwierig. Sie müssten drei separate UNION-Abfragen verwenden!Sie können diese Anomalien beseitigen oder reduzieren, indem Sie die Daten in verschiedene Tabellen aufteilen. Dadurch werden die Daten in Tabellen gespeichert, die einem einzigen Zweck dienen.
Der Prozess zum Neugestalten der Tabelle ist die Datenbanknormalisierung.
Definition der Datenbanknormalisierung
Es gibt drei gängige Formen der Datenbanknormalisierung: 1., 2. und 3. Normalform. Sie werden auch als 1NF, 2NF bzw. 3NF abgekürzt.
Es gibt mehrere zusätzliche Formen, wie z. B. BCNF, aber ich halte diese für fortgeschritten und nicht zu notwendig, um am Anfang zu lernen.
Die Formulare sind progressiv, dh um sich für die 3. Normalform zu qualifizieren, muss eine Tabelle zuerst die Regeln für die 2. Normalform erfüllen und die 2. Normalform muss den Regeln für die 1. Normalform entsprechen. Bevor wir die verschiedenen Formen und Regeln im Detail diskutieren, lassen Sie uns die verschiedenen Formen zusammenfassen:
- Erste Normalform – Die Informationen werden in einer relationalen Tabelle gespeichert, wobei jede Spalte Atomwerte enthält. Es gibt keine sich wiederholenden Gruppen von Spalten.
- Zweite Normalform – Die Tabelle hat die erste Normalform und alle Spalten hängen vom Primärschlüssel der Tabelle ab.
- Dritte Normalform – die Tabelle liegt in der zweiten Normalform vor und alle Spalten sind nicht transitiv vom Primärschlüssel abhängig.
Wenn die Regeln nicht allzu sinnvoll sind, machen Sie sich keine Sorgen. Ich habe einen Artikel verlinkt, um Ihnen das Verständnis zu erleichtern.
Im Moment ist es wichtig zu verstehen, dass drei Regeln für die Datenbanknormalisierung aufeinander abgestimmt sind. Einige Leute lassen die Datenbanknormalisierung kompliziert erscheinen.
aber das muss nicht sein, und sobald Sie es verstanden haben, wird es intuitiv.