WikiDer > Datenbanknormalisierung

Databasenormalisatie

Datenbanknormalisierung ist eine Technik beim Entwerfen Datenbanken. Es dient zwei Zwecken: dem sparsamen Umgang mit Lagerfläche und Vermeidung von Mehrfacherfassung derselben Termine (Redundanz), eine potenzielle Fehlerquelle. Beim Normalisieren sollte man sich bewusst sein, dass keine Informationen verloren gehen. Es gibt Algorithmen die diese Normalformen automatisch für eine beliebige Datenbank auswerten.

Die Technik der Datenbanknormalisierung wird insbesondere in relationale Datenbanken. Das Wort "relational" zeigt an, dass die Beziehung zwischen den Daten Teil der Datenbank ist. In Computerdatenbanken werden die Beziehungen zwischen den Daten durch eine Software-Zwischenschicht überwacht, die RDBMS.

normale Formen

Hierarchie der Normalformen

Es gibt mehrere Normalformen, wobei die erste Normalform (1NF) die einfachste und die fünfte (5NF) die komplexeste ist. Je höher die Normalform, desto mehr Anforderungen werden an das Design gestellt. Wenn keine der Voraussetzungen erfüllt ist, spricht man von 0NF. Die Datenbank ist dann so schlecht konzipiert, dass sie in der Praxis nur eingeschränkt brauchbar ist.

Die verschiedenen Normalformen sind:

  • 1e Normalform (1NF)
  • 2e Normalform (2NF)
  • 3e Normalform (3NF)
  • boyce-Kabeljau-Normale Form (BCNF)
  • 4e Normalform (4NF)
  • 5e Normalform (5NF)

Wofür: .

Die Normalisierung bedeutet, dass jede Zeile in jeder Tabelle mit einem eindeutigen Bezeichner, einem Schlüssel, abgerufen werden kann. Jedes Standardformular stellt bestimmte Anforderungen an die Art und Weise, in der die Daten gespeichert werden (z funktionale Abhängigkeiten). Die Daten liegen in einer bestimmten Normalform vor, wenn eine Reihe vorgeschriebener Bedingungen erfüllt sind. Daten liegen beispielsweise genau dann in der zweiten Normalform vor, wenn sie die erste Normalform und einige zusätzliche Regeln erfüllen.

Bei 1NF werden die Daten in einer oder mehreren Tabellen gespeichert, aber man kümmert sich nicht um die Struktur, nicht um den belegten Plattenplatz oder um die Tatsache, dass Daten mehrfach gespeichert wurden. Auch bei 5NF ist das Gegenteil der Fall, jede Daten wird nur einmal gespeichert und benötigt so wenig Speicherplatz wie möglich. Bei 5NF sind die Daten jedoch für einen Benutzer schwieriger zu durchsuchen. Oft wird eine Zwischenform gewählt, nämlich die 3NF.

Gründe dafür

Es gibt verschiedene Gründe für die Normalisierung und die Wahl einer bestimmten Normalform wird immer in Betracht gezogen, aber die Wahl hängt stark von der Komplexität der Daten ab. Wie bereits erwähnt, ist 1NF die Mindestanforderung für eine nutzbare Datenbank. Probleme, die durch eine höhere Normalform verhindert werden können, sind:

  • Update-Anomalie: Wenn die gleichen Daten an mehreren Stellen gespeichert sind, muss dies bei einer Anpassung auch an mehreren Stellen erfolgen. Wenn die Adresse eines Kunden in fünf Tabellen gespeichert ist, können Sie diese beim Adresswechsel einfach an vier Stellen ändern und vergessen, dass es noch eine fünfte Stelle gibt.
  • Anomalie einfügen: Bei einer schlecht konzipierten Datenbank kann man auf das Problem stoßen, dass Daten nur dann eingegeben werden können, wenn auch andere Daten bekannt sind. Liegen beispielsweise Verkaufsdaten und Kundendaten in derselben Tabelle, kann ein Kunde nur erfasst werden, wenn er bereits etwas bestellt hat. Gleiches gilt umgekehrt, ein neues Produkt kann nur gelistet werden, wenn es bereits von jemandem bestellt wurde.
  • Anomalie löschen: Dieses Problem trägt das Problem der vorherigen Anomalie. Das Löschen eines Produkts kann zur Löschung von Kunden führen.

Auch die Begrenzung des Speicherplatzes und die effiziente Nutzung der Rechenleistung können ein Grund sein. Diese tragen jedoch keine Fehler. Denn eine etwas längere Suche führt nicht zu falschen Ergebnissen.

