Einführung

Stellen Sie sich vor, Sie würden eine unaufgeräumte Storage in einen intestine beleuchteten Bereich umwandeln, in dem alles leicht zugänglich und angemessen angeordnet ist. Im Datenbankbereich wird dieser Vorgang als Normalisierung bezeichnet. Eine Datenbank funktioniert besser, wenn ihre Daten intestine strukturiert und übersichtlich sind, genau wie Ihre Storage, wenn sie aufgeräumt gehalten wird. Möchten Sie mehr erfahren? Die ersten drei Normalformen – 1NF, 2NF und 3NF – werden in diesem Artikel zusammen mit einigen nützlichen, realen Beispielen für die Normalisierung in SQL erläutert. Sie können lernen, wie Sie Ihre Datenbanken skalierbarer und effizienter machen, unabhängig von Ihrem Erfahrungsniveau im Datenbankdesign. Sind Sie bereit, Ihre Daten zu ändern? Los, legen wir los!

Überblick

  • Verstehen Sie die Prinzipien und Ziele der Datenbanknormalisierung mit SQL.
  • Wenden Sie die erste Normalform (1NF) an, um atomare Werte und Primärschlüssel sicherzustellen.
  • Identifizieren und eliminieren Sie partielle Abhängigkeiten, um die zweite Normalform (2NF) zu erreichen.
  • Entfernen Sie transitive Abhängigkeiten, um der dritten Normalform (3NF) zu entsprechen.
  • Implementieren Sie normalisierte Datenbankstrukturen mithilfe praktischer SQL-Abfragen.
So implementieren Sie die Normalisierung in SQL

Was ist Normalisierung?

Ein wesentlicher Schritt in der relationalen Datenbankarchitektur ist die Normalisierung. Sie erleichtert die effektive Datenorganisation, indem sie Redundanz verringert und die Datenintegrität verbessert. Um Anomalien zu minimieren, beinhaltet das Verfahren das Aufteilen einer Datenbank in Tabellen und das Erstellen regelbasierter Verknüpfungen zwischen ihnen. Lassen Sie uns tiefer in jede Normalform eintauchen, die Prinzipien erklären und praktische SQL-Beispiele liefern.

Erste Normalform (1NF)

Zielsetzung: Stellen Sie sicher, dass jede Tabelle einen Primärschlüssel hat und jede Spalte atomare (unteilbare) Werte enthält. Eine Tabelle ist in 1NF, wenn sie diese Regeln befolgt:

  • Einzelwertige Attribute: Jede Spalte sollte nur einen Wert professional Zeile enthalten.
  • Eindeutige Spaltennamen: Jede Spalte muss einen eindeutigen Namen haben.
  • Reihenfolge der Speicherung ist unerheblich: Die Reihenfolge, in der die Daten gespeichert werden, spielt keine Rolle.

Beispiel:

Betrachten Sie eine nicht normalisierte Tabelle mit sich wiederholenden Gruppen:

Auftragsnummer Kundenname Produkte Mengen
1 John Doe Kugelschreiber Bleistift 2, 3
2 Jane Smith Notizbuch, Radiergummi 1, 2

Diese Tabelle verstößt gegen 1NF, da die Spalten „Produkte“ und „Mengen“ mehrere Werte enthalten.

In 1NF konvertieren:

Auftragsnummer Kundenname Produkt Menge
1 John Doe Stift 2
1 John Doe Bleistift 3
2 Jane Smith Notizbuch 1
2 Jane Smith Radiergummi 2

SQL-Implementierung:

CREATE TABLE Orders (
    OrderID INT,
    CustomerName VARCHAR(255),
    Product VARCHAR(255),
    Amount INT,
    PRIMARY KEY (OrderID, Product)
);

Zweite Normalform (2NF)

Zielsetzung: Stellen Sie sicher, dass die Tabelle 1NF ist und alle Nicht-Schlüsselattribute vollständig vom Primärschlüssel abhängig sind. Dies gilt hauptsächlich für Tabellen mit zusammengesetzten Primärschlüsseln.

Schritte zum Erreichen von 2NF:

  • Stellen Sie die 1NF-Konformität sicher: Die Tabelle muss bereits in 1NF vorliegen.
  • Teilweise Abhängigkeiten entfernen: Stellen Sie sicher, dass Nicht-Schlüsselattribute vom gesamten Primärschlüssel abhängig sind und nicht nur von einem Teil davon.

Beispiel:

Betrachten Sie eine Tabelle, die in 1NF vorliegt, aber teilweise Abhängigkeiten aufweist:

Auftragsnummer Kundennummer Produkt ID Menge Kundenname
1 1 1 2 John Doe
2 2 2 1 Jane Smith

Hier hängt CustomerName nur von CustomerID ab, nicht vom zusammengesetzten Schlüssel (OrderID, ProductID).

In 2NF konvertieren:

  1. Erstellen Sie separate Tabellen für Bestellungen und Kunden:

Auftragstabelle:

Auftragsnummer Kundennummer Produkt ID Menge
1 1 1 2
2 2 2 1

Kundentabelle:

