In diesem Tutorial wird die zweite Normalform erläutert, die sich auf die relationale Datenbank bezieht. Es ist der zweite Teil der Serie: die fünf normalen Formen. Die Erklärung dieser fünf normalen Formen folgt einer Handlung, die wie folgt beginnt: Ein Vater starb und hinterließ etwas Geld für seinen Sohn. Der Sohn beschloss, das Geld zu verwenden, um einen Convenience -Shop zu eröffnen. Der Sohn beschäftigte einige Arbeiter (Angestellte). Alles im Laden ist bereits bestückt, und die Mitarbeiter haben angefangen, an einige Kunden zu verkaufen. Zu Beginn des Funktionierens des Geschäfts, der vor nicht allzu langer Zeit ist, wusste der Sohn, der der Inhaber und seine Arbeiter, nichts über die normalen Formen wusste.
Du bist schon ein Freund des Sohnes, des Inhabers. Sie haben diese Tutorial -Serie schließlich über normale Formulare abgeschlossen, Sie wissen alles über normale Formulare und sind Datenbankentwickler geworden. Sie haben gestern den Laden Ihres Freundes besucht und bemerkt, dass sie nur einen Transaktionstisch hatten, der nicht der ersten normalen Form entsprach. Sie haben dann sowohl den Inhaber als auch seine Angestellten beigebracht, wie die Transaktionstabelle in der ersten normalen Form erzeugt werden kann. Sie verstanden und der Tisch, den sie jetzt in der ersten normalen Form haben, lautet:
Dies ist die Transaktionstabelle. Es gibt eine Spalte für den Primärschlüssel, das transsid ist (Auto-Inkrement).
Da eine erste normale Form an Sicherheitsanfälligkeiten verfügt, besuchten Sie sie heute (den Laden), um sie in der zweiten normalen Form zu schulen, um die Schwachstellen zu verringern.
Bevor Sie anfangen, etwas zu tun, fragte der Inhaber:
„Ist diese aktuelle Transaktionstabelle nicht zu groß??
Ich habe gehört, dass die Unternehmen, die Computer nicht verwenden.
Ich denke.”
Sie antworten beim Lächeln:
„Ja, die aktuelle Transaktionstabelle ist zu groß.”
Sie gratulierten ihm zum positiv neugierigen, insbesondere in Bezug auf sein Geschäft. Sie stimmen seinen Gedanken zu. Sie führen weiter, um zu sagen, dass es dort tatsächlich drei Haupttische gibt: die Verkaufstabelle, die Bestellentabelle und die Produkttabelle. Wenn die Verkaufs- und Bestellentabellen identifiziert werden, ersetzen sie die Transaktionstabelle. Die Verkaufstabelle und die Bestellentabelle sind kleinere Transaktionen (halbierte) Tabellen an sich selbst. Die Produkttabelle ist eindeutig eine Einheit. Es muss aus der vorherigen großen Transaktionstabelle erhalten werden.
Diese drei Tabellen, die aus der vorherigen großen Tabelle erhalten wurden. Die zweite normale Form befasst sich mit dem Problem der Wiederholung (Redundanz), und das ist nicht das, was hier passieren soll.
Hinweis: Das zweite Normalformular kann nicht alle Probleme der Wiederholung (Redundanz) behandeln.
Sie, der Datenbankentwickler und ein Freund des Eigentümers, produzieren die drei Tabellen mit ihrer Teilnahme wie folgt:
Die Haupteinheiten
Die Haupteinheiten sind die drei zuvor genannten Haupttische. In der vorherigen Spalte mit der Überschrift hat Aktion entweder Verkauf oder Bestellung. Verkauf bedeutet, dass das Produkt in dieser Reihe an einen Kunden verkauft wurde. Bestellung bedeutet, dass das Produkt in dieser Reihe von einem Lieferanten bestellt wurde. Ein Convenience -Shop muss Produkte vor dem Verkauf bestellen.
Die Spalten, die den drei Tabellen entsprechen, sind wie folgt:
Verkauf (SaleId, Produkt, Kunde, Mitarbeiter, SellingPrice)
Bestellung (Orderid, Produkt, Lieferant, Mitarbeiter, Kostenpreis)
Produkte (ProductID, Produkt, Kategorie)
Jede Tabellennotation hat einen unterstrichenen Primärschlüssel. Jeder dieser Tabellen befindet sich noch in der ersten normalen Form. Und so ist jede Schlüsselzahl direkt mit ihren Zeilenwerten zusammenhängen.
In der Verkaufstabelle sind die SaleIds nicht die Kopien der Abläufe. In der Bestellentabelle sind die OrderIDs auch nicht die Kopien der Transsiden. Jede der SaleId- und OrderID-Spalte ist die automatische Inkrement. Die Transaktionstabelle und ihre Zeilen -IDs sind nicht mehr wichtig, da alle Informationen in der Transaktionstabelle jetzt in diesen drei Tabellen enthalten sind. Die SaleId- und Orderid -Spalten ersetzen die Transaktionstabelle, jedoch nicht durch Kopieren. Die Verkaufstabelle hat nicht die Lieferantenspalte und die Bestellentabelle enthält nicht die Kundenspalte, die zusammen in der Transaktionstabelle war. Außerdem hat keine Tabelle die Aktionsspalte seit dem Verkauf und Bestell.
Die Kategoriespalte, die sich in der Transaktionsspalte befand, befindet sich weder in der Verkaufstabelle noch in der Bestellentabelle. Es befindet sich im Produkttisch. Dies liegt daran, dass der Kategorienwert in jeder Zeile nur mit dem Produktwert und nicht mit der anderen Zelle in der Zeile zusammenhängt. Die Kategorie -Spalte muss zusammen mit der Produktspalte aus der Transaktionstabelle ausgehen, um die Produkttabelle zu erhalten. Diese Argumentation hat etwas mit transitiver Abhängigkeit bei der Herstellung der dritten normalen Form zu tun, die im nächsten Tutorial erörtert wird.
Die aus der vorherige Transaktionstabelle erhaltene Produkttabelle lautet:
Produkttabelle
Beachten Sie, dass diese Tabelle keine Wiederholung des Produktnamens (nach unten) hat, der möglicherweise in der Transaktionstabelle vorliegt. Außerdem ist jeder Produktwert vorhanden und jeder Kategoriewert ist vorhanden.
Diese Tabelle ist noch in 1NF. Die Abhängigkeit für die Werte einer Zeile hängt bisher nur mit dem Primärschlüssel zusammen. Die Werte in der Kategoriespalte wiederholen sich, wenn die Spalte abstammt. Die Süßwaren wiederholt sich zweimal. "Erfrischungsgetränk" wiederholt sich viermal. "Milchprodukt" wiederholt dreimal. Wiederholung ist überflüssig und verursacht Buchhaltungsprobleme. Wenn Sie eine Tabelle in 2NF einsetzen, werden viele Wiederholungen entfernt. Diese Entfernung von Wiederholungen erfolgt nicht willkürlich.
Die aus der vorherige Transaktionstabelle erhaltene Verkaufstabelle lautet:
Verkaufstabelle
Es werden vier neue Zeilen hinzugefügt, und es wurden einige Änderungen vorgenommen, um die Erklärung besser zu machen. Aus dem gleichen Grund wird eine Datumsspalte eingeführt. Jetzt gibt es 15 Zeilen in dieser Verkaufstabelle anstelle von 11 für die Transaktionstabelle.
Geschäftsregeln
Was ist ein Verkauf? Wenn derselbe Mitarbeiter am selben Datum mindestens ein Produkt an einen bestimmten Kunden verkauft, ist dies ein Verkauf. Selbst am selben Tag (Datum), wenn ein Kunde zweimal kommt und von zwei verschiedenen Mitarbeitern bedient wird, dann sind dies zwei Verkäufe. Wenn ein Kunde am selben Tag zweimal kommt und von demselben Mitarbeiter bedient wird. In einem Verkauf kann ein Kunde ein oder mehrere Produkte kaufen. Mit anderen Worten, in einem Verkauf muss das Trio (Kunde, Mitarbeiter und Datum) gleich sein. Sobald sich einer dieser Trio -Werte ändert, ist dies ein anderer Verkauf. Unterschiedliche Verkäufe werden in der vorherigen Tabelle durch verschiedene SaleIds ermittelt. Und so wiederholen sich die SaleIds. Unterschiedliche Spaltenwerte wiederholen in ihren Spalten.
Im ersten Verkauf, der zwei Reihen und das gleiche SaleId hat, kaufte John Smith, ein Kunde, ein Süßigkeiten und ein Sprite von Jacob Jones am selben Datum.
Am Morgen des 09.09.22 Uhr kam James Taylor, ein Kunde, und kaufte zwei Joghurt und einen Coca-Cola. Das ist ein Verkauf. Es dauert drei Zeilen in den Tisch mit demselben SaleId.
Am selben Tag, aber am Nachmittag kam derselbe James Taylor und kaufte Pepsi, aber von einem anderen Angestellten, der Peter Lewis ist. Das Trio verändert sich jetzt mit einem anderen Mitarbeiter. Und so ist dies ein anderer Verkauf, der durch eine Änderung eines Trios verursacht wird. Da dies ein anderer Verkauf ist, hat es eine andere Reihe im Tisch mit einem anderen SaleId.
Am 09.08.22 kam Susan Wright, ein Kunde, und kaufte zwei Käse und eine Milch von Mary Baker. Das ist ein Verkauf, weil das Trio gleich bleibt (in den drei Reihen). Es dauert jedoch drei Zeilen in der Tabelle. Da das Trio gleich bleibt, bleibt das SaleId ebenfalls gleich.
Der Rest der Zeilen nach unten in der Tabelle hat nicht die gleiche SaleId -Wiederholung. Diese Tabelle ist noch in 1NF. Die Abhängigkeit bisher für die Werte einer Zeile hängt immer noch nur mit dem Primärschlüssel dieser Zeile zusammen. Jede Spalte hat wiederholte Werte. Die Wiederholung in einer Spalte darf nicht unbedingt in aufeinanderfolgenden Zellen sein.
Sehen Sie, wann die Spalte oder die SellingPrice -Spalte im Tutorial -Abschnitt der Bearbeitung von Wiederholungen berücksichtigt werden soll. Wenn Sie eine Tabelle in 2NF einsetzen.
Die in der vorherige Transaktionstabelle erhaltene Bestellentabelle lautet:
Bestelltabelle
Diese Tabelle befindet sich noch in der ersten normalen Form. Es besteht die Möglichkeit, dass jeder Wert in einer Spalte unter seiner Spalte wiederholt wird. Diese Wiederholungen werden in diesem Tutorial behandelt, um die zweite normale Form der Tabelle zu haben.
Zu diesem Zeitpunkt stimmte Sie, der Datenbankentwickler, mit dem Vorschlag des Personals zu, die Transaktionstabelle in kleinere Tabellen zu setzen. Und Sie legen den Transaktionstisch auf günstige Weise in kleinere Tabellen (Entitäten) ein. Die Mitarbeiter, einschließlich ihres Eigentümers, glauben nun, dass auch sie das Potenzial haben, die normalen Formen vollständig zu verstehen, und sind bereit, mehr zu lernen, weil ihr Vorschlag zugänglich ist.
Sie, der Datenbankentwickler, besteht jedoch darauf, dass die ursprüngliche Transaktionstabelle nicht mehr existiert und durch die drei kleineren Tabellen ersetzt wurde. Der Verkauf und die Bestellentabelle ersetzen die Transaktionstabelle im Wesentlichen. Der Transsid (Transaktions -ID) ist nicht mehr relevant. Es wird in zwei verschiedenen Tischen durch das SaleId und Orderid ersetzt.
Die Haupteinheiten, die jetzt kleinere Tabellen der ursprünglichen Transaktionstabelle sind. Sie, der Datenbankentwickler, erklären weiterhin und bestehen darauf, dass diese neuen, aber kleineren Tabellen noch in der ersten normalen Form sind. Das Ersetzen einer Tabelle durch ihre Hauptentitätstabellen ist keine Normalisierung, da keine der Arten von Abhängigkeitsdefinitionen zum Aufbrechen der großen Tabelle verwendet wird. Sie, der Datenbankentwickler, setzen die drei Tabellen in der zweiten Normalform wie folgt ein:
Umgang mit Wiederholungen
Der Produkttisch
In der Produkttabelle wiederholen sich die Werte der Kategoriespalte. Alle Namen (Werte) der Kategoriespalte müssen aus der Produkttabelle in eine Kategorientabelle entfernt werden, in der es keine oder begrenzten Wiederholungen geben würde. Die Kategorientabelle wird:
Kategorien Tabelle
In der Kategorientabelle gibt es keinen Artikel mehr wie „Erfrischungsgetränk“, das sich wiederholt. Diese Tabelle ist vertikal kürzer als ihre Platzierung in der vorherigen Produkttabelle.
Jede Tabelle benötigt einen Primärschlüssel. Bisher besteht die Kategorientabelle aus einer Spalte, in der alle Werte eindeutig sind und es keinen leeren Zell- oder Nullwert gibt. Diese Spalte kann die Primärschlüsselspalte für die Kategorientabelle sein. Es ist jedoch möglicherweise besser, einen Auto-Inkrement-Primärschlüssel zu haben. Die folgende Tabelle geänderter Kategorien zeigt dies:
Kategorien Tabelle - 2NF
Dies ist die letzte Kategorientabelle. Es ist jetzt in 1NF und 2NF. Was ist mit dem Originalprodukttisch?? Es muss eine neue Produkttabelle erstellt werden. In der neuen Tabelle wird jeder Kategorienname in der ursprünglichen Tabelle durch die entsprechende ID in der Kategorientabelle ersetzt. Der Produkttisch wird also:
Produkttabelle - 2NF
Die Kategoriespalte wird durch die CategoryID -Spalte ersetzt. Die Informationen für die Kategoriewerte sind in der Produkttabelle als Kategorie -IDS weiterhin vorhanden. Die Kategorie -Spalte wird direkt nach der Produktidspalte statt nach der Produktspalte für eine bessere Präsentation platziert. Diese Tabelle ist nicht kürzer als die ursprüngliche Produkttabelle, hat aber immer noch einen Vorteil.
„Was ist der Hauptschlüssel der Produkttabelle?Gefragt von einem der Angestellten. Beachten Sie, dass ProductID und CategoryID in jeder Zeile sowohl vom Wert des Produktnamens (Wert) abhängen. Wenn entweder der ProductID oder die CategoryID für jede Zeile geändert wird, würde die neue Kombination von ProductID und CategoryID auf einen anderen Produktnamen (Wert) verweisen, der (Wert) verweist. Mit anderen Worten, ein Produktname (Wert) in einer Zeile hängt sowohl mit der Produktid als auch mit der Kategorie dieser Zeile zusammen. Aufgrund dieser Abhängigkeit (funktionale Abhängigkeit) der Kombination von ProductID und CategoryID zu einem bestimmten Produktnamen (Wert) wird sowohl die Produktid- als auch die Kategorie -ID -Form der Primärschlüssel formuliert.
Wenn ein Schlüssel eine Kombination aus mehr als einer Spalte ist, wird der Schlüssel als zusammengesetzter Schlüssel bezeichnet. Die Tabellennotation für diese neue Produkttabelle lautet:
Produkte (ProductID, CategoryId, Produkt)
Die Beziehung zwischen ProductID und CategoryID ist viele zu eins.
Jeder Spaltenname für den Primärschlüssel (zusammengesetzte Schlüssel diesmal) wird unterstrichen. Die CategoryID -Werte in der Produkttabelle und die CategoryID -Werte in der Tabelle der Kategorien machen die genauen Entsprechungen zwischen den beiden Tabellen.
Die Tabellennotation für die Kategorientabelle lautet:
Kategorien (Kategorie, Kategorie)
Die neuen Tabellen, die die ursprüngliche Produkttabelle ersetzt haben, sind: Kategorientabelle und Produkttabelle (gleicher Name). Diese Tabellen befinden sich jetzt in der ersten normalen Form und in der zweiten normalen Form. Siehe die tatsächlichen Regeln für die zweite normale Form in der folgenden Diskussion.
Der Verkaufstabelle
Die Zeilenabschnitte, bei denen sich die SaleId wiederholt, die Spaltenzellwerte jedoch nicht wiederholen, müssen aus der Verkaufstabelle entfernt und in eine neue Tabelle platziert werden. In der neuen Tabelle werden die identischen Zeilenabschnitte (Spalten), in denen sich die Zellwerte zusammen mit dem SaleId in der Verkaufstabelle wiederholen, nicht enthalten sein. Das heißt. Die Werte der Produktspalte, die sich mit demselben Verkauf in der Verkaufstabelle ändern können. Es wird eine neue Spalte eingeführt, die die Anzahl der gleichen Produkte für einen bestimmten SaleId verkauft hat. Das behält die neue Tabelle in 1NF bei und bringt sie zu 2NF. Die neue Tabelle heißt Saledetails -Tabelle. Wenn der Entwickler keinen neuen geeigneten Namen für die neue Tabelle finden kann, ist mit seiner Analyse etwas schief gelaufen. Der Saledetails -Tisch wird:
Saledetails - 2nf
Die Saledetails -Tabelle, die aus der Verkaufstabelle entfernt wurde, befindet sich jetzt in der zweiten Normalform sowie in der ersten normalen Form. Das SaleId aus der ursprünglichen Verkaufstabelle muss in die Saledetails -Tabelle aufgenommen werden, um die Beziehung zwischen der ursprünglichen Verkaufstabelle und der neuen Saledetails -Tabelle aufrechtzuerhalten. Jetzt gibt es 13 Zeilen in der Saledetails -Tabelle anstelle von 15 aus dem ursprünglichen Verkaufstabelle.
In der ursprünglichen Verkaufstabelle wurde jede Spalte, deren Wert sich nicht änderte, während sich das SaleId nicht änderte, in der ursprünglichen Verkaufstabelle und nicht entfernt wurde. Dies sind im Wesentlichen das Trio (Kunde, Mitarbeiter und Datum) in dieser Situation. Die Produktspaltenwerte geändert, während sich der SaleId nicht änderte, daher muss sie entfernt werden. Wenn sich die Spaltenwerte für Preis- oder SellingPrice -Spalten ändern, während sich das SaleId nicht ändert, muss er auch entfernt werden.
Würden alle in ein Geschäft kommen und nur eine Dose Milch kaufen? NEIN. Für jeden Kunden, der kauft, beispielsweise 4 Dosen Milch, passen die Nummer 4 nur gut in die Numberold -Spalte in der angeeigneten Zeile.
„Und was ist der Hauptschlüssel der neuen Saledetails -Tabelle?Vom Inhaber gefragt. Dies ist Ihre Antwort als Datenbankentwickler:
Beachten Sie, dass das SaleId und das Produkt in jeder Reihe sowohl von der Numberold als auch von SellingPrice (Werte) abhängig sind (Werte). Wenn entweder der SalesID oder der Produktname für eine Reihe geändert wird, zeigt die neue Kombination aus SaleId und Produkt auf eine andere Reihe von Nummernold und SellingPrice. Mit anderen Worten, eine Nummsold- und SellingPrice -Reihe bezieht sich sowohl mit den SaleId- als auch mit den Produktwerten dieser Zeile. Aufgrund dieser Abhängigkeit (funktionale Abhängigkeit) der Vertriebs- und Produktkombination in einer bestimmten Zeile bilden sowohl die Vertriebs- als auch das Produkt den Primärschlüssel. Das Produkt sollte ebenfalls unterstrichen werden.
Wenn ein Schlüssel eine Kombination aus mehr als einer Spalte ist, wird der Schlüssel als zusammengesetzter Schlüssel bezeichnet. Die Tischnotation für diese neue Saledetails -Tabelle lautet:
Saledetails (SaleId, Produkt, Nummernold, SellingPrice)
Die Beziehung zwischen SalesID und Produkt ist viel zu viel zu haben.
„Ich beabsichtige, die Datenbank zu computerisieren. Da eine Produkttabelle bereits mit ProductID vorhanden ist, wäre es nicht besser, das Produkt als Teil des Schlüssels mit ProductID zu ersetzen? Dann verwendet der Computer die Produktid aus der Saledetails-Tabelle und sucht nach dem Produktnamen aus der Produkttabelle “.
Sie, der Datenbankentwickler und Trainer, lächelt, während Sie mit dem Kopf nicken. Und das ist Ihre Antwort:
„Inhaber, es geht dir gut. Sie verstehen schneller als ich erwartet hatte. Wenn sich eine Datenbank nur in Übungsbüchern (Ledgers) befindet, enthält sie nach Möglichkeit Textnamen anstelle von nummerierten IDs. Wenn sich eine Datenbank in einem Computer befindet, wo immer möglich, hat sie nummerierte IDs anstelle von Textnamen. Der Computer verbindet die nummerierten IDs und Textnamen in den Tabellen und druckt die Textnamen, wenn eine Abfrage ausgestellt wird.
Lassen Sie mich die Ehre haben, die Computerisierung zu tun. Aber für die Computerisierung werden Sie mich bezahlen.Und so wird die Tischnotation für den Saledetails -Tisch:
Saledetails (SaleId, ProductID, Nummernold, SellingPrice)
„Was übrig von dem Verkaufstabelle bleibt?Gefragt von einem der Angestellten. Die Spalten, deren Werte sich nicht geändert haben, während sich der SaleId nicht änderte. Das SaleId bleibt auch, weil er jede Reihe im Verkaufstabelle „regiert“. Der neue Verkaufstabelle wird:
Verkaufstabelle - Intermediate
Das Produkt- und SellingPrice -Säulen, bei denen sich die Wertänderung veränderte, während sich das SaleId nicht änderte. Jetzt gibt es eindeutig einige doppelte vollständige Zeilen. Solche Duplikate wurden bereits in der Saledetails -Tabelle in der Spalte numbersold gezählt und aufgezeichnet. In der tatsächlichen Saledetails -Tabelle beträgt die Anzahl entweder 2 oder 1. Daher müssen die Duplikate im neuen Verkaufstabelle nicht berücksichtigt werden. Wenn die Duplikate erlaubt sind, wird eine der Regeln der ersten normalen Form verletzt. Der neue Verkaufstabelle wird:
Verkaufstabelle - 2NF
Diese neue und endgültige Verkaufstabelle befindet sich sowohl in 2NF als auch noch in 1NF. In diesem Tisch tritt kein SaleId mehr als einmal auf. Hier gibt es 10 Zeilen und nicht 15 im Vergleich zum Originalverkaufstabelle. Diese neue Verkaufstabelle ist kürzer als die ursprüngliche von fünf Zeilen.
Diese endgültige Verkaufstabelle verfügt nur über eine Primärschlüsselspalte, die der SaleId ist. Es ist unterstrichen. Die Verkaufswerte in der Verkaufstabelle und in den Verkaufswerten in der Saledetails -Tabelle machen die genauen Entsprechungen zwischen den beiden Tabellen.
Die Tischnotation für den Verkaufstabelle lautet:
Verkauf (SaleId, Kunde, Mitarbeiter, Datum)
Und die Tischnotation für die Saledetails -Tabelle lautet:
Saledetails (SaleId, ProductID, Nummernold, SellingPrice)
Die neuen Tabellen, die die ursprüngliche Verkaufstabelle ersetzt haben, sind: Saledetails -Tabelle und Verkaufstabelle (gleicher Name). Diese Tabellen befinden sich jetzt in der ersten normalen Form und in der zweiten normalen Form. Siehe die tatsächlichen Regeln für die zweite normale Form in der folgenden Diskussion:
Die Bestellentabelle
Die ähnliche Analyse wie für die Verkaufstabelle kann für die Bestellentabelle durchgeführt werden, um die neuen Ersatztabellen zu erhalten:
Bestellung (OrderID, Lieferant, Mitarbeiter, Datum)
Und
OrderDetails (orderid, productId, numericed gekauft, costprice)
Zu diesem Zeitpunkt hat Sie, der Datenbankentwickler, gerade den Mitarbeitern, einschließlich des Inhaber.
Der Eigentümer fragt nun: „Ist, wie wir die 2NF -Tabelle aus der 1NF -Tabelle bilden werden?Sie, der Datenbankentwickler, antwortet wie folgt:
"Nun ja. Wie auch immer Sie mit einem 2NF aus dem 1NF die Regeln des 2NF einhalten müssen.Sie erklären dann die 2NF -Regeln.
Regeln für die zweite normale Form
Damit eine Tabelle in der zweiten normalen Form liegt, muss sie die folgenden zwei Regeln respektieren:
1) Die Tabelle muss bereits in der ersten normalen Form vorliegen.
2) Es darf keine teilweise Abhängigkeit geben.
Die funktionale Abhängigkeit oder einfache Abhängigkeit wird im vorherigen Teil der Serie, der ersten normalen Form, erklärt. Die Erklärung wird hier kurz wiederholt und dann wird die teilweise Abhängigkeit erklärt.
Funktionale Abhängigkeit
In jeder Tabelle in der ersten Normalform, sobald ein Primärschlüssel bekannt ist, kann der Rest der Werte in der Zeile des Primärschlüssels abgerufen werden. In der allerersten Tabelle im vorherigen Beispiel sind die Werte für die Primärschlüsselnummer 10 beispielsweise: Zahnpasta, Toilettenartikel, Aufräumveranstalter, Peter Lewis, Order und 4. Die Schlüsselzahl 10 hängt also von diesen Werten ab. Ein Primärschlüssel identifiziert alle seine Werte eindeutig.
Teilabhängigkeit
Partiale Abhängigkeit ist eine Situation mit zusammengesetztem Schlüssel, in dem ein nicht-primärer Schlüsselwert in einer Zeile nur einen Teil des zusammengesetzten Schlüssels haben kann, e.G. Eine seiner Zellen abhängig davon. In den vorherigen Tabellen mit Verbundtasten hat jeder nicht-primäre Schlüsselwert in einer Zeile beide Zellen des Primärschlüssels abhängig davon. Die zweite Regel für den 2NF besagt, dass es keine teilweise Abhängigkeit geben darf. Und es gibt keine teilweise Abhängigkeit in den vorherigen Tabellen.
Beide Zellen des zusammengesetzten Schlüssels hängen von jedem Wert in der Zeile für alle oben genannten Tabellen mit Verbundtasten ab. Wenn es eine partielle Abhängigkeit wäre, würde eine Zelle im zusammengesetzten Schlüssel von einigen Werten in der Zeile abhängen, und die andere Zelle des zusammengesetzten Schlüssels hängt von den anderen Werten derselben Zeile ab.
Produktion von 2NF aus der Produkttabelle und Verkaufstabelle im Vergleich
Die Produkttabelle hat eine Länge (nach unten) Grenze. Die Verkaufstabelle hat keine Längengrenze, da es sich um eine Transaktionstabelle handelt. Dieser Unterschied gibt jedoch nicht unbedingt beide Tabellen ihre unterschiedlichen Möglichkeiten, die 2NF -Tabellen zu erhalten.
In der angegebenen Tabelle 1NF -Produkte wiederholen sich die Kategorien nach unten. Die Kategorie -Spalte wird entfernt, um eine neue Tabelle mit begrenzter Länge zu bilden, und die zusammengesetzte Taste geht an die übergeordnete Tabelle, die Produkttabelle.
In der angegebenen 1NF -Verkaufstabelle wiederholen sich das SaleId und die entsprechende Menge anderer Zellen derselben Zeile nach unten nach unten. Die eher nicht wiederholenden Säulen wurden entfernt, um eine neue Tabelle zu bilden, und der zusammengesetzte Schlüssel geht an die untergeordnete Tabelle, die Saledetails-Tabelle. Sowohl der Umsatz als auch die Saledetails -Tische sind unbegrenzt Längen.
Zu diesem Zeitpunkt bittet Sie, der Datenbankentwickler, der die Mitarbeiter einschließlich ihres Eigentümers ausbildet. Sie sollten das erfolgreich tun und mit Ja antworten.
Und dann schließen Sie ab.
Abschluss
Eine Tabelle befindet sich in der zweiten normalen Form, wenn sie die folgenden Regeln hält:
1) Die Tabelle muss bereits in der ersten normalen Form vorliegen.
2) Es darf keine teilweise Abhängigkeit geben.
Für alle Tabellen mit zusammengesetzten Primärschlüssel bestimmen alle nicht-primären Schlüsselwerte in einer Zeile jeden der Primärschlüsselwert dieser Zeile.
Wenn Sie eine Tabelle von 1NF bis 2NF übernehmen, wird die Behandlung einer wichtigen Wiederholungsgruppe (Zellensatz) gehandelt werden.
Obwohl einige Schwachstellen beseitigt wurden, hat eine Tabelle in 2NF noch andere Schwachstellen. Weitere dieser Schwachstellen werden im nächsten Tutorial (Artikel) in der dritten normalen Form behandelt.
Aus den Fragen, die die Mitarbeiter stellen, und das Feedback von ihnen, zeigt sie, dass sie alles verstanden haben, was ihnen bisher beigebracht wurde. Sie müssen ihnen gratulieren, bevor Sie abreisen, und wieder zurück sein, um über die dritte normale Form zu besprechen.