WikiDer > Datenbanknormalisierung
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
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.
| Album | Veröffentlichungsjahr | Spur | Spur | Spur |
|---|---|---|---|---|
| Anastacia (1999) – Nicht so nett | 2000 | Nicht diese Art | Ich bin Outta Love | Cowboys & Küsse |
| Pink Floyd (1965) – Ich wünschte, du wärst hier | 1975 | Leuchten Sie auf, verrückter Diamant | ||
| Anastacia (1999) – Naturfreak | 2001 | Habe 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_ID | Album | Veröffentlichungsjahr | Lied 1 | Spur2 | Track3 |
|---|---|---|---|---|---|
| 4711 | Anastacia (1999) – Nicht so nett | 2000 | Nicht diese Art | Ich bin Outta Love | Cowboys & Küsse |
| 4712 | Pink Floyd (1965) – Ich wünschte, du wärst hier | 1975 | Leuchten Sie auf, verrückter Diamant | Null | Null |
| 4713 | Anastacia (1999) – Naturfreak | 2001 | Habe meine Schulden bezahlt | Null | Null |
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_ID | Albumtitel | Künstler | Aktiv seit | Veröffentlichungsjahr | Spur | Single |
|---|---|---|---|---|---|---|
| 4711 | Nicht diese Art | Anastacia | 1999 | 2000 | 1 | Nicht diese Art |
| 4711 | Nicht diese Art | Anastacia | 1999 | 2000 | 2 | Ich bin Outta Love |
| 4711 | Nicht diese Art | Anastacia | 1999 | 2000 | 3 | Cowboys & Küsse |
| 4712 | Ich wünschte, du wärst hier | Pink Floyd | 1965 | 1975 | 1 | Leuchten Sie auf, verrückter Diamant |
| 4713 | Natur-Freak | Anastacia | 1999 | 2001 | 1 | Habe 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_ID | Albumtitel | Künstler | Schon seit | Veröffentlichungsjahr | Spur | Single |
|---|---|---|---|---|---|---|
| 4711 | Nicht diese Art | Anastacia | 1999 | 2000 | 1 | Nicht diese Art |
| 4711 | Nicht diese Art | Anastacia | 1999 | 2000 | 2 | Ich bin Outta Love |
| 4711 | Nicht diese Art | Anastacia | 1999 | 2000 | 3 | Cowboys & Küsse |
| 4712 | Ich wünschte, du wärst hier | Pink Floyd | 1965 | 1975 | 1 | Leuchten Sie auf, verrückter Diamant |
| 4713 | Natur-Freak | Anastacia | 1999 | 2001 | 1 | Habe 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.
|
|
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_ID | Albumtitel | Veröffentlichungsjahr | Künstler | Schon seit |
|---|---|---|---|---|
| 4711 | Nicht diese Art | 2000 | Anastacia | 1999 |
| 4712 | Ich wünschte, du wärst hier | 1975 | Pink Floyd | 1965 |
| 4713 | Natur-Freak | 2001 | Anastacia | 1999 |
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.
|
|
|
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.
| Albumtitel | Spur | Künstler |
|---|---|---|
| Nicht diese Art | Ich bin Outta Love | Anastacia |
| Nicht diese Art | Nicht diese Art | Anastacia |
| Ich wünschte, du wärst hier | Leuchten Sie auf, verrückter Diamant | Pink Floyd |
| Ich wünschte, du wärst hier | Nimm eine Zigarre | Pink Floyd |
| Ultimative Sammlung | Ich bin Outta Love | Anastacia |
| Ultimative Sammlung | Habe meine Schulden bezahlt | Anastacia |
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:
|
|
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:
| Person | Haustier | Wagen |
|---|---|---|
| Piet | Katze | Volkswagen |
| Piet | Hund | Opel |
| Piet | Katze | Opel |
| Piet | Hund | Volkswagen |
| Jan | Hund | Ford |
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.
|
|
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.
| Verkäufer | Marke | Produkt |
|---|---|---|
| Piet | Gipfel | Staubsauger |
| Piet | Gipfel | Schraubendreher |
| Maria | robust | Schere |
| Maria | robust | Staubsauger |
| Maria | robust | Schraubendreher |
| Maria | robust | Regenschirm |
| Steven | robust | Staubsauger |
| Steven | robust | Teleskop |
| Steven | Gipfel | Staubsauger |
| Steven | Gipfel | Lava Lampe |
| Steven | Nimbus | Kleiderablage |
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:
|
|
|
Siehe auch
Quellen, Anmerkungen und/oder Verweise
|
| Datenbanken | ||||||||
|---|---|---|---|---|---|---|---|---|
Datenbankverwaltungssystem · Datenbankmodell · Datenbanknormalisierung · referenzielle Integrität · relationale Algebra · relationale Datenbank · relationales Modell
|