Normalisierung: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Kategorie:Informatik Kategorie:Informatik-Abitur Die Normalisierung von relationalen Datenbank-Schemata dient dazu, Redundanzen und Anomalien (Einfüg…“) |
|||
Zeile 7: | Zeile 7: | ||
Die Normalisierung wird hier an folgendem Beispiel aufgezeigt: | Die Normalisierung wird hier an folgendem '''Beispiel''' aufgezeigt: | ||
* Kurs(<u>id</u>, bezeichnung, schuljahr, halbjahr, lehrer-kuerzel und -name) | * Kurs(<u>id</u>, bezeichnung, schuljahr, halbjahr, lehrer-kuerzel und -name) | ||
Zeile 19: | Zeile 19: | ||
Ein '''Verstoß''' gegen die erste Normalform liegt vor, wenn der Primärschlüssel nicht eindeutig ist oder wenn sich Attribute weiter zerlegen lassen. | Ein '''Verstoß''' gegen die erste Normalform liegt vor, wenn der Primärschlüssel nicht eindeutig ist oder wenn sich Attribute weiter zerlegen lassen. | ||
Im Beispiel ist das Attribut ''lehrer-kuerzel und -name'' nicht atomar; es lässt sich zerlegen in ''lehrer-kuerzel'' und ''lehrer-name''. | Im Beispiel ist das Attribut ''lehrer-kuerzel und -name'' nicht atomar; es lässt sich zerlegen in ''lehrer-kuerzel'' und ''lehrer-name''. | ||
Das Schema in 1. Normalform lautet: | Das Schema in 1. Normalform lautet: | ||
Zeile 32: | Zeile 34: | ||
Ein '''Verstoß''' gegen die zweite Normalform liegt also vor, wenn es ein Attribut (oder mehrere Attribute) gibt, die ''nur von einem Teil'' des Primärschlüssels abhängen. | Ein '''Verstoß''' gegen die zweite Normalform liegt also vor, wenn es ein Attribut (oder mehrere Attribute) gibt, die ''nur von einem Teil'' des Primärschlüssels abhängen. | ||
Das heißt: Eine Tabelle mit einem Primärschlüssel aus nur einem Attribut ist automatisch in zweiter Normalform. | Das heißt: Eine Tabelle mit einem Primärschlüssel aus nur einem Attribut ist automatisch in zweiter Normalform. | ||
Zeile 40: | Zeile 43: | ||
In der Tabelle ''Leistung'' dagegen hängen ''name'' und ''vorname'' nur von ''schueler_id'' ab; d.h. hier liegt ein Verstoß vor. | In der Tabelle ''Leistung'' dagegen hängen ''name'' und ''vorname'' nur von ''schueler_id'' ab; d.h. hier liegt ein Verstoß vor. | ||
Der lässt sich beheben, indem man die Attribute, die gegen die 2. NF verstoßen, in eine eigene Tabelle auslagert. | Der lässt sich beheben, indem man die Attribute, die gegen die 2. NF verstoßen, in eine eigene Tabelle auslagert. | ||
Das Schema in 2. Normalform lautet: | Das Schema in 2. Normalform lautet: |
Version vom 31. Januar 2013, 10:15 Uhr
Die Normalisierung von relationalen Datenbank-Schemata dient dazu, Redundanzen und Anomalien (Einfüge-Anomalie, Änderungs-Anomalie, Lösch-Anomalie) zu vermeiden.
Die Normalisierung ist ein technisches Verfahren, mit dem Datenbank-Schemata in einen "guten" Zustand gebracht werden können. Datenbank-Schemata, die aus einer guten Entity-Relationship-Modellierung hervorgegangen sind, sollten keiner Normalisierung mehr bedürfen.
Die Normalisierung wird hier an folgendem Beispiel aufgezeigt:
- Kurs(id, bezeichnung, schuljahr, halbjahr, lehrer-kuerzel und -name)
- Leistung(↑kurs_id, schueler_id, name, vorname, note)
Erste Normalform
Eine Tabelle befindet sich in der ersten Normalform, wenn alle Attribute atomar vorliegen und ein eindeutiger Primärschlüssel angegeben ist.
Atomar heißt, dass sich ein Attribut nicht in weitere Attribute unterteilen lässt.
Ein Verstoß gegen die erste Normalform liegt vor, wenn der Primärschlüssel nicht eindeutig ist oder wenn sich Attribute weiter zerlegen lassen.
Im Beispiel ist das Attribut lehrer-kuerzel und -name nicht atomar; es lässt sich zerlegen in lehrer-kuerzel und lehrer-name.
Das Schema in 1. Normalform lautet:
- Kurs(id, bezeichnung, schuljahr, halbjahr, lehrer_kuerzel, lehrer_name)
- Leistung(↑kurs_id, schueler_id, name, vorname, note)
Zweite Normalform
Eine Tabelle befindet sich in der zweiten Normalform, wenn die erste Normalform erfüllt ist und jedes nicht dem Primärschlüssel angehörige Attribut zwar vom Primärschlüssel, aber nicht von Teilen des Primärschlüssels abhängt.
Ein Verstoß gegen die zweite Normalform liegt also vor, wenn es ein Attribut (oder mehrere Attribute) gibt, die nur von einem Teil des Primärschlüssels abhängen.
Das heißt: Eine Tabelle mit einem Primärschlüssel aus nur einem Attribut ist automatisch in zweiter Normalform.
Im Beispiel ist die Tabelle Kurs in zweiter Normalform.
In der Tabelle Leistung dagegen hängen name und vorname nur von schueler_id ab; d.h. hier liegt ein Verstoß vor. Der lässt sich beheben, indem man die Attribute, die gegen die 2. NF verstoßen, in eine eigene Tabelle auslagert.
Das Schema in 2. Normalform lautet:
- Kurs(id, bezeichnung, schuljahr, halbjahr, lehrer_kuerzel, lehrer_name)
- Leistung(↑kurs_id, ↑schueler_id, note)
- Schueler(schueler_id, name, vorname)