Geschichte

Ted Codd formulierte die Idee der Normalisierung in Ein relationales Datenmodell für große gemeinsam genutzte Datenbanken[1] 1970.

Es gibt tatsächlich eine sehr einfache Eliminierung[Anmerkung 1] Verfahren, das wir Normalisierung nennen werden. Durch Zerlegung werden nicht einfache Domänen durch "Domänen ersetzt, deren Elemente atomare (nicht zerlegbare) Werte sind".

Die ersten drei Normalformen (1NF, 2NF und 3NF) wurden von Codd in . definiert Weitere Normalisierung des relationalen Datenbankmodells[2] Alle normalisierten Daten befinden sich in mindestens 1NF. Einige Daten sind auch in 2NF, einige sogar in 3NF. Codd wies darauf hin, dass Daten in 2NF wünschenswerter waren als die in 1NF, 3NF noch wünschenswerter. Daher sollte der Datenbankdesigner auf Daten in 3NF abzielen.

Codds ursprüngliche Definition von 3NF stellte sich später als unvollkommen heraus. Die Definition wurde von Boyce und Codd in and überarbeitet und verstärkt Aktuelle Untersuchungen zu relationalen Datenbanksystemen.[3] Daten in 3NF in dieser neuen Definition entsprachen auch der alten Definition, aber Daten, die 3NF unter der alten Definition entsprachen, entsprachen nicht unbedingt der neuen. Die neue Definition war damit stärker als die alte und wurde später die Boyce/Codd Normalform als Verstärkung der Bedingungen der alten 3NF erwähnt.

Später eingeführt Ron Fagin einige starke Normalformen. Im Mehrwertige Abhängigkeiten und eine neue Normalform für relationale Datenbanken[4] er definierte eine neue vierte Normalform (damals hieß der spätere BCNF noch die dritte Normalform). Im Normalformen und relationale Datenbankoperatoren[5] er definierte eine weitere neue Normalform, die Projektion verbinden Normalform (PJ/NF) oder fünfte Normalform.

Null Normalform (0NF)

Jede unstrukturierte Datendatei befindet sich im Null-Normalform (0NF) oder nicht normalisiert. In jeder Zeile können Daten unterschiedlichen Typs erscheinen, was eine Aufteilung in Spalten unmöglich macht und die Suche nach Daten erschwert.

Ein Beispiel

Anastacias CD Not That Kind aus dem Jahr 2000 enthält die Songs Not That Kind, I'm Outta LoveWish You Were Here von Pink Floyd mit Shine On You Crazy Diamond, erschienen 1975Pink Floyd ist seit 1965 aktiv und Anastacia singt erst seit 1999

Auch wenn die Daten in einer Tabelle abgelegt werden, kann es noch 0NF geben, wie unten gezeigt. Die Daten sind nicht atomar, weil in der Spalte Album sowohl das Album, das Erscheinungsjahr als auch das Jahr der Erstaufführung werden erwähnt. Und die Spalten sind nicht eindeutig, weil die Spalte Spur kommt dreimal vor.

CD_Song
AlbumVeröffentlichungsjahrSpurSpurSpur
Anastacia (1999) – Nicht so nett2000Nicht diese ArtIch bin Outta LoveCowboys & Küsse
Pink Floyd (1965) – Ich wünschte, du wärst hier1975Leuchten Sie auf, verrückter Diamant
Anastacia (1999) – Naturfreak2001Habe meine Schulden bezahlt

Erste Normalform (1NF)

Jede Datentabelle, die die Definition von a . erfüllt Beziehung ist in der ersten Normalform (1NF). Wenn Daten eine Relation erfüllen, sind sie daher bereits normalisiert.

  • jedes Attribut ist atomar, enthält also einen einzelnen Wert (z. B. kann ein Telefonnummernattribut nur eine Telefonnummer enthalten); Wenn ein Attribut mehrere Werte enthält, sollten diese Werte in einer anderen Tabelle platziert werden.
  • kein Attribut wird wiederholt
  • alle Attribute bleiben zeitlich konstant

Kurz gesagt, wenn alle Daten in einer oder mehreren Tabellen untergebracht sind, existiert bereits die erste Normalform. Es gibt dann eine feste Struktur für die Daten, aber es ist noch nicht gut durchdacht, welche Daten in welche Tabelle aufgenommen werden. Beispielsweise könnten alle Daten eines Unternehmens in einem gespeichert werden flacher Tisch kann platziert werden. In einer Tabelle, die Kundenkäufe nachverfolgt, würden Sie dann auch die Adresse für jede Einkaufszeile finden, so dass die Adresse des Kunden auch bei jedem neuen Einkauf neu eingegeben wird, sodass eine Adresse in der Tabelle hunderte Male vorkommen kann .

