DBMS-Normalisierung: 1NF-, 2NF-, 3NF-Datenbankbeispiel

DBMS-Normalisierung

Normalisierung auf den Punkt gebracht

Normalisierung ist der Prozess der Strukturierung einer Datenbank, um Redundanz zu reduzieren und die Konsistenz zu verbessern. Vereinfacht ausgedrรผckt werden dabei groรŸe, unรผbersichtliche Tabellen in kleinere, รผbersichtlichere Tabellen aufgeteilt. Dadurch wird sichergestellt, dass die Daten logisch gespeichert werden. Datenbanken sind effizient, leicht zu warten und frei von Duplikaten oder Fehlern.

Was ist Datenbanknormalisierung?

Datenbanknormalisierung ist eine Datenbankentwurfstechnik, die Datenredundanz reduziert und unerwรผnschte Merkmale wie Einfรผge-, Aktualisierungs- und Lรถschanomalien eliminiert. Normalisierungsregeln teilen grรถรŸere Tabellen in kleinere Tabellen auf und verknรผpfen diese mithilfe von Beziehungen. Der Zweck der Normalisierung in SQL besteht darin, redundante (sich wiederholende) Daten zu eliminieren und sicherzustellen, dass Daten logisch gespeichert werden.

Der Erfinder der relationales Modell Edgar Codd schlug mit der Einfรผhrung der Ersten Normalform die Theorie der Normalisierung von Daten vor und erweiterte die Theorie mit der Zweiten und Dritten Normalform weiter. Later Er schloss sich Raymond F. Boyce an, um die Theorie der Boyce-Codd-Normalform zu entwickeln.

Warum brauchen wir Normalisierung?

Ohne Normalisierung werden Datenbanken schnell inkonsistent und redundant. Probleme wie Einfรผgungsanomalien (unvollstรคndige Datensรคtze kรถnnen nicht hinzugefรผgt werden), Update-Anomalien (ร„nderungen an einer Stelle spiegeln sich nicht รผberall wider) und Lรถschanomalien (Beim Entfernen von Daten werden versehentlich wertvolle Informationen gelรถscht) treten hรคufig auf. Durch die Normalisierung werden diese Probleme vermieden, die Datenintegritรคt sichergestellt, Duplikate reduziert und die Datenbankverwaltung vereinfacht.

Welche Arten von Normalformen gibt es in DBMS?

Hier ist eine Liste der Normalformen in SQL:

  • 1NF (Erste Normalform): Stellt sicher, dass die Datenbanktabelle so organisiert ist, dass jede Spalte atomare (unteilbare) Werte enthรคlt und jeder Datensatz eindeutig ist. Dadurch werden sich wiederholende Gruppen vermieden und die Daten werden in Tabellen und Spalten strukturiert.
  • 2NF (Zweite Normalform): Baut auf 1NF auf: Wir mรผssen redundante Daten aus einer Tabelle entfernen, die auf mehrere Zeilen angewendet wird. und platzieren Sie sie in separaten Tabellen. Es erfordert, dass alle Nichtschlรผsselattribute auf dem Primรคrschlรผssel voll funktionsfรคhig sind.
  • 3NF (Dritte Normalform): Erweitert 2NF, indem sichergestellt wird, dass alle Nichtschlรผsselattribute nicht nur auf dem Primรคrschlรผssel voll funktionsfรคhig, sondern auch unabhรคngig voneinander sind. Dadurch wird die transitive Abhรคngigkeit beseitigt.
  • BCNF (Boyce-Codd-Normalform): Eine Weiterentwicklung von 3NF, die Anomalien behebt, die von 3NF nicht behandelt werden. Es erfordert, dass jede Determinante ein Kandidatenschlรผssel ist, was eine noch strengere Einhaltung der Normalisierungsregeln gewรคhrleistet.
  • 4NF (Vierte Normalform): Behandelt mehrwertige Abhรคngigkeiten. Dadurch wird sichergestellt, dass es in einem Datensatz nicht mehrere unabhรคngige, mehrwertige Fakten zu einer Entitรคt gibt.
  • 5NF (Fรผnfte Normalform): Auch als โ€žProjection-Join Normal Formโ€œ (PJNF) bekannt, bezieht es sich auf die Rekonstruktion von Informationen aus kleineren, unterschiedlich angeordneten Datenstรผcken.
  • 6NF (Sechste Normalform): Theoretisch und nicht umfassend umgesetzt. Es befasst sich mit zeitlichen Daten (Verwaltung von ร„nderungen im Laufe der Zeit), indem Tabellen weiter zerlegt werden, um alle nicht-zeitlichen Redundanzen zu beseitigen.

