SQL Domain-Key-Normalform (DK / NF) und Abnormal-Formular

Nach einer SQL-Datenbank in der dritten Normalform ist, haben Sie die meisten beseitigt, aber nicht alle, die Chancen von Änderungsanomalien. Normalformen jenseits der dritten definiert sind, die wenigen verbleibenden Bugs zu zerquetschen.

Domain-Key-Normalform (DK / NF)

Boyce-Codd Normalform (BCNF), vierte Normalform (4NF) und fünfte Normalform (5NF) sind Beispiele für solche Formen. Jede Form beseitigt eine mögliche Modifikation Anomalie aber nicht Prävention aller möglichen Änderungsanomalien garantieren. Domain-Schlüssel Normalform sieht jedoch vor, eine solche Garantie.

Eine Beziehung ist in Domain-Schlüssel Normalform (DK / NF) wenn jede Einschränkung für die Beziehung ist eine logische Konsequenz der Definition von Schlüsseln und Domänen. EIN Zwang in dieser Definition ist, dass jede Regel präzise genug ist, dass Sie, ob oder nicht wahr, es ist auswerten kann. EIN Schlüssel ist eine eindeutige Kennung einer Reihe in einer Tabelle. EIN Domain ist die Menge der zulässigen Werte eines Attributs.

Schauen Sie sich diese Datenbank, die in 1NF ist, zu sehen, was Sie tun, um die Datenbank in DK / NF setzen müssen.

bild0.jpg

Tabelle: DER UMSATZ (Kundennummer, Produkt, Preis)

Schlüssel: Kundennummer

Einschränkungen:

  • Kundennummer bestimmt Produkt

  • Produkt bestimmt Preis

  • Kundennummer muss eine ganze Zahl> 1000 sein

Zur Durchsetzung der Constraint-3 (das Kundennummer muss eine ganze Zahl größer als 1000 sein), können Sie einfach die Domäne definieren Kundennummer diese Einschränkung zu integrieren. Das macht den Zwang eine logische Konsequenz aus der Domäne der Kundennummer Spalte. Produkt kommt drauf an Kundennummer, und Kundennummer ist ein Schlüssel, so dass Sie haben kein Problem mit Constraint 1, die eine logische Konsequenz aus der Definition des Schlüssels ist.

Constraint 2 ist ein Problem. Preis hängt davon ab, (ist eine logische Konsequenz aus) Produkt, und Produkt ist kein Schlüssel. Die Lösung ist die Tabelle SALES in zwei Tabellen zu teilen. Eine Tabelle verwendet Kundennummer als Schlüssel, und die andere Verwendungen Produkt als Schlüssel. Die Datenbank, außer in 3NF, ist auch in DK / NF.

Gestalten Sie Ihre Datenbanken, so dass sie in DK / NF sind, wenn möglich. Wenn Sie das tun können, Einschränkungen der Durchsetzung Schlüssel und Domain bewirkt, dass alle Beschränkungen eingehalten werden, und Änderungsanomalien sind nicht möglich. Wenn die Struktur einer Datenbank entwickelt, um Ihnen zu verhindern, dass es in DK / NF setzen, dann müssen Sie die Einschränkungen in das Anwendungsprogramm erstellen, die die Datenbank verwendet. Die Datenbank selbst nicht garantieren, dass die Einschränkungen erfüllt werden.

Abnorme Form

Wie im Leben, so in Datenbanken: manchmal abnormal zu sein zahlt sich aus. Sie können mit einer Normalisierung mitreißen und zu weit gehen. Sie können eine Datenbank in so viele Tabellen brechen, dass die ganze Sache unhandlich und ineffizient wird. Die Leistung kann abstürzen. Oft ist die optimale Struktur für Ihre Datenbank ist etwas denormalized.

In der Tat, praktische Datenbanken (die wirklich großen, sowieso) sind so gut wie nie den ganzen Weg nach DK / NF normalisiert. Sie möchten die Datenbanken zu normalisieren Sie so viel wie möglich gestalten, aber die Möglichkeit der Beschädigung von Daten zu beseitigen, die von Änderungsanomalien führt.

Nachdem Sie die Datenbank so weit wie möglich zu normalisieren, einige Auslagerungen als Trockenlauf zu machen. Wenn die Leistung nicht zufriedenstellend ist, prüfen Sie Ihr Design, um zu sehen, ob eine selektive Denormalisierung Leistung verbessern würde, ohne Integrität zu opfern. Durch die sorgfältige Zugabe von Redundanz an strategischen Standorten und Denormalisierung gerade genug, Sie können in einer Datenbank gelangen, die sowohl effizient als auch sicher vor Anomalien ist.

Menü