Ein Beispiel

Die Details zum Plattenladen in 0NF:

CD_Song
CD_IDAlbumVeröffentlichungsjahrLied 1Spur2Track3
4711Anastacia (1999) – Nicht so nett2000Nicht diese ArtIch bin Outta LoveCowboys & Küsse
4712Pink Floyd (1965) – Ich wünschte, du wärst hier1975Leuchten Sie auf, verrückter DiamantNullNull
4713Anastacia (1999) – Naturfreak2001Habe meine Schulden bezahltNullNull

Obwohl die obigen Daten in einer Tabelle enthalten sind, entsprechen sie noch nicht 1NF. Der Name des Künstlers und die erste Aufführung stehen zusammen in einer Spalte und für die Tracks wurden mehrere Spalten erstellt. Um der 1NF zu entsprechen, sollten alle Veröffentlichungsjahre, Künstler und deren Erstauftritte in getrennten Spalten und Schallplatten und die Tracks in einer Spalte nach der anderen stehen. Um es nicht unnötig komplex zu machen, gehen wir davon aus, dass ein Song nur auf einer CD vorkommen kann und eine CD nur einen Interpreten hat.

CD_Song
CD_IDAlbumtitelKünstlerAktiv seitVeröffentlichungsjahrSpurSingle
4711Nicht diese ArtAnastacia199920001Nicht diese Art
4711Nicht diese ArtAnastacia199920002Ich bin Outta Love
4711Nicht diese ArtAnastacia199920003Cowboys & Küsse
4712Ich wünschte, du wärst hierPink Floyd196519751Leuchten Sie auf, verrückter Diamant
4713Natur-FreakAnastacia199920011Habe meine Schulden bezahlt

In der obigen Tabelle sind die Daten jetzt in 1NF.Vorteil: Die Daten sind jetzt durch a SELECT-Anweisung suchen.Nachteil: Die folgenden Probleme können auftreten. Soll der Name einer CD geändert werden, muss diese Änderung in verschiedenen Zeilen erfolgen, wird eine CD gespielt, die Titel sind aber noch unbekannt, ist dies nur möglich, wenn in der Spalte Titel auch NullWerte sind erlaubt. Wenn alle Titel von einer CD entfernt werden, verschwindet die gesamte CD aus der Tabelle.

Zweite Normalform (2NF)

Eine Beziehung liegt in 2NF vor, wenn alle Attribute, die nicht im Schlüssel enthalten sind, funktional vom ganzen Schlüssel abhängig sind (keine Teilabhängigkeit). Eine Beziehung mit einem Attribut als Schlüssel ist in 2NF automatisch. Mit anderen Worten, sich wiederholende Attribute sind in einer separaten Tabelle enthalten.

  • entspricht der ersten Normalform
  • alle Nicht-Schlüsselattribute sind voll funktionsfähig, abhängig von der Primärschlüssel.

Ein Beispiel

Unten nochmal die Tabelle in 1NF des Plattenladens.

CD_Song
CD_IDAlbumtitelKünstlerSchon seitVeröffentlichungsjahrSpurSingle
4711Nicht diese ArtAnastacia199920001Nicht diese Art
4711Nicht diese ArtAnastacia199920002Ich bin Outta Love
4711Nicht diese ArtAnastacia199920003Cowboys & Küsse
4712Ich wünschte, du wärst hierPink Floyd196519751Leuchten Sie auf, verrückter Diamant
4713Natur-FreakAnastacia199920011Habe meine Schulden bezahlt

Die zu den Alben gehörenden Spalten (in Rosa) können als sich wiederholende Attribute angesehen werden. Damit diese Daten nicht mehrmals gespeichert (oder geändert) werden müssen, werden sie in einer separaten Tabelle abgelegt. Die Tabelle mit den anderen Feldern (den Singles) enthält einen Hinweis auf die CD, auf der diese aufgezeichnet sind.

CD
CD_IDAlbumtitelKünstlerSchon seitVeröffentlichungsjahr
4711Nicht diese ArtAnastacia19992000
4712Ich wünschte, du wärst hierPink Floyd19651975
4713Natur-FreakAnastacia19992001
Lied
CD_IDSpurSingle
47111Nicht diese Art
47112Ich bin Outta Love
47113Cowboys & Küsse
47121Leuchten Sie auf, verrückter Diamant
47131Habe meine Schulden bezahlt

Das Attribut CD_ID ist jetzt ein Fremdschlüssel, der auf den Primärschlüssel in der Tabelle zeigt CD. Die Informationen zu den CDs sind nun in einer neuen Tabelle untergebracht. Bitte beachten Sie, dass die Künstler bei 2NF nicht in einer separaten Tabelle aufgeführt werden. Auch nicht, wenn sie mehrmals erscheinen. Schließlich werden sie nicht als eigenständige Einheit gesehen, sondern nur als Attribut von der CD.

Vorteil: Jedes Datenstück, jede CD oder jeder Song wird jetzt nur noch einmal gespeichert und die Beziehung zwischen ihnen wird auch nur einmal festgelegt. Sie muss nur einmal eingegeben und ggf. nur einmal geändert werden.

Dritte Normalform (3NF)

Eine Relation ist in 3NF, wenn sie in 2NF ist und keine transitive Abhängigkeit hat.

  • entspricht der zweiten Normalform
  • alle Nicht-Schlüsselattribute hängen nicht von einem Nicht-Schlüsselattribut ab

Ein Beispiel

Nachfolgend die Tabelle mit den CDs:

CD
CD_IDAlbumtitelVeröffentlichungsjahrKünstlerSchon seit
4711Nicht diese Art2000Anastacia1999
4712Ich wünschte, du wärst hier1975Pink Floyd1965
4713Natur-Freak2001Anastacia1999

Bei 2NF wird noch davon ausgegangen, dass ein Künstler ein Attribut der CD ist. Die Künstler und ihre Uraufführung werden im 3NF als eigenständige Einheit gesehen. Ihre Uraufführung ist ein Attribut des Künstlers und das Erscheinungsjahr ist vollständig von der CD und einem Attribut davon abhängig.

CD
CD_IDAlbumtitelVeröffentlichungsjahrKünstler_ID
4711Nicht diese Art2000311
4712Ich wünschte, du wärst hier1975312
4713Natur-Freak2001311
Künstler
Künstler_IDNameSchon seit
311Anastacia1999
312Pink Floyd1965
Lied
CD_IDSpurSingle
47111Nicht diese Art
47112Ich bin Outta Love
47113Cowboys & Küsse
47121Leuchten Sie auf, verrückter Diamant
47131Habe meine Schulden bezahlt

In diesem Beispiel ist kein Nicht-Schlüsselattribut (graue Zellen) von einem anderen Nicht-Schlüsselattribut abhängig.

Vorteil: Die Daten werden nicht mehr redundant gespeichert und die Struktur der Daten ist sofort klar, auch wenn die Daten selbst noch nicht bekannt sind.

Boyce-Codd Normalform (BCNF)

Eine Beziehung ist in BCNF (Boyce-Kabeljau Normalform), wenn jede Determinante ein Kandidatenschlüssel ist.

  • entspricht der dritten Normalform
  • es gibt keine transitiven Abhängigkeiten, daher enthält kein Schlüssel Informationen über einen anderen Schlüssel innerhalb derselben Tabelle, mit Ausnahme des gesamten Primärschlüssels

Ein Beispiel

Nehmen wir nun an, wir machen das vorherige Beispiel etwas komplexer, indem wir angeben, dass ein Lied auf mehreren CDs vorkommen kann. Wie man sieht kommt die Nummer Ich bin Outta Love auf zwei verschiedenen CDs.

CD
AlbumtitelSpurKünstler
Nicht diese ArtIch bin Outta LoveAnastacia
Nicht diese ArtNicht diese ArtAnastacia
Ich wünschte, du wärst hierLeuchten Sie auf, verrückter DiamantPink Floyd
Ich wünschte, du wärst hierNimm eine ZigarrePink Floyd
Ultimative SammlungIch bin Outta LoveAnastacia
Ultimative SammlungHabe meine Schulden bezahltAnastacia

In dieser Tabelle ist das Artist-Feld vom Track-Feld abhängig, aber Track kann nicht als Primärschlüssel verwendet werden. Schließlich lässt sich aus dem Track-Feld nicht ableiten, um welchen Albumtitel es sich handelt.

In BCNF wird dies gelöst, indem die Tabelle in zwei Kombinationen aufgeteilt wird, Track und Interpret & Track und Albumtitel:

CD
AlbumtitelSpur
Nicht diese ArtIch bin Outta Love
Nicht diese ArtNicht diese Art
Ich wünschte, du wärst hierLeuchten Sie auf, verrückter Diamant
Ich wünschte, du wärst hierNimm eine Zigarre
Ultimative SammlungIch bin Outta Love
Ultimative SammlungHabe meine Schulden bezahlt
Spuren
SpurKünstler
Ich bin Outta LoveAnastacia
Nicht diese ArtAnastacia
Habe meine Schulden bezahltAnastacia
Leuchten Sie auf, verrückter DiamantPink Floyd
Nimm eine ZigarrePink Floyd

In diesem Beispiel enthält jedes Nicht-Schlüsselattribut (grau) nur Informationen über den gesamten Primärschlüssel (blau).

Vierte Normalform (4NF)

Eine Beziehung ist in 4NF, wenn sie in BCNF ist und keine mehrwertigen Abhängigkeiten hat.

  • entspricht der Boyce-Codd-Normalform
  • enthält keine mehrfachen funktionalen Abhängigkeiten

Ein Beispiel

Angenommen, es gibt eine Datenbank mit Personen mit Haustieren und Autos. Der Tisch wurde mit der Idee entworfen, dass jede Person ein Haustier und ein Auto hat, aber dies scheint nicht der Fall zu sein. Manche Menschen haben mehrere Haustiere und andere keine. Gleiches gilt für den Autobesitz:

Eigentum
PersonHaustierWagen
PietKatzeVolkswagen
PietHundOpel
PietKatzeOpel
PietHundVolkswagen
JanHundFord

Es besteht keine Abhängigkeit zwischen den Haustieren und den Autos. Wenn jemand mehrere Haustiere oder Autos hat, entsteht eine mehrfache funktionale Abhängigkeit. Immerhin entstehen bei Pete vier Linien, während er nur zwei Haustiere und zwei Autos hat. Dadurch entsteht ein kartesisches Produkt: Wenn beispielsweise jemand fünf Haustiere und zwei Autos hat, werden 5 x 2 = 10 Zeilen erstellt. Um dieses Problem zu lösen, wird die Tabelle in zwei Teile geteilt.

Haustiere
PersonTier
PietKatze
PietHund
JanHund
Fahrzeuge
PersonWagen
PietVolkswagen
PietOpel
JanFord

Vorteil: Es gibt kein kartesisches Produkt.

Fünfte Normalform (5NF)

  • entspricht der vierten Normalform
  • jede Beziehung aus der Join-Abhängigkeit enthält einen Schlüssel zur Beziehung

Ein Beispiel

Unten sehen Sie ein Beispiel für eine Gruppe von Wanderverkäufern. Jeder Verkäufer verkauft bestimmte Produkte bestimmter Marken.

Produkte nach Marke und Verkäufer
VerkäuferMarkeProdukt
PietGipfelStaubsauger
PietGipfelSchraubendreher
MariarobustSchere
MariarobustStaubsauger
MariarobustSchraubendreher
MariarobustRegenschirm
StevenrobustStaubsauger
StevenrobustTeleskop
StevenGipfelStaubsauger
StevenGipfelLava Lampe
StevenNimbusKleiderablage

Würden wir diese Informationen unter Berücksichtigung der vierten Normalform in zwei Tabellen unterbringen, würde sich beim Zusammenfügen folgendes Problem ergeben. Schließlich sind nicht zwei, sondern drei Beziehungen zu unterscheiden:

  • Verkäufer - Produkt
  • Verkäufer - Marke
  • Marke - Produkt

Jetzt verkauft Verkäufer Steven vier verschiedene Produkte von drei verschiedenen Marken. Wäre nur die vierte Normalform erfüllt, könnte man mit einem Join leicht schließen, dass dieser Verkäufer 3 x 4 = 12 verschiedene Produkte verkauft. Eine weitere falsche Schlussfolgerung wäre, dass Maria Staubsauger verkauft, aber von welcher Marke ist nicht mehr klar. Um dieses Problem zu lösen, werden die Daten in drei Tabellen aufgeteilt:

Produkte nach Verkäufer
VerkäuferProdukt
PietStaubsauger
PietSchraubendreher
MariaSchere
MariaStaubsauger
MariaSchraubendreher
MariaRegenschirm
StevenTeleskop
StevenStaubsauger
StevenLava Lampe
StevenKleiderablage
Marken nach Verkäufer
VerkäuferMarke
PietGipfel
Mariarobust
Stevenrobust
StevenGipfel
StevenNimbus
Produkte nach Marke
MarkeProdukt
GipfelStaubsauger
GipfelSchraubendreher
GipfelLava Lampe
robustSchere
robustStaubsauger
robustSchraubendreher
robustRegenschirm
robustTeleskop
NimbusKleiderablage

Siehe auch