Die Theorie der Datennormalisierung in MySQL Server wird noch weiterentwickelt. Diskussionen gibt es zum Beispiel schon am 6th Normalform. In den meisten praktischen Anwendungen erreicht die Normalisierung jedoch ihre beste Leistung in 3rd Normalform. Die Entwicklung der Normalisierung in SQL-Theorien wird unten dargestellt:

Datenbank-Normalformen
Datenbank-Normalformen

Datenbanknormalisierung mit Beispielen

Datenbank Beispiel fรผr eine Normalisierung lรคsst sich anhand einer Fallstudie leicht nachvollziehen. Angenommen, eine Videobibliothek verwaltet eine Datenbank mit ausgeliehenen Filmen. Ohne jegliche Normalisierung in der Datenbank werden alle Informationen wie unten gezeigt in einer Tabelle gespeichert. Lassen Sie uns die Normalisierungsdatenbank anhand eines Normalisierungsbeispiels mit Lรถsung verstehen:

Datenbanknormalisierung mit Beispiel

Hier sehen Sie Die Spalte โ€žAusgeliehene Filmeโ€œ enthรคlt mehrere Werte. Kommen wir nun zu den ersten Normalformen:

Erste Normalform (1NF)

  • Jede Tabellenzelle sollte einen einzelnen Wert enthalten.
  • Jeder Datensatz muss eindeutig sein.

Die obige Tabelle in 1NF-

1NF-Beispiel

1NF-Regeln
Beispiel fรผr 1NF im DBMS

Bevor wir fortfahren, lassen Sie uns ein paar Dinge verstehen:

Was ist ein SCHLรœSSEL in SQL?

A SCHLรœSSEL in SQL ist ein Wert, der zur eindeutigen Identifizierung von Datensรคtzen in einer Tabelle verwendet wird. Ein SQL-SCHLรœSSEL ist eine einzelne Spalte oder eine Kombination mehrerer Spalten, die zur eindeutigen Identifizierung von Zeilen oder Tupeln in der Tabelle verwendet werden. Der SQL-Schlรผssel wird zum Identifizieren doppelter Informationen verwendet und hilft auรŸerdem dabei, eine Beziehung zwischen mehreren Tabellen in der Datenbank herzustellen.

Hinweis: Spalten in einer Tabelle, die NICHT zur eindeutigen Identifizierung eines Datensatzes verwendet werden, werden als Nicht-Schlรผsselspalten bezeichnet.

Was ist ein Primรคrschlรผssel?

Primรคrschlรผssel
Primรคrschlรผssel im DBMS

Ein Primรคrwert ist ein einzelner Spaltenwert, der zur eindeutigen Identifizierung eines Datenbankeintrags verwendet wird.

Es verfรผgt รผber folgende Eigenschaften

  • A Primรคrschlรผssel kann nicht Null sein
  • Ein Primรคrschlรผsselwert muss eindeutig sein
  • Die Primรคrschlรผsselwerte sollten selten geรคndert werden
  • Beim Einfรผgen eines neuen Datensatzes muss dem Primรคrschlรผssel ein Wert zugewiesen werden.

Was ist ein zusammengesetzter Schlรผssel?

Ein zusammengesetzter Schlรผssel ist ein aus mehreren Spalten bestehender Primรคrschlรผssel, der zur eindeutigen Identifizierung eines Datensatzes dient

In unserer Datenbank haben wir zwei Personen mit demselben Namen, Robert Phil, die jedoch an verschiedenen Orten leben.

Zusammengesetzter Schlรผssel in der Datenbank
Zusammengesetzter Schlรผssel in der Datenbank

Daher benรถtigen wir sowohl den vollstรคndigen Namen als auch die Adresse, um einen Datensatz eindeutig zu identifizieren. Das ist ein zusammengesetzter Schlรผssel.

Kommen wir zur zweiten Normalform 2NF