Kundennummer Kundenname
1 John Doe
2 Jane Smith

SQL-Implementierung:

CREATE TABLE Orders (
    OrderID INT,
    CustomerID INT,
    ProductID INT,
    Amount INT,
    PRIMARY KEY (OrderID, ProductID)
);

CREATE TABLE Clients (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(255)
);

Dritte Normalform (3NF)

Zielsetzung: Stellen Sie sicher, dass die Tabelle in 2NF vorliegt und alle Attribute nur vom Primärschlüssel abhängig sind.

Schritte zum Erreichen von 3NF:

  • Stellen Sie die 2NF-Konformität sicher: Die Tabelle muss bereits in 2NF sein.
  • Transitive Abhängigkeiten entfernen: Stellen Sie sicher, dass Nicht-Schlüsselattribute nicht von anderen Nicht-Schlüsselattributen abhängig sind.

Beispiel:

Betrachten Sie eine Tabelle, die in 2NF vorliegt, aber transitive Abhängigkeiten aufweist:

Auftragsnummer Kundennummer Produkt ID Menge Produktname
1 1 1 2 Stift
2 2 2 1 Notizbuch

Hier hängt der Produktname von der Produkt-ID ab und nicht direkt von der Bestell-ID.

In 3NF konvertieren:

  1. Erstellen Sie separate Tabellen für Bestellungen und Produkte:

Auftragstabelle:

Auftragsnummer Kundennummer Produkt ID Menge
1 1 1 2
2 2 2 1

Produkttabelle:

Produkt ID Produktname
1 Stift
2 Notizbuch

SQL-Implementierung:

CREATE TABLE Orders (
    OrderID INT,
    CustomerID INT,
    ProductID INT,
    Amount INT,
    PRIMARY KEY (OrderID, ProductID)
);

CREATE TABLE Clients (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(255)
);

CREATE TABLE Merchandise (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(255)
);

Praktisches Beispiel: Alles zusammenfügen

Nehmen wir an, wir beginnen mit den folgenden nicht normalisierten Daten:

Auftragsnummer Kundenname Produkte Mengen
1 John Doe Kugelschreiber Bleistift 2, 3
2 Jane Smith Notizbuch, Radiergummi 1, 2

Schritt 1: In 1NF konvertieren

Teilen Sie die mehrwertigen Spalten in atomare Werte auf:

Auftragsnummer Kundenname Produkt Menge
1 John Doe Stift 2
1 John Doe Bleistift 3
2 Jane Smith Notizbuch 1
2 Jane Smith Radiergummi 2

Schritt 2: In 2NF konvertieren

Partielle Abhängigkeiten erkennen und trennen:

  1. Auftragstabelle:
Auftragsnummer Kundennummer Produkt ID Menge
1 1 1 2
1 1 2 3
2 2 3 1
2 2 4 2
  1. Kundentabelle:
Kundennummer Kundenname
1 John Doe
2 Jane Smith
  1. Produkttabelle:
Produkt ID Produktname
1 Stift
2 Bleistift
3 Notizbuch
4 Radiergummi

Schritt 3: In 3NF konvertieren

Stellen Sie sicher, dass keine transitiven Abhängigkeiten bestehen, indem Sie direkte Abhängigkeiten nur von Primärschlüsseln beibehalten:

  • Die in 2NF erstellten Tabellen befinden sich bereits in 3NF, da alle Nicht-Schlüsselattribute nur vom Primärschlüssel abhängen.

Abschluss

In diesem Artikel haben wir untersucht, wie wir Normalisierung mit SQL implementieren können. Die Beherrschung der SQL-Normalisierung ist für den Aufbau zuverlässiger und effektiver Datenbanken unerlässlich. Durch das Verstehen und Umsetzen der Konzepte der ersten drei Normalformen (1NF, 2NF und 3NF) kann die Redundanz erheblich verringert und die Datenintegrität verbessert werden. Dieses Verfahren verbessert die allgemeine Datenbankleistung und rationalisiert die Datenverwaltung. Da Sie nun Zugriff auf die nützlichen SQL-Beispiele haben, können Sie jede komplizierte, unzusammenhängende Datensammlung in eine effiziente, intestine strukturierte Datenbank umwandeln. Wenden Sie diese Strategien an, um die Stabilität, Skalierbarkeit und Wartbarkeit Ihrer Datenbanken zu gewährleisten.

Häufig gestellte Fragen

F1. Was ist Datenbanknormalisierung?

A. Normalisierung ist ein Prozess zum Organisieren von Daten in einer Datenbank, um Redundanz zu reduzieren und die Datenintegrität durch die Aufteilung in intestine strukturierte Tabellen zu verbessern.

F2. Warum ist Normalisierung wichtig?

A. Durch Normalisierung werden doppelte Daten minimiert, die Datenkonsistenz sichergestellt und die Datenbankwartung vereinfacht.

F3. Was sind die Normalformen?

A. Die Normalformen sind Stufen im Normalisierungsprozess: 1NF (Erste Normalform), 2NF (Zweite Normalform) und 3NF (Dritte Normalform).

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert