Zum Inhalt springen

Informatik · Klasse 11–13 · aktualisiert

Datenbanknormalisierung: 1NF, 2NF und 3NF

Du lernst, 1NF, 2NF und 3NF zu unterscheiden, Abhängigkeiten zu erkennen, Tabellen zu zerlegen und Anomalien zu vermeiden.

0 von 9 Aufgaben gelöst

Datenbanknormalisierung: 1NF, 2NF und 3NF

Kurz gesagt

Normalisierung zerlegt Tabellen, um Redundanz und Anomalien zu vermeiden. Die 1NF verlangt atomare Werte, die 2NF verbietet Abhängigkeiten von einem Teil des Schlüssels, die 3NF verbietet Abhängigkeiten zwischen Nichtschlüsselattributen.

Stell dir eine Tabelle vor, in der der Albumtitel in jeder Zeile einer CD steht. Ändert jemand den Titel nur in einer Zeile, passen die Daten nicht mehr zusammen. Solche Fehler verhindert die Normalisierung. Du lernst hier, wie du sie erkennst und beseitigst.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

4 Abschnitte

Eine Normalform ist ein Regelsatz für Tabellen. Jede Normalform schließt die Regeln der vorherigen ein: Wer die 3NF erfüllt, erfüllt auch die 2NF und die 1NF. Spalten heißen auch Felder oder Attribute. Eine Tabelle heißt in der Datenbanktheorie auch Relation.

Zur 1NF: Jedes Attribut muss einen atomaren Wertebereich haben, und die Tabelle muss frei von Wiederholungsgruppen sein. Atomar heißt: Zusammengesetzte, mengenwertige oder geschachtelte Wertebereiche sind nicht erlaubt. Eine Adresse darf deshalb nicht als einzelnes Attribut stehen, sondern wird in PLZ, Ort, Straße und Hausnummer aufgeteilt, wenn der zugrunde liegende Prozess es erfordert und erlaubt. Eine Wiederholungsgruppe ist zum Beispiel eine Spalte Telefon, die mehrere Telefonnummern enthält. Auch eine Spaltengruppe Telefon1, Telefon2, Telefon3 kann eine sein. In einer Fassung der Regel (bei Wikibooks) gehört zur 1NF außerdem, dass jede Tabelle einen Primärschlüssel enthält.

Beispiel für Verstöße: In einer Tabelle CD_Lied enthält das Feld Album die Werte Interpret und Albumtitel zusammen. Das Feld Titelliste enthält eine Menge von Titeln. Beide Felder verletzen die 1NF.

Zur 2NF: Die Tabelle muss in 1NF sein, und kein Nichtprimärattribut darf von einer echten Teilmenge eines Schlüsselkandidaten funktional abhängen. Ein Nichtprimärattribut (auch Nichtschlüsselattribut) ist ein Attribut, das nicht Teil eines Schlüsselkandidaten ist. Was ein Schlüsselkandidat ist, siehst du im nächsten Abschnitt. Beispiel: CD_Lied hat nach dem Aufteilen von Album und Titelliste den Schlüssel aus CD_ID und Track. Albumtitel, Interpret, Gründungsjahr und Erscheinungsjahr hängen nur von CD_ID ab, nicht von Track. Das verletzt die 2NF. Besteht jeder Schlüsselkandidat nur aus einem einzigen Attribut, erfüllt eine Tabelle in 1NF automatisch die 2NF.

Zur 3NF: Die Tabelle erfüllt die 2NF, und die Nichtschlüsselattribute hängen nicht funktional voneinander ab. Ein Nichtschlüsselattribut darf nur direkt von einem Primärschlüssel oder Schlüsselkandidaten abhängen. Beispiel: In der Tabelle CD (CD_ID, Albumtitel, Interpret, Gründungsjahr, Erscheinungsjahr) lässt sich der Interpret aus der CD_ID bestimmen. Das Gründungsjahr hängt vom Interpreten und damit transitiv von der CD_ID ab. Das verletzt die 3NF.

Definition

Atomar

Ein Attributwert ist atomar, wenn er nicht zusammengesetzt, mengenwertig oder geschachtelt ist. Er lässt sich nicht in weitere sinnvolle Teile aufspalten.