Zweite Normalform (2NF)

  • Regel 1 โ€“ Seien Sie in 1NF
  • Regel 2 - Einspaltiger Primรคrschlรผssel, der funktional nicht von einer Teilmenge der Kandidatenschlรผsselbeziehung abhรคngig ist

Es ist klar, dass wir nicht weiterkommen kรถnnen, um unsere einfache Datenbank in 2 zu erstellennd Normalisierungsform, es sei denn, wir partitionieren die obige Tabelle.

2NF-Regeln

2NF-Regeln

Wir haben unsere 1NF-Tabelle in zwei Tabellen aufgeteilt, nรคmlich Tabelle 1 und Tabelle 2. Tabelle 1 enthรคlt Mitgliedsinformationen. Tabelle 2 enthรคlt Informationen zu ausgeliehenen Filmen.

Wir haben eine neue Spalte namens Membership_id eingefรผhrt, die der Primรคrschlรผssel fรผr Tabelle 1 ist. Datensรคtze kรถnnen in Tabelle 1 anhand der Mitgliedschafts-ID eindeutig identifiziert werden

Datenbank โ€“ Fremdschlรผssel

In Tabelle 2 ist Membership_ID der Fremdschlรผssel

Datenbank โ€“ Fremdschlรผssel

Datenbank โ€“ Fremdschlรผssel
Fremdschlรผssel im DBMS

Foreign Key verweist auf den Primรคrschlรผssel einer anderen Tabelle! Es hilft, Ihre Tische zu verbinden

  • Ein Fremdschlรผssel kann einen anderen Namen haben als sein Primรคrschlรผssel
  • Es stellt sicher, dass Zeilen in einer Tabelle entsprechende Zeilen in einer anderen haben
  • Im Gegensatz zum Primรคrschlรผssel mรผssen sie nicht eindeutig sein. Meistens sind sie es nicht
  • Fremdschlรผssel kรถnnen null sein, obwohl Primรคrschlรผssel dies nicht kรถnnen

Datenbank โ€“ Fremdschlรผssel

Warum braucht man einen Fremdschlรผssel?

Angenommen, ein Anfรคnger fรผgt einen Datensatz in Tabelle B ein, z

Warum brauchen Sie einen Fremdschlรผssel?

Sie kรถnnen nur Werte in Ihren Fremdschlรผssel einfรผgen, die im eindeutigen Schlรผssel in der รผbergeordneten Tabelle vorhanden sind. Dies trรคgt zur referenziellen Integritรคt bei.

Das obige Problem kann gelรถst werden, indem die Mitglieds-ID aus Tabelle2 als Fremdschlรผssel der Mitglieds-ID aus Tabelle1 deklariert wird

Wenn nun jemand versucht, einen Wert in das Feld โ€žMitgliedschafts-IDโ€œ einzufรผgen, der in der รผbergeordneten Tabelle nicht vorhanden ist, wird ein Fehler angezeigt!

Was sind transitive funktionale Abhรคngigkeiten?

Ein Transitiv funktionale Abhรคngigkeit Wenn Sie eine Nicht-Schlรผsselspalte รคndern, kann dies dazu fรผhren, dass sich auch alle anderen Nicht-Schlรผsselspalten รคndern

Betrachten Sie die Tabelle 1. Durch ร„ndern der Nichtschlรผsselspalte โ€žVollstรคndiger Nameโ€œ kann sich die Anrede รคndern.

Transitive funktionale Abhรคngigkeiten

Kommen wir zu 3NF

Dritte Normalform (3NF)

  • Regel 1 โ€“ Seien Sie in 2NF
  • Regel 2 โ€“ Hat keine transitiven funktionalen Abhรคngigkeiten

Um unsere 2NF-Tabelle in 3NF zu verschieben, mรผssen wir unsere Tabelle erneut teilen.

3NF-Beispiel

Unten finden Sie ein 3NF-Beispiel in einer SQL-Datenbank:

3NF-Beispiel

3NF-Beispiel

3NF-Beispiel

Wir haben unsere Tabellen noch einmal aufgeteilt und eine neue Tabelle erstellt, in der Anreden gespeichert sind.

Es gibt keine transitiven funktionalen Abhรคngigkeiten und daher ist unsere Tabelle in 3NF

In Tabelle 3 ist die Anrede-ID der Primรคrschlรผssel, und in Tabelle 1 ist die Anrede-ID ein Fremdschlรผssel fรผr den Primรคrschlรผssel in Tabelle 3

Jetzt ist unser kleines Beispiel auf einer Ebene, die nicht weiter zerlegt werden kann, um hรถhere Normalisierungsformen in DBMS zu erreichen. Tatsรคchlich ist es bereits in hรถheren Normalisierungsformen vorhanden. In komplexen Datenbanken sind normalerweise separate Anstrengungen erforderlich, um in die nรคchsten Ebenen der Datennormalisierung zu gelangen. Wir werden jedoch im Folgenden kurz die nรคchsten Ebenen der Normalisierung in DBMS besprechen.

Boyce-Codd-Normalform (BCNF)

Auch wenn eine Datenbank in 3 istrd Normalform, dennoch wรผrde es zu Anomalien kommen, wenn es mehr als eine hรคtte Kandidat Schlรผssel.

Manchmal wird auch BCNF genannt 3.5 Normalform.

Vierte Normalform (4NF)

Wenn keine Datenbanktabelleninstanz zwei oder mehr unabhรคngige und mehrwertige Daten enthรคlt, die die relevante Entitรคt beschreiben, dann ist sie in 4th Normalform.

Fรผnfte Normalform (5NF)

Eine Tabelle finden Sie in 5th Normalform nur, wenn sie in 4NF vorliegt und nicht ohne Datenverlust in eine beliebige Anzahl kleinerer Tabellen zerlegt werden kann.

Sechste Normalform (6NF) vorgeschlagen

6th Die Normalform ist nicht standardisiert, wird jedoch seit einiger Zeit von Datenbankexperten diskutiert. Hoffentlich hรคtten wir eine klare und standardisierte Definition fรผr 6th Normalform in naher Zukunftโ€ฆ

Was sind die Vorteile der Normalisierung?

  • Verbessern Sie die Datenkonsistenz: Durch die Normalisierung wird sichergestellt, dass jedes Datenelement nur an einem Ort gespeichert wird, wodurch die Wahrscheinlichkeit inkonsistenter Daten verringert wird. Wenn Daten aktualisiert werden, mรผssen sie nur an einer Stelle aktualisiert werden, um die Konsistenz sicherzustellen.
  • Datenredundanz reduzieren: Durch die Normalisierung werden doppelte Daten eliminiert, indem sie in mehrere zusammengehรถrige Tabellen aufgeteilt werden. Dies kann Speicherplatz sparen und die Datenbank effizienter machen.
  • Verbessern Sie die Abfrageleistung: Normalisierte Datenbanken sind oft einfacher abzufragen. Da die Daten logisch organisiert sind, kรถnnen Abfragen so optimiert werden, dass sie schneller ausgefรผhrt werden.
  • Machen Sie Daten aussagekrรคftiger: Normalisierung beinhaltet Gruppenping Daten werden so aufbereitet, dass sie verstรคndlich und intuitiv sind. Dadurch wird die Datenbank leichter verstรคndlich und nutzbar, insbesondere fรผr Personen, die sie nicht entworfen haben.
  • Reduzieren Sie die Wahrscheinlichkeit von Anomalien: Anomalien sind Probleme, die beim Hinzufรผgen, Aktualisieren oder Lรถschen von Daten auftreten kรถnnen. Durch Normalisierung kann die Wahrscheinlichkeit dieser Anomalien verringert werden, indem sichergestellt wird, dass die Daten logisch organisiert sind.

Was sind die Nachteile der Normalisierung?

  • Erhรถhte Komplexitรคt: Normalisierung kann zu komplexen Beziehungen fรผhren. Eine groรŸe Anzahl von Tabellen mit Fremdschlรผsseln kann schwierig zu verwalten sein und zu Verwirrung fรผhren.
  • Reduzierte Flexibilitรคt: Aufgrund der strengen Normalisierungsregeln besteht mรถglicherweise weniger Flexibilitรคt beim Speichern von Daten, die diese Regeln nicht einhalten.
  • Erhรถhter Speicherbedarf: Wรคhrend die Normalisierung die Redundanz verringert, kann es erforderlich sein, mehr Speicherplatz zuzuweisen, um die zusรคtzlichen Tabellen und Indizes unterzubringen.
  • Leistungs-Overhead: Das Zusammenfรผhren mehrerer Tabellen kann im Hinblick auf die Leistung kostspielig sein. Je normalisierter die Daten sind, desto mehr Verknรผpfungen sind erforderlich, was die Datenabrufzeiten verlangsamen kann.
  • Verlust des Datenkontexts: Durch die Normalisierung werden Daten in separate Tabellen aufgeteilt, was zum Verlust des Geschรคftskontexts fรผhren kann. Die Untersuchung verwandter Tabellen ist notwendig, um den Kontext eines Datenelements zu verstehen.
  • Bedarf an Expertenwissen: Die Implementierung einer normalisierten Datenbank erfordert ein tiefes Verstรคndnis der Daten, der Beziehungen zwischen Daten und der Normalisierungsregeln. Dies erfordert Expertenwissen und kann zeitaufwรคndig sein.

Das ist alles zur SQL-Normalisierung!!!

Hรคufig gestellte Fragen

Normalisierung in DBMS ist ein Prozess zur Organisation von Daten in einer Datenbank, um Redundanz zu reduzieren und die Datenintegritรคt zu verbessern. Dabei werden groรŸe Tabellen in kleinere, verwandte Tabellen aufgeteilt und Beziehungen zwischen ihnen definiert. Dies stellt sicher, dass Daten logisch und konsistent gespeichert werden, wodurch Aktualisierungen, Einfรผgungen und Lรถschungen effizienter werden und Anomalien vermieden werden.

Durch die Datennormalisierung werden Datenbanktabellen strukturiert, um Wiederholungen zu vermeiden. Anstatt beispielsweise die Adresse eines Kunden in jedem Bestelldatensatz zu speichern, werden die Kundendaten durch die Normalisierung in einer separaten โ€žKundenโ€œ-Tabelle abgelegt, die durch einen Schlรผssel verknรผpft ist. Dies reduziert Redundanz โ€“ eine Adressรคnderung wird also nur einmal aktualisiert. Das Ergebnis ist eine รผbersichtlichere, effizientere Datenbank mit genauen und konsistenten Daten.

Die Normalisierung dient dazu, redundante Daten zu eliminieren, Anomalien zu minimieren und die Effizienz der Datenbank zu gewรคhrleisten. Sie vereinfacht die Wartung, indem sie die Daten รผbersichtlich hรคlt.ping Zusammengehรถrige Informationen werden organisiert, Speicherplatzverschwendung reduziert und Datenkonsistenz sichergestellt. Die Normalisierung verbessert zudem die Abfrageleistung durch logische Datenstrukturierung, sodass Entwickler und Benutzer auf korrekte Informationen zugreifen kรถnnen, ohne sich mit Duplikaten oder widersprรผchlichen Eintrรคgen auseinandersetzen zu mรผssen.

Die dritte Normalform (3NF) ist eine Normalisierungsstufe, die sicherstellt, dass jedes Nicht-Schlรผsselattribut nur vom Primรคrschlรผssel und nicht von anderen Nicht-Schlรผsselattributen abhรคngt. Beispielsweise sollte in einer Mitarbeitertabelle der โ€žAbteilungsnameโ€œ in eine Abteilungstabelle aufgeteilt werden, anstatt sich auf die โ€žAbteilungs-IDโ€œ zu verlassen. Dies vermeidet transitive Abhรคngigkeiten und gewรคhrleistet Genauigkeit, Konsistenz und Effizienz im Datenmanagement.

Zusammenfassung

  • Datenbankdesign ist entscheidend fรผr die erfolgreiche Implementierung eines Datenbankverwaltungssystems, das die Datenanforderungen eines Unternehmenssystems erfรผllt.
  • Die Normalisierung im DBMS ist ein Prozess, der dazu beitrรคgt, Datenbanksysteme zu erstellen, die kostengรผnstiger sind und รผber bessere Sicherheitsmodelle verfรผgen.
  • Funktionale Abhรคngigkeiten sind ein sehr wichtiger Bestandteil des Normalisierungsprozesses von Daten
  • Die meisten Datenbanksysteme sind bis zur dritten Normalform im DBMS normalisierte Datenbanken.
  • Ein Primรคrschlรผssel identifiziert den Datensatz in einer Tabelle eindeutig und darf nicht null sein
  • Ein Fremdschlรผssel hilft beim Verbinden einer Tabelle und verweist auf einen Primรคrschlรผssel

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: