Skip to main content

Eine Datenbank in die erste normale Form bringen

Normalformen (1NF - 3NF) (March 2024)

Normalformen (1NF - 3NF) (March 2024)
Anonim

Erste Normalform (1NF) legt die Grundregeln für eine organisierte Datenbank fest:

  • Beseitigen Sie doppelte Spalten aus derselben Tabelle.
  • Erstellen Sie separate Tabellen für jede Gruppe verwandter Daten, und identifizieren Sie jede Zeile mit einer eindeutigen Spalte (dem Primärschlüssel).

Was bedeuten diese Regeln, wenn Sie über die praktische Gestaltung einer Datenbank nachdenken? Es ist eigentlich ganz einfach.

Beseitigen Sie die Duplikation

Die erste Regel besagt, dass wir keine Daten innerhalb derselben Zeile einer Tabelle duplizieren dürfen. In der Datenbankgemeinschaft wird dieses Konzept als Atomizität einer Tabelle bezeichnet. Tabellen, die dieser Regel entsprechen, werden als atomar bezeichnet. Untersuchen wir dieses Prinzip an einem klassischen Beispiel: Eine Tabelle in einer Personaldatenbank, in der die untergeordnete Manager-Beziehung gespeichert wird. In unserem Beispiel erzwingen wir die Geschäftsregel, dass jeder Manager einen oder mehrere Untergebene haben kann, während jeder Untergebene nur einen Manager hat.

Beim Erstellen einer Liste oder einer Kalkulationstabelle zum Verfolgen dieser Informationen erstellen wir möglicherweise eine Tabelle mit den folgenden Feldern:

  • Manager
  • Untergeordnet1
  • Subordinate2
  • Untergeordnete3
  • Subordinate4

Erinnern Sie sich jedoch an die erste von 1NF auferlegte Regel: Beseitigen Sie doppelte Spalten aus derselben Tabelle. Es ist klar, dass die Spalten "Subordinate1-Subordinate4" doppelt vorhanden sind. Nehmen Sie sich einen Moment Zeit und überlegen Sie, welche Probleme dieses Szenario mit sich bringt. Wenn ein Manager nur einen untergeordneten Benutzer hat, verschwenden die Spalten "Subordinate2-Subordinate4" einfach Speicherplatz (eine wertvolle Datenbankware). Stellen Sie sich außerdem den Fall vor, dass ein Manager bereits 4 Untergebene hat - was passiert, wenn er einen anderen Mitarbeiter anstellt? Die gesamte Tabellenstruktur würde geändert werden müssen.

An diesem Punkt kommt Datenbankanfängern normalerweise eine zweite gute Idee: Wir möchten nicht mehr als eine Spalte haben und wir möchten eine flexible Menge an Datenspeicherung zulassen. Lass uns so etwas versuchen:

  • Manager
  • Untergebene

Das Feld "Untergeordnete" enthält mehrere Einträge in der Form "Mary, Bill, Joe".

Diese Lösung ist zwar näher, reicht aber auch nicht aus. Die untergeordnete Spalte ist immer noch duplikativ und nicht atomar. Was passiert, wenn wir einen Untergebenen hinzufügen oder entfernen müssen? Wir müssen den gesamten Inhalt der Tabelle lesen und schreiben. Das ist keine große Sache in dieser Situation, aber was wäre, wenn ein Manager einhundert Angestellte hätte? Außerdem wird die Auswahl von Daten aus der Datenbank in zukünftigen Abfragen kompliziert.

Hier ist eine Tabelle, die die erste Regel von 1NF erfüllt:

  • Manager
  • Untergeordnet

In diesem Fall verfügt jeder untergeordnete Benutzer über einen einzigen Eintrag. Manager können jedoch mehrere Einträge haben.

Identifizieren Sie den Primärschlüssel

Was ist nun mit der zweiten Regel: Identifizieren Sie jede Zeile mit einer eindeutigen Spalte oder einem Satz von Spalten (dem Primärschlüssel). Sie können sich die obige Tabelle ansehen und die Verwendung der untergeordneten Spalte als Primärschlüssel vorschlagen. Tatsächlich ist die untergeordnete Spalte ein guter Kandidat für einen Primärschlüssel, da in unseren Geschäftsregeln festgelegt wurde, dass jeder untergeordnete Benutzer nur einen Manager haben darf. Aufgrund der Daten, die wir in unserer Tabelle gespeichert haben, ist dies jedoch keine ideale Lösung. Was passiert, wenn wir einen anderen Mitarbeiter namens Jim einstellen? Wie speichern wir seine Manager-untergeordnete Beziehung in der Datenbank?

Es ist am besten, eine wirklich eindeutige Kennung (z. B. eine Mitarbeiter-ID) als Primärschlüssel zu verwenden. Unser letzter Tisch würde so aussehen:

  • Manager-ID
  • Untergeordnete ID

Nun ist unser Tisch in der ersten Normalform! Darüber hinaus gibt es Optionen, um Ihre Datenbank in die zweite Normalform und in die dritte Normalform zu bringen, wenn Sie sich für noch mehr Organisation interessieren.