NormalformRegelBeispiel für einen Verstoß
1NFAtomare Werte, keine WiederholungsgruppenCD_Lied: Das Feld Titelliste enthält eine Menge von Titeln.
2NF1NF, und kein Nichtschlüsselattribut hängt von einem Teil des Schlüssels abCD_Lied: Albumtitel hängt nur von CD_ID ab, nicht von Track.
3NF2NF, und Nichtschlüsselattribute hängen nicht voneinander abTabelle CD: Das Gründungsjahr hängt vom Interpreten ab.

Teste dich

MittelEine Tabelle ist in 1NF, und jeder ihrer Schlüsselkandidaten besteht nur aus einem einzigen Attribut. Was folgt daraus?

Alles auf einen Blick

Datenbanknormalisierung

  • 1NF

    Jedes Attribut ist atomar, und es gibt keine Wiederholungsgruppen.

  • 2NF

    Kein Nichtschlüsselattribut hängt nur von einem Teil eines Schlüsselkandidaten ab.

  • 3NF

    Nichtschlüsselattribute hängen nicht voneinander ab, sondern nur direkt vom Schlüssel.

  • Zerlegen

    Abhängige Daten kommen in eine eigene Tabelle. Ihr Schlüssel bleibt als Fremdschlüssel in der alten Tabelle.

  • Anomalien

    Mehrfach gespeicherte Daten führen zu Widersprüchen. Normalisierung speichert Informationen nur einmal.

  • Grenze

    In speziellen Anwendungsfällen kann es sinnvoll sein, auf Normalisierung zu verzichten.

Musteraufgabe · Schritt für Schritt

Adressen in die 3NF zerlegen (ausgedachtes Beispiel mit der Annahme: zu jeder PLZ gibt es nur einen Ort)

  1. 1Ausgangstabelle tbl_AdressenAlles mit den Spalten Firma, Straße, PLZ und Ort. Die Tabelle tbl_Adressen bekommt später die eindeutige Nummer AdressID als Primärschlüssel.
  2. 2Annahme für dieses Beispiel: Zu jeder Postleitzahl gibt es nur einen Ortsnamen. Dann gilt PLZ → Ort.
  3. 3Mit AdressID als Primärschlüssel hängt die PLZ von AdressID ab und der Ort von der PLZ: AdressID → PLZ → Ort. Der Ort hängt also über ein Nichtschlüsselattribut vom Schlüssel ab. Das ist eine transitive Abhängigkeit und verletzt die 3NF.
  4. 4Zerlegung: tbl_Adressen mit AdressID, Firma, Straße und PLZ, dazu tbl_PLZOrt mit PLZ und Ort.
  5. 5Schlüssel: AdressID ist der Primärschlüssel von tbl_Adressen. Der Schlüssel der neuen Tabelle tbl_PLZOrt ist die PLZ. Sie bleibt in tbl_Adressen als Fremdschlüssel erhalten.
  6. 6Grenze: Die Annahme trifft in Deutschland sehr oft nicht zu, weil eine Postleitzahl mehrere Ortsnamen haben kann.

Fehler finden

Prüfe die Aussagen zu Kunden und Aufträgen In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Hängt der Albumtitel nur von CD_ID ab, einem Teil des Schlüssels aus CD_ID und Track, verletzt das die . In der Tabelle CD mit dem Primärschlüssel CD_ID hängt das Gründungsjahr vom Interpreten ab, und der Interpret von CD_ID. Das nennt man eine Abhängigkeit. CD_ID in der Tabelle Lied ist ein Fremdschlüssel, der auf den Primärschlüssel der Tabelle verweist.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Datenbanknormalisierung

LeichtIn einer Tabelle enthält die Spalte Telefon bei manchen Personen mehrere Telefonnummern. Was liegt vor?
MittelDie Tabelle Fahrzeuge wird zerlegt: Hersteller und Typ kommen in die neue Tabelle Fahrzeugtypen. Was passiert mit diesen Spalten in Fahrzeuge?
SchwerIn der Tabelle CD (mit den Spalten Interpret und Gründungsjahr) wird eine neue CD eines schon vorhandenen Interpreten eingetragen. Was ist die Folge?

Weiterlesen in Informatik