Normalisierung ist ein Entwurfsansatz fĂŒr relationale Datenbanken mit dem Zweck, redundante Speicherung von Informationen und damit Inkonsistenz und Anomalien zu vermeiden. Die Methode strukturiert die Daten anhand einer Folge von Regeln â âNormalformenâ genannt â die aufeinander aufbauen und formale Anforderungen an das Schema bestimmen.
Die vorgenannten Regeln können bereits beim Entwurf beachtet werden (auch unterstĂŒtzt z. B. durch Werkzeuge fĂŒr die semantische Datenmodellierung). ZunĂ€chst nach GutdĂŒnken entworfene Relationen können in einem nachfolgenden Schritt unter Beachtung der Normalformen jeweils in eine normalisierte Gestalt ĂŒberfĂŒhrt werden; dafĂŒr gibt es Algorithmen (wie etwa den Synthesealgorithmus (3NF), den Zerlegungsalgorithmus (BCNF) usw.), welche automatisiert werden können. Hierbei werden die Relationen bei Bedarf anhand ihrer funktionalen AbhĂ€ngigkeiten in einfachere zerlegt, bis keine weitere Zerlegung (ohne Verlust an Information) mehr möglich ist. Mit dem Satz von Delobel kann man fĂŒr einen Zerlegungsschritt formal nachweisen bzw. prĂŒfen, welche Zerlegung keine Datenverluste mit sich bringt.
Es gibt verschiedene AusmaĂe, in denen ein Datenbankschema gegen Anomalien gefeit sein kann. In diesem Zusammenhang spricht man davon, dass âes in erster, zweiter, dritter usw. Normalform vorliegeâ.
Vorgehen
[Bearbeiten | Quelltext bearbeiten]Ziel: Konsistenzerhöhung durch Redundanzvermeidung
[Bearbeiten | Quelltext bearbeiten]
Bei der Normalisierung werden zunĂ€chst Spalten (synonyme Begriffe: Felder, Attribute) von Tabellen innerhalb von Bereichen der Datenschemata in neue Spalten aufgeteilt, z. B. Adressen in Postleitzahl, Ort und StraĂe. AnschlieĂend werden Tabellen aufgeteilt, zum Beispiel eine Tabelle
tbl_AdressenAlles mit den Feldern Firma, StraĂe, PLZ und Ort in diese Tabellen:
- tbl_Adressen mit den Feldern AdressID, Firma, StraĂe und PLZ
- tbl_PLZOrt mit den Feldern PLZ und Ort
Siehe Bild Aufspaltung der Tabelle tbl_AdressenAlles â wobei die Tabelle tbl_Adressen noch den eindeutigen PrimĂ€rschlĂŒssel AdressID erhĂ€lt.
Hinweis: In diesem Beispiel wird angenommen, dass es zu jeder Postleitzahl nur jeweils einen Ortsnamen gibt, was in Deutschland jedoch sehr oft nicht zutrifft â bspw. in lĂ€ndlichen Gebieten, wo sich mitunter bis zu 100 Orte eine Postleitzahl âteilenâ.
Die Normalisierung hat den Zweck, Redundanzen (mehrfaches Festhalten des gleichen Sachverhalts) zu verringern und dadurch verursachte Anomalien (z. B. infolge Ănderung an nicht allen Stellen) zu verhindern, um so die Aktualisierung einer Datenbank zu vereinfachen (Ănderungen lediglich an einer Stelle) sowie die Konsistenz der Daten zu gewĂ€hrleisten.
Beispiel
[Bearbeiten | Quelltext bearbeiten]Ein Beispiel dazu: Eine Datenbank enthĂ€lt Kunden und deren Adressen sowie AuftrĂ€ge, die den Kunden zugeordnet sind. Da es mehrere AuftrĂ€ge vom selben Kunden geben kann, wĂŒrde eine Erfassung der Kundendaten (womöglich mit Adressdaten) in der Auftragstabelle dazu fĂŒhren, dass sie dort mehrfach vorkommen, obwohl der Kunde immer nur einen Satz gĂŒltiger Daten hat (Redundanz). Beispielsweise kann es dazu kommen, dass in einem Auftrag fehlerhafte Adressdaten zum Kunden eingegeben werden, im nĂ€chsten Auftrag werden die korrekten Daten erfasst. So kann es â in dieser Tabelle oder auch gegenĂŒber anderen Tabellen â zu widersprĂŒchlichen Daten kommen. Die Daten wĂ€ren dann nicht konsistent, man wĂŒsste nicht, welche Daten korrekt sind. Womöglich sind sogar beide Adressen nicht korrekt, weil der Kunde umgezogen ist (Lösung siehe unten).
Bei einer normalisierten Datenbank gibt es fĂŒr die Kundendaten nur einen einzigen Eintrag in der Kundentabelle, mit der jeder Auftrag dieses Kunden verknĂŒpft wird (ĂŒblicherweise ĂŒber die Kundennummer). Im Falle des Umzugs eines Kunden (ein anderes Beispiel ist die Ănderung der Mehrwertsteuer) gĂ€be es zwar mehrere EintrĂ€ge in der entsprechenden Tabelle, die aber zusĂ€tzlich durch die Angabe eines GĂŒltigkeitszeitraums unterscheidbar sind und im obigen Kundenbeispiel ĂŒber die Kombination Auftragsdatum/Kundennummer eindeutig angesprochen werden können.
Ein weiterer Vorteil von Redundanzfreiheit, der bei Millionen DatensÀtzen einer Datenbank auch heute noch eine wichtige Rolle spielt, ist der geringere Speicherbedarf, wenn der Datensatz einer Tabelle zum Beispiel tbl_Auftrag auf einen Datensatz einer anderen Tabelle z. B. tbl_Kunde verweist, anstatt diese Daten selbst zu enthalten.
Dieses sind die Empfehlungen, die ausgehend von der Theorie der Normalisierung bei der Datenbankentwicklung gegeben werden, um vor allem Konsistenz der Daten und eine eindeutige Selektion von Daten zu gewĂ€hrleisten. Die hierzu angestrebte Redundanzfreiheit steht allerdings in speziellen AnwendungsfĂ€llen in Konkurrenz zur Verarbeitungsgeschwindigkeit oder zu anderen Zielen. Es kann daher sinnvoll sein, auf eine Normalisierung zu verzichten oder diese durch eine Denormalisierung rĂŒckgĂ€ngig zu machen, um
- die Verarbeitungsgeschwindigkeit (Performance) zu erhöhen oder
- Anfragen zu vereinfachen und damit die FehleranfÀlligkeit zu verringern oder
- Besonderheiten von Prozessen (zum Beispiel GeschÀftsprozessen) abzubilden.
In diesen FĂ€llen sollten regelmĂ€Ăig automatische Abgleichroutinen implementiert werden, um Inkonsistenzen zu vermeiden. Alternativ können die betreffenden Daten auch fĂŒr Ănderungen gesperrt werden.
Normalformen
[Bearbeiten | Quelltext bearbeiten]Zurzeit gebrÀuchliche Normalformen sind:
- 1. Normalform (1NF)
- 2. Normalform (2NF)
- 3. Normalform (3NF)
- Boyce-Codd-Normalform (BCNF)
- 4. Normalform (4NF)
- 5. Normalform (5NF)
Zum einen dienen sie der Beurteilung der QualitÀt eines betrachteten Datenbankschemas, zum anderen helfen sie, Fehler beim Erzeugen neuer Schemata zu vermeiden.
AuĂerdem können mit Hilfe der Normalisierung Datenstrukturen aus nichtrelationalen Quellen gewonnen werden, die im Sinne des Normalisierungskonzepts formal korrekt sind und die Daten aus ihren jeweiligen nichtrelationalen Quellen, aus denen sie entstanden sind (zum Beispiel Formulardaten oder Spreadsheets), aufnehmen können.
Nachfolgend werden die Kriterien der jeweiligen Normalformen erklĂ€rt. Dabei ist zu beachten, dass jede Normalform die Kriterien der vorhergehenden Normalformen mit einschlieĂt, d. h. fĂŒr die folgenden Kriterienmengen gilt: .
Erste Normalform (1NF)
[Bearbeiten | Quelltext bearbeiten]ErlÀuterung
[Bearbeiten | Quelltext bearbeiten]Jedes Attribut der Relation muss einen atomaren Wertebereich haben, und die Relation muss frei von Wiederholungsgruppen sein. (Anm.: statt âatomarâ wird auch die Bezeichnung âatomischâ verwendet.)
Atomar heiĂt, dass zusammengesetzte, mengenwertige oder geschachtelte Wertebereiche (also Relationen-wertige Attributwertebereiche) nicht erlaubt sind. In einer Relation, die sich in 1NF befindet, gibt es kein Attribut, dessen Wertebereich in weitere (sinnvolle) Teilbereiche aufgespalten werden kann.
Beispiel: Die Adresse darf nicht als einzelnes Attribut verwendet werden, sondern muss â sofern es der zugrunde liegende Prozess erfordert und erlaubt â in PLZ, Ort, StraĂe, Hausnummer etc. aufgeteilt werden.
Frei von Wiederholungsgruppen bedeutet, dass Attribute, die gleiche oder gleichartige Information enthalten, in eine andere Relation ausgelagert werden mĂŒssen.
Ein Beispiel fĂŒr eine Wiederholungsgruppe wĂ€re eine Spalte { Telefon }, die mehrere Telefonnummern enthĂ€lt oder auch eine Spaltengruppe { Telefon1, Telefon2, Telefon3 }, wobei im letzteren Fall anzumerken ist, dass es sich dabei nicht notwendigerweise um eine Wiederholungsgruppe handeln muss (siehe Alternative Formulierungen).
Praktischer Nutzen
[Bearbeiten | Quelltext bearbeiten]Abfragen der Datenbank werden durch die 1NF erleichtert bzw. ĂŒberhaupt erst ermöglicht, wenn die Attributwertebereiche atomar sind. So ist es beispielsweise in einem Feld, das einen ganzen Namensstring aus Titel, Vorname und Nachname enthĂ€lt, schwierig bis unmöglich, nach Nachnamen zu sortieren.
Alternative Formulierungen
[Bearbeiten | Quelltext bearbeiten]Alle Attribute enthalten atomare Inhalte, und die Relation hat eine feste Breite. Diese Formulierung bezieht sich darauf, dass es niemals nötig sein darf, weitere Attribute in die Relation aufzunehmen, weil die Wiederholungszahl der Wiederholungsgruppe zu klein wird (z. B.: es wird bei drei Attributen Telefon1â3 eine 4. Telefonnummer fĂŒr eine Person bekannt). Sie ist insofern interessant, als sie helfen kann zu entscheiden, ob tatsĂ€chlich eine Wiederholungsgruppe vorliegt: Obwohl z. B. { .., Telefon1, Telefon2, Telefon3,.. } sehr stark das Vorhandensein einer Wiederholungsgruppe impliziert, könnte es bei lediglich anderen Attributnamen klar werden, dass â freilich unter dem Licht der Anwendung â dem nicht so sein muss: { .., Telefon, Fax, Mobil,.. }
Eine weitere Variante entsteht durch folgenden Zusatz: .. und die Relation einen PrimĂ€rschlĂŒssel hat. Obwohl diese Formulierung so nicht bei Codd nachgelesen werden kann, handelt es sich um eine Erweiterung, die zu ausgesprochen praxistauglichen Datenstrukturen fĂŒhrt.
Negativbeispiel: 1NF verletzt
[Bearbeiten | Quelltext bearbeiten]| CD_ID | Album | GrĂŒndungsjahr | Erscheinungsjahr | Titelliste |
|---|---|---|---|---|
| 4711 | Anastacia â Not That Kind | 1999 | 2000 | {1. Not That Kind, 2. Iâm Outta Love, 3. Cowboys & Kisses} |
| 4712 | Pink Floyd â Wish You Were Here | 1965 | 1975 | {1. Shine On You Crazy Diamond (Pts. IâV)} |
| 4713 | Anastacia â Iâm Outta Love | 1999 | 2000 | {1. Iâm Outta Love} |
- Das Feld Album enthÀlt die Attributwertebereiche Interpret und Albumtitel.
- Das Feld Titelliste enthÀlt eine Menge von Titeln.
Dadurch hat man ohne Aufspaltung folgende Probleme bei Abfragen:
- Zur Sortierung nach Albumtitel muss das Feld Album in Interpret und Albumtitel aufgeteilt werden.
- Die Titel können (mit einfachen Mitteln) nur alle gleichzeitig als Titelliste oder gar nicht dargestellt werden.
Lösung
[Bearbeiten | Quelltext bearbeiten]| CD_ID | Albumtitel | Interpret | GrĂŒndungsjahr | Erscheinungsjahr | Track | Titel |
|---|---|---|---|---|---|---|
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 1 | Not That Kind |
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 2 | Iâm Outta Love |
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 3 | Cowboys & Kisses |
| 4712 | Wish You Were Here | Pink Floyd | 1965 | 1975 | 1 | Shine On You Crazy Diamond (Pts. IâV) |
| 4713 | Iâm Outta Love | Anastacia | 1999 | 2000 | 1 | Iâm Outta Love |
Die Attributwertebereiche werden in atomare Attributwertebereiche aufgespalten:
- Das Feld Album wird in die Felder Albumtitel und Interpret gespalten.
- Das Feld Titelliste wird in die Felder Track und Titel gespalten sowie auf mehrere DatensÀtze aufgeteilt.
Da jetzt jeder Attributwertebereich atomar ist sowie die Tabelle einen eindeutigen PrimĂ€rschlĂŒssel (VerbundschlĂŒssel aus den Spalten CD_ID und Track) besitzt, befindet sich die Relation in 1NF.
Zweite Normalform (2NF)
[Bearbeiten | Quelltext bearbeiten]ErlÀuterung
[Bearbeiten | Quelltext bearbeiten]Eine Relation ist genau dann in der zweiten Normalform, wenn die erste Normalform vorliegt und kein NichtprimĂ€rattribut (Attribut, das nicht Teil eines SchlĂŒsselkandidaten ist) funktional von einer echten Teilmenge eines SchlĂŒsselkandidaten abhĂ€ngt.
Anders gesagt: Jedes nicht-primĂ€re Attribut (nicht Teil eines SchlĂŒssels) ist jeweils von allen ganzen SchlĂŒsseln abhĂ€ngig, nicht nur von einem Teil eines SchlĂŒssels. Wichtig ist hierbei, dass die NichtschlĂŒsselattribute wirklich von allen SchlĂŒsseln vollstĂ€ndig abhĂ€ngen.
Somit gilt, dass Relationen in der 1NF, deren SchlĂŒsselkandidat(en) nicht zusammengesetzt sind, sondern lediglich aus jeweils (einem) einzelnen Attribut(en) bestehen, automatisch die 2NF erfĂŒllen.
In einer Relation R(A,B) ist das Attribut B von dem Attribut A funktional abhĂ€ngig, falls zu jedem Wert des Attributs A genau ein Wert des Attributs B gehört. In einer Relation R(S1,S2,B) ist das Attribut B von den SchlĂŒsselattributen S1 und S2 voll funktional abhĂ€ngig, wenn B von den zusammengesetzten Attributen (S1,S2) funktional abhĂ€ngig ist, nicht aber von einem einzelnen Attribut S1 oder S2.
Diese informelle Definition kann wie folgt prÀzisiert werden:
Eine Relation ist genau dann in zweiter Normalform, wenn sie
- in der ersten Normalform ist und
- fĂŒr jedes Attribut der Relation gilt:
- ist Teil eines SchlĂŒsselkandidaten oder
- ist von einem SchlĂŒsselkandidaten abhĂ€ngig und
ist nicht von einer echten Teilmenge eines SchlĂŒsselkandidaten abhĂ€ngig.
ist voll funktional abhĂ€ngig von jedem SchlĂŒsselkandidaten (wobei die SchlĂŒsselkandidaten KC auch durch die Kombination mehrerer Attribute gebildet werden können). Die 2NF eliminiert alle partiellen funktionalen AbhĂ€ngigkeiten, d. h. kein NichtschlĂŒsselattribut ist funktional abhĂ€ngig von Teilen des SchlĂŒsselkandidaten.
Falls ein SchlĂŒsselkandidat zwei Attribute besitzt, können bei der Zerlegung in die 2NF höchstens drei Relationen entstehen. Falls ein SchlĂŒsselkandidat drei Attribute besitzt, können bei der Zerlegung in die 2NF höchstens sieben Relationen entstehen. Das sind jeweils die Anzahl der Teilmengen einer gegebenen Menge minus 1 (leere Menge) und entspricht der Anzahl der Elemente der Potenzmenge () als Obergrenze.
Praktischer Nutzen
[Bearbeiten | Quelltext bearbeiten]Die 2NF erzwingt wesentlich âmonothematischeâ Relationen im Schema: jede Relation modelliert nur einen Sachverhalt.
Dadurch werden Redundanz und die damit einhergehende Gefahr von Inkonsistenzen reduziert. Nur noch logisch/sachlich zusammengehörige Informationen finden sich in einer Relation. Dadurch fĂ€llt das VerstĂ€ndnis der Datenstrukturen leichter. Jedoch wird beim Planen eines Datenmodelles die 2. Normalform meistens ĂŒbersprungen, daher kommt sie, verglichen mit der 1. und 3. Normalform, eher selten vor.
Negativbeispiel: 2NF verletzt
[Bearbeiten | Quelltext bearbeiten]| CD_ID | Albumtitel | Interpret | GrĂŒndungsjahr | Erscheinungsjahr | Track | Titel |
|---|---|---|---|---|---|---|
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 1 | Not That Kind |
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 2 | Iâm Outta Love |
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 3 | Cowboys & Kisses |
| 4712 | Wish You Were Here | Pink Floyd | 1965 | 1975 | 1 | Shine On You Crazy Diamond (Pts. IâV) |
| 4713 | Iâm Outta Love | Anastacia | 1999 | 2000 | 1 | Iâm Outta Love |
- Der PrimĂ€rschlĂŒssel der Relation ist aus den Feldern CD_ID und Track zusammengesetzt. (GrundsĂ€tzlich darf ein PrimĂ€rschlĂŒssel aus mehreren Attributen bestehen, jedoch entsteht daraus im genannten Beispiel ein Konflikt.)
- Die Felder Albumtitel, Interpret, GrĂŒndungs- und Erscheinungsjahr sind vom Feld CD_ID abhĂ€ngig, aber nicht vom Feld Track. Dieser (Punkt 2) verletzt die 2. Normalform, da die vier nicht-primĂ€ren Attribute nicht nur von einem Teil des SchlĂŒssels (hier CD_ID) abhĂ€ngen dĂŒrfen. WĂ€re der SchlĂŒssel nicht zusammengesetzt (siehe Punkt 1), so könnte dies nicht passieren.
Probleme, die sich daraus ergeben
[Bearbeiten | Quelltext bearbeiten]Die Informationen aus diesen vier Feldern sind, wie am Beispiel der CD Not That Kind zu erkennen, mehrfach vorhanden, d. h. redundant. Dadurch besteht die Gefahr, dass die IntegritĂ€t der Daten verletzt wird. So könnte man den Albumtitel fĂŒr das Lied Not That Kind in I Donât Mind Ă€ndern, ohne jedoch die entsprechenden EintrĂ€ge fĂŒr die Titel Iâm Outta Love und Cowboys & Kisses zu Ă€ndern (Update-Anomalie).
| CD_ID | Albumtitel | Interpret | GrĂŒndungsjahr | Erscheinungsjahr | Track | Titel |
|---|---|---|---|---|---|---|
| 4711 | I Donât Mind | Anastacia | 1999 | 2000 | 1 | Not That Kind |
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 2 | Iâm Outta Love |
| 4711 | Not That Kind | Anastacia | 1999 | 2000 | 3 | Cowboys & Kisses |
| 4712 | Wish You Were Here | Pink Floyd | 1965 | 1975 | 1 | Shine On You Crazy Diamond (Pts. IâV) |
| 4713 | Iâm Outta Love | Anastacia | 1999 | 2000 | 1 | Iâm Outta Love |
In diesem Fall wĂ€re ein Zustand erreicht, den man als Dateninkonsistenz bezeichnet. Ăber die komplette Tabelle betrachtet, âpassenâ die Daten nicht mehr zusammen.
Lösung
[Bearbeiten | Quelltext bearbeiten]Die Daten in der Tabelle werden in zwei Tabellen aufgeteilt: CD und Lied. Die Tabelle CD enthĂ€lt nur noch Felder, die voll funktional von CD_ID abhĂ€ngen, hat also CD_ID als PrimĂ€rschlĂŒssel. Auch der Albumtitel allein sei eindeutig, also ein SchlĂŒsselkandidat. Da keine weiteren (zusammengesetzten) SchlĂŒsselkandidaten existieren, liegt die Tabelle damit automatisch in der 2. Normalform vor. Die Tabelle âLiedâ enthĂ€lt schlieĂlich nur noch Felder, die voll funktional von CD_ID und Track abhĂ€ngen, liegt also auch in der 2. Normalform vor. Mit Hilfe dieser verlustfreien Zerlegung sind auch die genannten Redundanzen der Daten beseitigt.
| CD_ID | Albumtitel | Interpret | GrĂŒndungsjahr | Erscheinungsjahr |
|---|---|---|---|---|
| 4711 | Not That Kind | Anastacia | 1999 | 2000 |
| 4712 | Wish You Were Here | Pink Floyd | 1965 | 1975 |
| 4713 | Iâm Outta Love | Anastacia | 1999 | 2000 |
| CD_ID | Track | Titel |
|---|---|---|
| 4711 | 1 | Not That Kind |
| 4711 | 2 | Iâm Outta Love |
| 4711 | 3 | Cowboys & Kisses |
| 4712 | 1 | Shine On You Crazy Diamond (Pts. IâV) |
| 4713 | 1 | Iâm Outta Love |
Das Attribut CD_ID aus der Tabelle Lied bezeichnet man als FremdschlĂŒssel, der auf den PrimĂ€rschlĂŒssel der Tabelle CD verweist. Zugleich stellen die Attribute CD_ID und Track den zusammengesetzten PrimĂ€rschlĂŒssel der Tabelle Lied dar.
Dritte Normalform (3NF)
[Bearbeiten | Quelltext bearbeiten]ErlÀuterung
[Bearbeiten | Quelltext bearbeiten]Eine Relation befindet sich in der 3. Normalform, wenn sie die 2. NF erfĂŒllt und keine funktionalen AbhĂ€ngigkeiten der NichtschlĂŒssel-Attribute (hellgraue Zellen in der Tabelle) untereinander bestehen. Solche AbhĂ€ngigkeiten bezeichnet man auch als transitive AbhĂ€ngigkeiten.
Ein Attribut ist vom SchlĂŒsselkandidaten transitiv abhĂ€ngig, wenn es eine Attributmenge gibt, sodass und .
Hierbei handelt es sich um eine AbhĂ€ngigkeit, bei der ein Attribut ĂŒber eine Attributmenge von einem SchlĂŒsselkandidaten der Relation abhĂ€ngig ist (ohne dass zugleich auch direkt von abhĂ€ngig, also ein SchlĂŒsselkandidat ist). Das heiĂt: Wenn die Attributmenge von der Attributmenge abhĂ€ngt und Attribut von , dann ist transitiv abhĂ€ngig von . Formal ausgedrĂŒckt: .
Einfach gesagt: Ein NichtschlĂŒsselattribut darf nicht von einer Menge aus NichtschlĂŒsselattributen abhĂ€ngig sein. Ein NichtschlĂŒsselattribut darf also nur direkt von einem PrimĂ€rschlĂŒssel (bzw. einem SchlĂŒsselkandidaten) abhĂ€ngig sein.
Siehe auch: Transitive Relation, Synthesealgorithmus
Praktischer Nutzen
[Bearbeiten | Quelltext bearbeiten]Transitive AbhÀngigkeiten sind sofort ersichtlich, ohne dass man die ZusammenhÀnge der Daten kennen muss. Sie sind durch die Struktur der Relationen wiedergegeben.
AuĂerdem werden verbliebene thematische Durchmischungen in der Relation behoben: nach der 3NF sind die Relationen des Schemas zuverlĂ€ssig monothematisch.
Alternative Formulierung
[Bearbeiten | Quelltext bearbeiten]Die dritte Normalform ist erreicht, wenn sich das Relationenschema in 2NF befindet, und kein NichtschlĂŒsselattribut (hellgraue Zellen in der Tabelle) Determinante ist.
Oder: Die dritte Normalform ist erreicht, wenn sich das Relationenschema in 2NF befindet, und kein NichtschlĂŒsselattribut (hellgraue Zellen in der Tabelle) von einem anderen NichtschlĂŒsselattribut funktional abhĂ€ngig ist.
Negativbeispiel: 3NF verletzt
[Bearbeiten | Quelltext bearbeiten]
|
Offensichtlich lĂ€sst sich der Interpret einer CD aus der CD_ID bestimmen, das GrĂŒndungsjahr der Band/Interpreten hĂ€ngt wiederum vom Interpreten und damit transitiv von der CD_ID ab.
Das Problem ist hierbei wieder Datenredundanz. Wird zum Beispiel eine neue CD mit einem existierenden Interpreten eingefĂŒhrt, so wird das GrĂŒndungsjahr redundant gespeichert.
Lösung
[Bearbeiten | Quelltext bearbeiten]
|
|
|
Diese Lösung gilt nur, wenn man davon ausgeht, dass der Interpret weltweit eindeutig ist. Ansonsten mĂŒsste man eine synthetische ID in der Tabelle KĂŒnstler hinzufĂŒgen, die dann den FremdschlĂŒssel in der Tabelle CD stellt, wie folgt:
|
|
|
Die Relation wird aufgeteilt, wobei die beiden voneinander abhĂ€ngigen Daten in eine eigene Tabelle ausgelagert werden. Der SchlĂŒssel der neuen Tabelle muss als FremdschlĂŒssel in der alten Tabelle erhalten bleiben.
An der Tabelle âLiedâ wurden keine Ănderungen bei der Ăbertragung in die 3. Normalform vorgenommen. Sie ist hier nur der VollstĂ€ndigkeit halber gelistet.
Boyce-Codd-Normalform (BCNF)
[Bearbeiten | Quelltext bearbeiten]ErlÀuterung
[Bearbeiten | Quelltext bearbeiten]Ein Relationenschema ist in der Boyce-Codd-Normalform, wenn es in der 3NF ist und jede Determinante (Attributmenge, von der andere Attribute funktional abhĂ€ngen) ein SchlĂŒsselkandidat ist (oder die AbhĂ€ngigkeit ist trivial).
Die BCNF (nach Raymond F. Boyce und Edgar F. Codd) verhindert, dass Teile zweier aus mehreren Feldern zusammengesetzten SchlĂŒsselkandidaten voneinander abhĂ€ngig sind.
Die ĂberfĂŒhrung in die BCNF ist zwar immer verlustfrei möglich, aber nicht immer abhĂ€ngigkeitserhaltend. Die Boyce-Codd-Normalform war ursprĂŒnglich als Vereinfachung der 3NF gedacht, fĂŒhrte aber zu einer neuen Normalform, die diese verschĂ€rft: Eine Relation ist automatisch frei von transitiven AbhĂ€ngigkeiten, wenn alle Determinanten SchlĂŒsselkandidaten sind.
Negativbeispiel: BCNF verletzt
[Bearbeiten | Quelltext bearbeiten]In diesem Beispiel gibt es eine einfache Datenbank, in der die Vereinszugehörigkeit von Sportlern gespeichert wird. Es sollen die folgenden Bedingungen gelten:
- jeder Verein bietet nur eine Sportart an.
- ein Sportler kann in verschiedenen Vereinen spielen, aber nur, wenn diese Vereine unterschiedliche Sportarten anbieten. Damit wird sichergestellt, dass der Sportler nie gegen einen Verein spielt, in dem er selbst Mitglied ist.
| Name | Sportart | Verein |
|---|---|---|
| Schuster | FuĂball | FC Musterhausen |
| Leitner | FuĂball | FC Musterhausen |
| Leitner | Eishockey | EC Beispielstadt |
Aus den oben genannten Bedingungen folgt, dass das Attribut Sportart funktional abhĂ€ngig vom Attribut Verein ist (Verein â Sportart), d. h. Verein ist eine Determinante. Jedoch ist Verein kein SchlĂŒsselkandidat. Mögliche SchlĂŒsselkandidaten sind {Name,Verein} und {Name,Sportart}. Eine Konvertierung in BCNF ist möglich, indem (Name, Verein) als PrimĂ€rschlĂŒssel verwendet und die Relation aufgeteilt wird:
Lösung
[Bearbeiten | Quelltext bearbeiten]
|
|
Zerlegungsalgorithmus
[Bearbeiten | Quelltext bearbeiten]Es existiert ein Algorithmus, der relationale Schemata durch Zerlegung (engl. decomposition) in die Boyce-Codd-Normalform ĂŒberfĂŒhrt. Alle Schemata werden dabei solange aufgespalten, bis keines mehr die BCNF bricht. Jede Aufspaltung erfolgt anhand einer, die BCNF verletzenden, funktionalen AbhĂ€ngigkeit. Die Attribute der verletzenden AbhĂ€ngigkeit bilden das erste neue Schema, und die restlichen Attribute plus die Determinante ein weiteres Schema. Die beiden neuen Schemata enthalten von den ursprĂŒnglichen funktionalen AbhĂ€ngigkeiten lediglich solche, welche nur Attribute des jeweiligen Schemas nutzen, der Rest geht verloren.
Folgender Pseudocode beschreibt den Zerlegungsalgorithmus:[1]
| 1: | Gegeben ist ein relationales Schema , mit der Menge aller Attribute und der Menge der funktionalen AbhĂ€ngigkeiten ĂŒber diesen Attributen. |
| 2: | Die Ergebnismenge Dekomposition, bestehend aus den zerlegten Schemata, wird mit initialisiert. |
| 3: | Solange es ein Schema in der Menge Dekomposition gibt, das nicht in der BCNF ist, fĂŒhre folgende Zerlegung aus: |
| 4: | Sei eine Attributmenge fĂŒr die eine funktionale AbhĂ€ngigkeit definiert ist, welche der BCNF widerspricht. |
| 5: | Ersetze in der Ergebnismenge Dekomposition durch zwei neue Schemata , ein Schema bestehend nur aus den Attributen der AbhĂ€ngigkeit, welche die BCNF ursprĂŒnglich verletzt hat; und , ein Schema mit allen Attributen, auĂer denen die nur in der abhĂ€ngigen Menge und nicht in der Determinante enthalten sind. Die Menge der funktionalen AbhĂ€ngigkeiten enthĂ€lt nur noch die AbhĂ€ngigkeiten, welche lediglich Attribute aus enthalten, entsprechendes gilt fĂŒr . Damit fallen alle AbhĂ€ngigkeiten weg, welche Attribute aus beiden Schemata benötigen. |
| 6: | Ergebnis: Dekomposition â eine Menge von relationalen Schemata, welche in der BCNF sind. |
Durchlauf des Algorithmus am obigen Beispiel (ohne Darstellung aller trivialen AbhÀngigkeiten):
- 1: R = ( { Name, Sportart, Verein }, { ( { Name, Sportart } â { Verein } ), ( { Verein } â { Sportart } ), ( { Name, Verein } â { Name, Verein } ) } )
- 2: Dekomposition = { R }
- 3: da R aus Dekomposition nicht die BCNF erfĂŒllt mache folgendes:
- 4,5: { Verein } â { Sportart } ist die AbhĂ€ngigkeit, die die Verletzung der BCNF bedingt, damit ist = ( { Verein, Sportart }, { ( { Verein } â { Sportart }) } ) und = ( { Name, Verein }, { ( { Name, Verein } â { Name, Verein } ) } )
- 6: Ergebnis:
Unterschied zur 3NF
[Bearbeiten | Quelltext bearbeiten]Die BCNF-Normalform ist strenger hinsichtlich der erlaubten funktionalen AbhÀngigkeiten: in Relationsschemata in 3NF können einige Informationen doppelt vorkommen, in der BCNF jedoch nicht.
Vierte Normalform (4NF)
[Bearbeiten | Quelltext bearbeiten]ErlÀuterung
[Bearbeiten | Quelltext bearbeiten]Ein Relationenschema ist dann in der 4. Normalform, wenn es in der BCNF ist und nur noch triviale mehrwertige AbhÀngigkeiten (MWA) enthÀlt.
Einfach ausgedrĂŒckt: Es darf innerhalb einer Relation nicht mehrere 1:n- oder m:n-Beziehungen zu einem SchlĂŒsselwert geben, die thematisch/inhaltlich nichts miteinander zu tun haben. Gehört etwa zu einem SchlĂŒsselwert i-mal Attribut a, aber davon unabhĂ€ngig auch j-mal Attribut b, ist die 4NF verletzt.
Anschaulich ausgedrĂŒckt: Die 4NF untersucht n-Ă€re Beziehungen (mehr als zwei Tabellen stehen gleichzeitig in Beziehung) und ob diese korrekt modelliert wurden.
Negativbeispiel: 4NF verletzt
[Bearbeiten | Quelltext bearbeiten]| Personnummer | Haustier | Fahrzeug |
|---|---|---|
| 1 | Katze | Volkswagen |
| 1 | Katze | Ferrari |
| 1 | Hamster | Volkswagen |
| 1 | Hamster | Ferrari |
| 2 | Hund | Porsche |
Zu einer Personennummer gibt es mehrere Haustiere und Fahrzeuge. Haustiere und Fahrzeuge einer Person haben aber prinzipiell nichts miteinander zu tun; man sagt, sie sind »voneinander unabhĂ€ngig«. Als PrimĂ€rschlĂŒssel kommt nur eine Kombination aus allen drei Attributen in Frage, somit ist die Tabelle in 3NF. Personnummer â Haustier ist dabei eine mehrwertige AbhĂ€ngigkeit, Personnummer â Fahrzeug auch. Da diese beiden MWAs unabhĂ€ngig voneinander sind, ist die 4NF verletzt.
Die Beispielgrafik zeigt die fehlerhafte Modellierung der mehrwertigen AbhĂ€ngigkeiten und die korrekte Lösung. Zwischen Haustier und Fahrzeug besteht keine Beziehung, somit war die Beziehung âbesitztâ falsch modelliert.
Lösung
[Bearbeiten | Quelltext bearbeiten]
|
|
Hinweis
[Bearbeiten | Quelltext bearbeiten]Folgendes Relationsschema erfĂŒllt die 4NF, obwohl auch hier mehrere MWAs vorliegen:
| Person | Partner | Kind |
|---|---|---|
| 1 | 2 | Gabi |
| 1 | 81 | Peter |
| 1 | 99 | Hilbert |
| 2 | 1 | Gabi |
| 2 | 77 | Hans |
Person â Partner und Person â Kind sind zwar zwei MWAs, aber diese beiden sind auch untereinander abhĂ€ngig: Partner â Kind. Solche untereinander abhĂ€ngigen MWAs werden erst in 5NF gelöst.
FĂŒnfte Normalform (5NF)
[Bearbeiten | Quelltext bearbeiten]ErlÀuterung
[Bearbeiten | Quelltext bearbeiten]Eine Relation ist in 5NF, wenn sie in der 4NF ist und keine mehrwertigen AbhÀngigkeiten enthÀlt, die voneinander abhÀngig sind.
Einfach ausgedrĂŒckt: Es darf innerhalb einer Relation nicht mehrere 1:n- oder m:n-Beziehungen zu einem SchlĂŒsselwert geben, die thematisch/inhaltlich miteinander verknĂŒpft sind. Gehört etwa zu einem SchlĂŒsselwert i-mal Attribut a, aber davon abhĂ€ngig auch j-mal Attribut b, ist die 5NF verletzt.
Die 5NF verlangt also vereinfachte Relationen, aus denen aber durch Projektions- und Verbundoperationen alle Informationen der ursprĂŒnglichen Relation wiederherstellbar sein mĂŒssen. Sie ist somit sehr generell gehalten und dadurch (vorerst) die letzte Normalform. So können Relationen in einzelne Abfragen aufgeteilt werden und durch spĂ€tere Verbundsoperationen wieder zusammengefĂŒgt werden, wobei eine Teilmenge des so genannten kartesischen Produkts entsteht.
Die 5NF unterstĂŒtzt insoweit die Konsistenz, als dass sich durch das Aufteilen auch neue Kombinationen ergeben können, falls beim HinzufĂŒgen einer Information sich theoretisch auch andere Kombinationen ergeben wĂŒrden, die aber nicht berĂŒcksichtigt werden, wenn alle Attribute in einer einzigen Tabelle der Relation stehen.
Negativbeispiel: 5NF verletzt
[Bearbeiten | Quelltext bearbeiten]Die folgende Relation zeigt, welche Lieferanten welche Bauteile an welches Projekt liefern können:
| Lieferant | Teil | Projekt |
|---|---|---|
| MĂŒller | Schraube | Projekt 1 |
| MĂŒller | Nagel | Projekt 2 |
| Maier | Nagel | Projekt 1 |
Die Relation muss weiter zerteilt werden, denn es ist auch vom Projekt abhÀngig, welche Teile bei diesem benötigt werden. Wichtig ist auch, dass sich die Relation aufteilen lÀsst, ohne dass Informationen verloren gehen.
Lösung
[Bearbeiten | Quelltext bearbeiten]Um diese Relation in die 5. Normalform umzuwandeln, mĂŒssen drei Relationen erstellt werden (LieferantâTeil, TeilâProjekt und LieferantâProjekt).
- Welche Teile kann welcher Lieferant liefern?
| Lieferant | Teil |
|---|---|
| MĂŒller | Schraube |
| MĂŒller | Nagel |
| Maier | Nagel |
- Welche Teile werden von welchem Projekt benötigt?
| Teil | Projekt |
|---|---|
| Schraube | Projekt 1 |
| Nagel | Projekt 2 |
| Nagel | Projekt 1 |
- Welche Projekte können von welchem Lieferanten beliefert werden?
| Lieferant | Projekt |
|---|---|
| MĂŒller | Projekt 1 |
| MĂŒller | Projekt 2 |
| Maier | Projekt 1 |
Hinweis
[Bearbeiten | Quelltext bearbeiten]Anders als bei der Umformung zwischen den bisherigen Normalformen wird durch diese Umwandlung etwas anderes durch die neuen Relationen ausgedrĂŒckt als zuvor in der 4. Normalform.
Das merkt man leicht, wenn man die drei Relationen aus dem Beispiel oberhalb wieder vereinigt:
| Lieferant | Teil | Projekt |
|---|---|---|
| MĂŒller | Schraube | Projekt 1 |
| MĂŒller | Nagel | Projekt 2 |
| MĂŒller | Nagel | Projekt 1 |
| Maier | Nagel | Projekt 1 |
Neu ist das Tupel: MĂŒller â Nagel â Projekt 1.
Denn MĂŒller könnte theoretisch das Projekt 1 mit NĂ€geln beliefern, da
- er auch Projekt 2 mit NĂ€geln beliefert und
- Projekt 1 auch NÀgel benötigt (die jedoch bisher von Maier geliefert wurden).
Die ĂberfĂŒhrung in 5NF ist also nur dann möglich, wenn man die Möglichkeiten der Verbindungen aus drei Beziehungen ausdrĂŒcken möchte und nicht eine konkrete Verbindung zwischen den dreien haben möchte. Diese Aufteilung ergibt bei der richtigen Anwendung neue Informationen, wie hier, dass MĂŒller Projekt 1 auch mit NĂ€geln beliefern könnte.
Bemerkungen
[Bearbeiten | Quelltext bearbeiten]SchwĂ€chen im Datenmodell aufgrund fehlender Normalisierung können â neben den typischen Anomalien â einen höheren Aufwand bei einer spĂ€teren Weiterentwicklung bedeuten. Andererseits kann beim Datenbankentwurf aus Ăberlegungen zur Performance bewusst auf Normalisierungsschritte verzichtet werden (Denormalisierung). Typisches Beispiel dafĂŒr ist das Sternschema im Data-Warehouse.
Die Erstellung eines normalisierten Schemas wird durch automatische Ableitung aus einem konzeptuellen Datenmodell gestĂŒtzt; hierzu dient in der Praxis ein erweitertes Entity-Relationship-Modell (ERM) oder ein Klassendiagramm der Unified Modeling Language (UML) als Ausgangspunkt. Das aus dem konzeptionellen Entwurf abgeleitete Relationenschema kann dann mit Hilfe der Normalisierungen ĂŒberprĂŒft werden; es existieren jedoch Formalismen und Algorithmen, die diese Eigenschaft bereits sicherstellen können.
Statt des ursprĂŒnglichen von Peter Chen 1976 entwickelten ER-Modells werden heute erweiterte ER-Modelle verwendet: Das Structured-ERM (SERM), das E3R-Modell, das EER-Modell sowie das von der SAP AG verwendete SAP-SERM.
Befindet sich ein Relationenschema nicht in der 1NF, so nennt man diese Form auch Non-First-Normal-Form (NFÂČ) oder Unnormalisierte Form (UNF).
Der Prozess der Normalisierung und Zerlegung einer Relation in die 1NF, 2NF und 3NF muss die Wiederherstellbarkeit der ursprĂŒnglichen Relation erhalten, das heiĂt die Zerlegung muss verbundtreu und abhĂ€ngigkeitstreu sein.
Merkregeln
[Bearbeiten | Quelltext bearbeiten]- Ist die Relation in 1. Normalform und besteht der PrimĂ€rschlĂŒssel aus nur einem Attribut und gibt es keinen anderen SchlĂŒssel, der aus mehreren Attributen besteht, so liegt automatisch die 2. Normalform vor.
- Ist eine Relation in 2. Normalform und besitzt sie auĂer dem PrimĂ€rschlĂŒssel höchstens ein weiteres Attribut, das nicht Teil eines SchlĂŒssels ist, so liegt die Tabelle in 3. Normalform vor.
Literatur
[Bearbeiten | Quelltext bearbeiten]- Ramez Elmasri, Shamkant B. Navathe: Grundlagen von Datenbanksystemen. Pearson Studium, 2002, ISBN 3-8273-7021-3
- Alfons Kemper, Andre Eickler: Datenbanksysteme. Eine EinfĂŒhrung. Oldenbourg, MĂŒnchen 2004, ISBN 3-486-27392-2
- Stefan M. Lang, Peter C. Lockemann: Datenbankeneinsatz. Springer, Berlin u. a. 1995, ISBN 3-540-58558-3.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Der Königsweg: Normalisierung. Hochschule der Medien Stuttgart
- Grundlagen der Datenbanknormalisierung. Microsoft Hilfe und Support
- Normalisierung von Datenbanken. Richard-Wossidlo-Gymnasium Ribnitz-Damgarten
- ErklĂ€rung der Normalformen. Ziemerâs Informatik
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- â Philip M. Lewis, Arthur Bernstein, Michael Kifer: Databases and transaction processing: an application-oriented approach. Addison-Wesley, 2002, ISBN 0-201-70872-8, S. 232.
