Wie mit SQL Änderung Anomalies und Normalformen Deal

Eine Reihe von Problemen - genannt Änderungsanomalien - kann eine Datenbank plagen, wenn Sie nicht richtig die SQL-Datenbank zu strukturieren. Um diese Probleme zu vermeiden, können Sie normalisieren die Datenbankstruktur. Normalisierungs Regel bringt eine Datenbanktabelle in zwei einfachere Tabellen aufzuteilen.

Änderungsanomalien so genannt werden, weil sie durch die Zugabe von, Änderung oder Löschung von Daten aus einer Datenbanktabelle erzeugt werden.

bild0.jpg

Nehmen wir zum Beispiel, dass Ihr Unternehmen Haushaltsreinigungsprodukte verkauft, und Sie laden alle Kunden den gleichen Preis für jedes Produkt. Die Tabelle SALES hält alles für Sie Spur. Angenommen, der Kunde 1001 weg bewegt und nicht mehr ein Kunde. Sie kümmern sich nicht, was er in der Vergangenheit gekauft hat, weil er nichts von dir wieder in Gang zu kaufen. Sie wollen seine Zeile aus der Tabelle zu löschen.

Wenn Sie dies tun, aber verlieren Sie nicht nur die Tatsache, dass der Kunde 1001 hat Wäsche gekauft wasch- Sie auch die verlieren, dass Waschmittel kostet 12 $. Diese Situation wird als ein Löschen Anomalie. Bei der Streichung einer Tatsache (die Kunde 1001 Waschmittel gekauft), können Sie eine andere Tatsache versehentlich löschen (das Waschmittel kostet $ 12).

Sie können die gleiche Tabelle eine Einführungs Anomalie zu illustrieren. Zum Beispiel: Angenommen, Sie Stick Deodorant auf Ihre Produktlinie zu einem Preis von $ 2 hinzufügen möchten. Sie können diese Daten nicht an die Tabelle SALES hinzufügen, bis ein Kunde Stick Deo kauft.

Das Problem mit der Tabelle SALES ist, dass diese Tabelle befasst sich mit mehr als eine Sache: Es deckt nicht nur, welche Produkte Kunden kaufen, sondern auch, was die Produkte kosten. Um die Anomalien zu beseitigen, müssen Sie die Tabelle SALES in zwei Tabellen aufgeteilt, die jeweils den Umgang mit nur einem Thema oder eine Idee.

image1.jpg
  • CUST_PURCH, die mit dem einzigen Gedanken von Kundenkäufen beschäftigt.

  • PROD_PRICE, die mit der einzigen Idee von Produktpreisen beschäftigt.

Sie können nun die Zeile für Kunden 1001 aus CUST_PURCH löschen, ohne das zu verlieren, dass Waschmittel kostet 12 $. (Die Kosten für Waschmittel wird nun in PROD_PRICE gespeichert.) Sie auch Stick Deodorant hinzufügen können, um PROD_PRICE ob jemand das Produkt gekauft hat. Kaufinformation wird an anderer Stelle, in der CUST_PURCH Tabelle gespeichert.

Der Prozess der Unterbrechung einer Tabelle in mehrere Tabellen auf, von denen jede ein einziges Thema hat, genannt wird Normalisierung. Eine Normalisierung Operation, die ein Problem löst, kann nicht andere Probleme betreffen. Sie können mehrere aufeinander folgende Normalisierungsoperationen durchführen müssen, um jede resultierende Tabelle auf ein einzelnes Thema zu reduzieren.

Jede Datenbanktabelle sollte mit einem umgehen - und nur ein - Hauptthema. Manchmal Bestimmung (wie Sie wahrscheinlich erraten), dass eine Tabelle wirklich befasst sich mit zwei oder mehr Themen kann schwierig sein.

Sie können Tabellen nach den Typen von Änderungsanomalien klassifizieren, denen sie unterworfen sind. In einem 1970 Papier, identifiziert E. F. Codd drei Quellen der Änderungsanomalien und der ersten definierten, zweiten und dritten Normalformen (1NF, 2NF, 3NF) als Heilmittel für solche Arten von Anomalien. In den folgenden Jahren Codd und andere entdeckt zusätzliche Arten von Anomalien und bestimmte neue Normalformen mit ihnen zu beschäftigen.

Die Boyce-Codd Normalform (BCNF), die vierte Normalform (4NF) und die fünfte Normalform (5NF) jeweils gewährt einen höheren Grad an Schutz gegen unbefugte Veränderungen Anomalien. Erst 1981 hat jedoch ein Papier, geschrieben von Ronald Fagin, Domain-Schlüssel Normalform oder DK / NF beschreiben. Diese letzten normalen Formulars können Sie Garantie dass eine Tabelle von Änderungsanomalien frei.

Die Normalformen sind verschachtelt in dem Sinne, dass eine Tabelle, die automatisch in 2NF ist, ist ebenfalls in 1NF. In ähnlicher Weise ist eine Tabelle, in 3NF automatisch in 2NF, und so weiter. Für die meisten praktischen Anwendungen ist eine Datenbank, in 3NF setzen ausreichend, um ein hohes Maß an Integrität zu gewährleisten. Um absolut sicher sein, seiner Integrität, müssen Sie die Datenbank in DK / NF setzen.

Nachdem Sie eine Datenbank so viel wie möglich zu normalisieren, können Sie ausgewählte denormalizations um die Leistung zu verbessern. Wenn Sie das tun, bewusst sein, die Arten von Anomalien, die jetzt möglich werden können.

Menü