Der Normalisierungsprozess besteht hauptsächlich darin, die Mängel von Einfügungsanomalien, Löschanomalien und hoher Redundanz in der logischen Struktur der Datenbank zu überwinden. Durch die Datenbanknormalisierung können Datenbankdesigner die aktuelle Datenstruktur innerhalb der Organisation besser verstehen, was letztendlich zu einer Reihe von Datenentitäten führt. Durch die Datenbankstandardisierung kann die Datenbankredundanz durch den Entwurf von Datenbanktabellen wirksam reduziert werden.
Datenbanknormalisierungsprozess
Standardisierung relationaler Datenbanken ist einfach die Standardisierung von Tabellen.
Notwendigkeit der Standardisierung:
Entsprechend den Anforderungen des Projekts erstellen wir entsprechende Datenbanktabellen, um die Speicherung der Daten im Projekt abzuschließen. Dies ist zu einem festen Prozess für die Durchführung von Projekten geworden. Wenn Sie sich jedoch tatsächlich mit geschäftlichen Anforderungen befassen, werden Sie feststellen, dass Ihre Tabelleneinstellungen unangemessen sind, was zu wiederholter Speicherung von Daten, Einfügungsausnahmen, Löschausnahmen, Aktualisierungsausnahmen und anderen Problemen führt. Zu diesem Zeitpunkt ist eine Neuplanung der Tabelle erforderlich, was eine Verschwendung von Zeit, Arbeitskraft und finanziellen Ressourcen darstellt und sehr unwirtschaftlich ist. Daher ist eine Standardisierung sehr wichtig. Deshalb werde ich Ihnen heute beibringen, wie Sie die Tabelle standardisieren.
Bevor ich die normalisierte Datenbankmethode unterrichte, möchte ich Ihnen zunächst das Wissen vorstellen:
Wichtige Wissenspunkte Funktionale Abhängigkeit
Die Definition ist möglicherweise etwas schwierig zu verstehen: Die funktionale Abhängigkeit beschreibt eine Zuordnungsbeziehung zwischen zwei Mengen, hier beispielsweise y = x^2 Für x entspricht ein x einem y-Wert, es gibt jedoch keine Situation, in der ein x mehreren y-Werten entspricht. Daher kann man sagen, dass die y-Funktion von x abhängt, aber für y ein y-Wert vorhanden ist von mehreren x-Werten, sodass x funktional nicht von y abhängt. Das ist funktionale Abhängigkeit.
Als nächstes führen wir einige spezielle funktionale Abhängigkeiten ein:
Vollständige funktionale Abhängigkeit
Definition:
Wenn X->Y und für keine echte Teilmenge X' von X existiert, dann ist X'- >Y Wir sagen, dass die funktionale Abhängigkeit von X->Y eine vollständige funktionale Abhängigkeit ist.
Eine kurze Erklärung: Funktion z = x + y, für z: Die z-Funktion hängt von x und y ab, aber z hängt nicht nur von x oder nur von y ab, was bedeutet, dass die z-Funktion von x und dieser Abhängigkeit von y abhängt ist eine vollständige funktionale Abhängigkeit.
Partielle funktionale Abhängigkeit:
Definition:
Wenn X->Y, aber Y nicht vollständig von X abhängt, wird diese Abhängigkeit als teilweise vollständige Abhängigkeit bezeichnet. Das heißt: Die Funktion z = x + 0y kann als betrachtet werden, das heißt, die z-Funktion hängt von x und y ab, aber z hängt ausschließlich von x ab, dann handelt es sich um eine teilweise funktionale Abhängigkeit.
Transitive funktionale Abhängigkeit:
Definition:
Wenn X->Y, Y -> Z und es nicht wahr ist, ist Y->X auch nicht wahr. Dann soll die Z-Übertragungsfunktion von X abhängen.
Das ist relativ einfach. Die Funktionsgruppe z = x^2, x = 2y lässt sich zu z = 4y ^2 vereinfachen. Es ist leicht zu erkennen: z ist eine Funktion, die von x abhängt, x hängt von y ab z->x Wenn nicht, handelt es sich um eine transitive funktionale Abhängigkeit.
Wichtiger Wissenspunkt zwei-----Schlüssel
Kandidatenschlüssel: Ein Attribut (Feld) oder eine Attributgruppe (mehrere Felder) kann andere Elemente im relationalen Schema (Tabelle) vollständig bestimmen. Eigenschaften ( Felder). Das heißt, andere Attribute (Felder) sind vollständig von diesem Attribut (Feld) oder dieser Attributgruppe (mehrere Felder) abhängig.
Primärschlüssel: Wenn es mehr als einen Kandidatenschlüssel gibt, wählen Sie einen davon als Primärschlüssel aus. Der Wert des Attributs oder der Attributgruppe, das als Primärschlüssel in jedem Tupel (Zeile) im Beziehungsschema (Tabelle) ausgewählt wurde, darf nicht wiederholt werden und der Wert ist null.
Hauptattribute: Die in jedem Kandidatenschlüssel gemeldeten Attribute werden als Hauptattribute bezeichnet. Wenn der Kandidatenschlüssel aus mehreren Attributen besteht, ist jedes Attribut in diesen Attributgruppen ein Primärattribut.
Nicht-primäre Attribute: Attribute, die in keinem Schlüssel enthalten sind, werden als nicht-primäre Attribute bezeichnet.
Fremdschlüssel: Wenn ein Attribut oder eine Attributgruppe nicht der Primärschlüssel im aktuellen relationalen Schema (Tabelle) ist, sondern als Primärschlüssel in einem anderen relationalen Schema (Tabelle) dient, dann wird das Attribut oder die Attributgruppe als a bezeichnet Fremdschlüssel.
Nachdem wir die oben genannten grundlegenden Wissenspunkte eingeführt haben, beginnen wir mit dem Erlernen des Standardisierungsprozesses von Datenbanktabellen:
Wenn Sie eine Tabelle standardisieren möchten, benötigen Sie zunächst einen Standard, um zu messen, ob die Tabelle standardisiert wurde. Dieser Standard ist ---- Paradigma.
Es gibt sechs Normalformen: erste Normalform (1NF), zweite Normalform (2NF), dritte Normalform (3NF), BC-Normalform (BCNF), vierte Normalform (4NF) und fünfte Normalform (5NF).
In den oben genannten sechs Paradigmen müssen wir unter normalen Umständen die Tabelle auf BCNF standardisieren, was perfekt ist. In realen Projekten muss sie nur 3NF erreichen.
Im Folgenden liegt der Schwerpunkt auf den ersten vier Normalformen:
Erste Normalform: Alle Attribute im relationalen Schema R sind untrennbare Datenelemente.
Um es einfach auszudrücken: Solange Sie eine Tabelle erstellen können, erfüllt diese Tabelle bereits die erste Normalform. Zum Beispiel die Studententabelle (student_id, course_id, student_name, age, sex, grade, sdept, sdept_director). In dieser Tabelle ist es offensichtlich, dass das Notenelement gemeinsam von student_id und course_id bestimmt wird, daher sollten diese beiden Elemente kombiniert werden als Primärschlüssel.
Zweite Normalform: Basierend auf der Erfüllung der ersten Normalform hängt die Erfüllung nicht-primärer Attribute vollständig vom Primärschlüssel von R ab.
Dies erfordert die Verwendung des vorherigen Inhalts, um festzustellen, ob die nicht-primären Attribute vollständig vom Primärschlüssel abhängig sind. Wenn Sie nicht zufrieden sind, wird es schwer Ändern Sie die Struktur der Tabelle. Beispielsweise verwendet die Studententabelle (student_id, course_id, student_name, age, sex, grade, sdept_id, sdept_director) die Kombination aus student_id und course_id als Primärschlüssel, für andere Attribute wie Name, Alter und Geschlecht ist dies jedoch der Fall Sie sind vollständig vom Attribut student_id abhängig, daher sind sie teilweise von student_id und course_id als Primärschlüssel abhängig. Dies entspricht nicht der Definition der zweiten Normalform, daher sollten wir die Note herausnehmen und diese große Tabelle in zwei kleine Tabellen aufteilen: student(student_id, name, age, sex, sdept_id, sdept_director), student_score(student_id, course_id , grade);
Dritte Normalform: Entfernen Sie transitive Abhängigkeiten und erfüllen Sie gleichzeitig die zweite Normalform.
Zum Beispiel: Studententabelle (student_id, student_name, age, sex, sdept, sdept_director), offensichtlich bestimmt jedes Hauptfach einen professionellen Direktor, daher hängt die Übertragung von sdept_director von student_id ab und sollte daher in eine andere Tabelle Student (student_id, student_name) aufgeteilt werden , Alter, Geschlecht) und sdept(sdept_id, sdept_name, sdept_director) und erfüllen somit die dritte Normalform.
BC-Paradigma: Wenn Sie die dritte Normalform erfüllen, müssen Sie die folgenden drei Punkte erfüllen:
1 Alle Primärattribute sind vollständig von anderen Kandidatenschlüsseln abhängig, die sich selbst nicht einschließen Das primäre Attribut ist vollständig von jedem Kandidatenschlüssel abhängig.
3 Kein Attribut ist vollständig funktional von einem Satz nicht-primärer Attribute abhängig.
Die vorherigen drei Paradigmen haben alle verschiedene Einschränkungen für nicht-primäre Attribute auferlegt. Das BC-Paradigma legt dann Einschränkungen für primäre Attribute fest und löst das Problem der teilweisen Abhängigkeit zwischen primären Attributen Attribute sind vollständig von nicht-primären Attributen abhängig.
Der Primärschlüssel unserer Schülertabelle ist student_id, daher ist das Hauptattribut student_id. Offensichtlich sind die ersten beiden erfüllt, da der Name des Schülers wiederholt werden kann, sodass keine funktionale Abhängigkeit zwischen student_id besteht und Student_Name-Beziehung, sodass die Student-Tabelle die BC-Normalform erfüllt.
MySQL-Tutorial
“Das obige ist der detaillierte Inhalt vonWas berücksichtigt der Normalisierungsprozess hauptsächlich in der logischen Struktur der Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!