Relationales Datenbankdesign: Umfassender Leitfaden
Relationales Datenbankdesign ist der Grundstein effektiver Datenbanksysteme. Der Schwerpunkt liegt auf der effizienten Organisation von Daten bei gleichzeitiger Reduzierung von Redundanz und Wahrung der Datenintegrität. Dieser Artikel bietet eine gründliche Untersuchung der Zerlegung, Normalisierung, funktionalen Abhängigkeiten und Schlüssel und stellt sicher, dass Sie ein umfassendes Verständnis der Entwurfsprinzipien relationaler Datenbanken haben.
Zerlegung im relationalen Datenbankdesign
Zerlegung ist der Prozess der Aufteilung einer großen Beziehung (Tabelle) in kleinere, sinnvolle Beziehungen, um Redundanz zu beseitigen, die Konsistenz zu verbessern und die Leistung zu optimieren. Es ist ein entscheidender Aspekt der Normalisierung.
Arten der Zersetzung
-
Verlustbehaftete Zerlegung:
- Eine Zerlegung ist verlustbehaftet, wenn die ursprüngliche Tabelle durch Zusammenführen der zerlegten Beziehungen nicht perfekt rekonstruiert werden kann.
- Dies geschieht, wenn einige Daten oder Beziehungen während der Zerlegung verloren gehen.
-
Beispiel:
Betrachten Sie die Tabelle:
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Wenn dies zerlegt wird in:
- Tabelle 1: Mitarbeiter-ID | Projekt-ID
- Tabelle 2: Projekt-ID | Projektmanager
Das erneute Zusammenführen dieser Tabellen kann zu doppelten oder inkonsistenten Daten führen, was zu einer verlustbehafteten Zerlegung führt.
-
Verlustfreie Zerlegung:
- Eine Zerlegung ist verlustfrei, wenn die ursprüngliche Tabelle durch Zusammenführen der zerlegten Beziehungen perfekt wiederhergestellt werden kann, ohne dass Daten verloren gehen oder Inkonsistenzen entstehen.
- Dies wird erreicht, wenn die Zerlegung alle funktionalen Abhängigkeiten beibehält oder wenn Schlüsselattribute in jede zerlegte Beziehung einbezogen werden.
Funktionale Abhängigkeit
Eine funktionale Abhängigkeit (FD) beschreibt eine Beziehung zwischen zwei Attributen in einer Beziehung, bei der der Wert eines Attributs (oder einer Gruppe von Attributen) den Wert eines anderen Attributs (oder einer Gruppe von Attributen) bestimmt. Es handelt sich um ein grundlegendes Konzept beim Entwurf und der Normalisierung relationaler Datenbanken.
Definition:
Seien X und Y Mengen von Attributen in einer Beziehung R. Eine funktionale Abhängigkeit X → Y bedeutet, dass für zwei beliebige Tupel (Zeilen) in R, wenn die Tupel über die Werte von X übereinstimmen, Sie müssen sich auch über die Werte von Y einigen.
-
X: Determinante (das/die Attribut(e) auf der linken Seite).
-
Y: Abhängig (das/die Attribut(e) auf der rechten Seite).
Beispiel:
Stellen Sie sich eine Tabelle vor, in der Schülerinformationen gespeichert sind:
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Hier StudentID → Name, Major, da die StudentID sowohl Name als auch Major eindeutig bestimmt.
Eigenschaften funktionaler Abhängigkeiten:
-
Reflexivität: Wenn Y eine Teilmenge von X ist, dann ist X → Y.
-
Erweiterung: Wenn X → Y, dann XZ → YZ (durch das Hinzufügen von Attributen auf beiden Seiten bleibt die Abhängigkeit erhalten).
-
Transitivität: Wenn X → Y und Y → Z, dann X → Z.
Schlüssel in relationalen Datenbanken
Schlüssel sind wichtig, um Datensätze in einer Tabelle eindeutig zu identifizieren und die Datenintegrität durchzusetzen.
Arten von Schlüsseln:
-
Superkey:
- Ein Satz von einem oder mehreren Attributen, die ein Tupel in einer Beziehung eindeutig identifizieren können.
- Beispiel: In einer Tabelle mit den Attributen EmployeeID und Name sind {EmployeeID}, {EmployeeID, Name} Superschlüssel.
-
Kandidatenschlüssel:
- Ein minimaler Superschlüssel, das heißt, keine echte Teilmenge davon ist ebenfalls ein Superschlüssel.
- Beispiel: Wenn {EmployeeID} ein Tupel eindeutig identifizieren kann, handelt es sich um einen Kandidatenschlüssel.
-
Primärschlüssel:
- Ein vom Datenbankdesigner ausgewählter Kandidatenschlüssel zur eindeutigen Identifizierung von Tupeln.
- Beispiel: EmployeeID in einer Employee-Tabelle.
-
Fremdschlüssel:
- Ein Attribut (oder eine Reihe von Attributen) in einer Tabelle, das auf den Primärschlüssel in einer anderen Tabelle verweist und so eine Beziehung zwischen den Tabellen herstellt.
- Beispiel: DepartmentID in einer Employee-Tabelle, die auf DepartmentID in einer Department-Tabelle verweist.
-
Zusammengesetzter Schlüssel:
- Ein Primärschlüssel, der aus zwei oder mehr Attributen besteht.
- Beispiel: (StudentID, CourseID) in einer Tabelle mit Studenteneinschreibungen.
-
Eindeutiger Schlüssel:
- Eine wichtige Einschränkung, die sicherstellt, dass alle Werte in einer Spalte (oder einer Kombination von Spalten) eindeutig sind.
Normalisierung und Normalformen
Normalisierung ist der Prozess der Organisation von Attributen und Beziehungen, um Redundanz und Abhängigkeit zu reduzieren und die Datenintegrität sicherzustellen. Dies wird durch die schrittweise Erfüllung der Kriterien aufeinanderfolgender Normalformen erreicht.
Normalformen (umfassende Übersicht)
Erste Normalform (1NF)
Definition:
Eine Relation liegt in der Ersten Normalform (1NF) vor, wenn sie die folgenden Kriterien erfüllt:
-
Atomizität: Alle Attribute (Spalten) müssen atomare Werte enthalten. Das bedeutet, dass die Werte in jeder Spalte unteilbar sind und nicht weiter zerlegt werden können.
-
Einzelwertige Einträge: Jede Spalte in einer Tabelle sollte Werte eines einzelnen Datentyps enthalten und keine Spalte sollte Mengen, Listen oder Arrays enthalten.
-
Eindeutigkeit der Zeilen: Jede Zeile muss eindeutig sein, was bedeutet, dass die Tabelle einen Primärschlüssel zur Unterscheidung zwischen Zeilen haben sollte.
-
Keine sich wiederholenden Gruppen: Die Tabelle sollte nicht mehrere Spalten für dasselbe Attribut haben (wie Element1, Element2 usw.) und auch nicht mehrere Werte in einer einzelnen Zelle gespeichert haben.
Erklärung:
-
Atomwerte: Die Daten in jeder Zelle müssen in ihrer einfachsten Form vorliegen. Anstatt beispielsweise mehrere Elemente in einer Zelle zu speichern, sollte jedes Element eine eigene Zeile einnehmen.
-
Wiederholende Gruppen: Hier stellen mehrere Spalten oder Zeilen denselben Datentyp dar, wodurch die Tabelle nicht 1NF-konform ist.
-
Primärschlüssel: Ein Primärschlüssel stellt sicher, dass jede Zeile eindeutig identifizierbar ist, was eine Grundvoraussetzung für relationale Datenbanken ist.
Beispiel:
Nicht konforme Tabelle (nicht in 1NF):
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
- Die Spalte „Elemente“ verstößt gegen die Atomizität, da sie mehrere Werte enthält (z. B. „Stift, Notizbuch“).
- Es gibt sich wiederholende Gruppen, weil Elemente in einer einzelnen Zelle und nicht in separaten Zeilen gespeichert werden.
Konforme Tabelle (in 1NF):
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
- Hier ist die Spalte „Elemente“ in atomare Werte unterteilt, wobei sich jedes Element in einer separaten Zeile befindet.
- Keine Zelle enthält mehrere Werte, wodurch die Atomizität gewährleistet ist.
- Die Tabelle hat keine sich wiederholenden Gruppen oder Arrays, sodass sie mit 1NF kompatibel ist.
Zweite Normalform (2NF)
Definition:
Eine Relation liegt in der Zweiten Normalform (2NF) vor, wenn:
- Es liegt bereits in der Ersten Normalform (1NF) vor (d. h. keine mehrwertigen oder sich wiederholenden Gruppen).
- Jedes Nicht-Primär-Attribut ist vollständig funktional vom gesamten Primärschlüssel abhängig.
-
Nicht-Prime-Attribut: Ein Attribut, das nicht Teil eines Kandidatenschlüssels ist.
-
Voll funktionell abhängig: Ein Nicht-Primär-Attribut muss vom gesamten zusammengesetzten Primärschlüssel abhängen und nicht nur von einem Teil davon.
Erklärung:
- Eine partielle Abhängigkeit tritt auf, wenn ein Nicht-Primär-Attribut nur von einem Teil eines zusammengesetzten Primärschlüssels und nicht vom gesamten Schlüssel abhängt.
-
2NF eliminiert partielle Abhängigkeiten durch die Zerlegung der Beziehung in kleinere Beziehungen, wodurch sichergestellt wird, dass Nicht-Primärattribute nur vom gesamten Primärschlüssel oder einem anderen Kandidatenschlüssel abhängig sind.
Dieser Schritt reduziert die durch teilweise Abhängigkeiten verursachte Redundanz und organisiert die Daten besser.
Beispiel:
Nicht konforme Tabelle (nicht in 2NF):
Stellen Sie sich eine Tabelle vor, in der Kursinformationen der Studierenden gespeichert sind:
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Zusammengesetzter Primärschlüssel: (StudentID, CourseID).
-
Teilweise Abhängigkeit:
-
Dozent und Abteilung sind nur von der CourseID und nicht vom gesamten Primärschlüssel (StudentID, CourseID) abhängig.
Dies verstößt gegen 2NF, da Nicht-Primärattribute (Dozent und Abteilung) teilweise vom zusammengesetzten Schlüssel abhängen.
Konforme Tabellen (in 2NF):
Um die teilweise Abhängigkeit zu entfernen, zerlegen Sie die Tabelle in zwei Beziehungen:
-
Studenten-Kurstabelle:
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Kursdetails-Tabelle:
OrderID | Items
-------------------
1 | Pen, Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Dritte Normalform (3NF)
Definition:
Eine Relation liegt in der dritten Normalform (3NF) vor, wenn:
- Es liegt in der Zweiten Normalform (2NF) vor (d. h. keine teilweisen Abhängigkeiten).
-
Es besteht keine transitive Abhängigkeit, was bedeutet:
- Kein Nicht-Prime-Attribut ist von einem anderen Nicht-Prime-Attribut abhängig.
- Ein Nicht-Prime-Attribut sollte nur von einem Kandidatenschlüssel abhängen, nicht von einem anderen Nicht-Prime-Attribut.
-
Nicht-Prime-Attribut: Ein Attribut, das nicht Teil eines Kandidatenschlüssels ist.
-
Transitive Abhängigkeit: Eine Abhängigkeit, bei der ein Nicht-Prime-Attribut indirekt über ein anderes Nicht-Prime-Attribut von einem Kandidatenschlüssel abhängt.
Erklärung:
In 3NF eliminieren wir transitive Abhängigkeiten, um Redundanz zu reduzieren und die Datenkonsistenz zu verbessern.
-
Beispiel für eine transitive Abhängigkeit: Wenn A → B und B → C, dann ist A → C eine transitive Abhängigkeit. Dies bedeutet, dass C indirekt von A über B abhängt.
- Solche Abhängigkeiten führen zu Redundanz, da Änderungen an B zu Anomalien bei der Aktualisierung von C führen können.
Beispiel:
Nicht konforme Tabelle (nicht in 3NF):
OrderID | Item
---------------
1 | Pen
1 | Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Kandidatenschlüssel: StudentID identifiziert jede Zeile eindeutig.
-
Problem: Das HOD-Attribut hängt von der Abteilung ab, nicht direkt von der StudentID.
-
StudentID → Fachbereich (Direkte Abhängigkeit).
-
Abteilung → HOD (Transitive Abhängigkeit).
- StudentID → HOD ist also eine transitive Abhängigkeit.
Diese Struktur führt zu Redundanz: Wenn sich der HOD für die CS-Abteilung ändert, müssen mehrere Zeilen aktualisiert werden.
Konforme Tabellen (in 3NF):
Um die transitive Abhängigkeit aufzulösen, zerlegen Sie die Tabelle in zwei Beziehungen:
-
Studenten-Abteilungstabelle:
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Abteilungs-HOD-Tabelle:
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Boyce-Codd-Normalform (BCNF)
Definition:
Eine Relation liegt in der Boyce-Codd-Normalform (BCNF) vor, wenn:
- Es liegt in der dritten Normalform (3NF) vor (d. h. es existieren keine partiellen oder transitiven Abhängigkeiten).
-
Jede Determinante ist ein Kandidatenschlüssel.
-
Determinante: Ein Attribut (oder eine Reihe von Attributen), von dem ein anderes Attribut funktional abhängig ist.
-
Kandidatenschlüssel: Ein minimaler Satz von Attributen, der jedes Tupel in einer Beziehung eindeutig identifizieren kann.
Hauptunterschied zwischen 3NF und BCNF:
- Während 3NF einige Abhängigkeiten zulässt, bei denen ein Nicht-Prime-Attribut funktional von einem Kandidatenschlüssel abhängig ist, beseitigt BCNF solche Anomalien, indem es sicherstellt, dass jede Determinante ein Kandidatenschlüssel ist.
Erklärung:
BCNF ist strenger als 3NF und befasst sich mit Situationen, in denen eine Beziehung zwar 3NF erfüllen kann, aber dennoch Redundanz aufweist, die durch Abhängigkeiten verursacht wird, die gegen BCNF verstoßen.
Wenn BCNF benötigt wird:
- BCNF ist erforderlich, wenn ein Nicht-Kandidatenschlüsselattribut einen Teil eines Kandidatenschlüssels bestimmt, was zu Redundanz und Anomalien führt.
Beispiel:
Nicht konforme Tabelle (nicht in BCNF):
OrderID | Items
-------------------
1 | Pen, Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Funktionale Abhängigkeiten:
-
Kurs-ID → Dozent
-
Ausbilder → Raum
Kandidatenschlüssel: Kurs-ID
Problem:
- Der bestimmende Ausbilder ist kein Kandidatenschlüssel, sondern bestimmt den Raum.
- Dies verstößt gegen BCNF, da nicht alle Determinanten Kandidatenschlüssel sind.
Konforme Tabellen (in BCNF):
Um BCNF zu erreichen, zerlegen Sie die Tabelle in zwei Beziehungen:
-
Kursleitertabelle:
OrderID | Item
---------------
1 | Pen
1 | Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Tisch im Lehrerzimmer:
StudentID | CourseID | Instructor | Department
----------------------------------------------
S1 | C1 | Dr. Smith | CS
S2 | C2 | Dr. Jones | EE
S1 | C2 | Dr. Jones | EE
Nach dem Login kopieren
Vierte Normalform (4NF)
Definition:
Eine Relation liegt in der Vierten Normalform (4NF) vor, wenn:
- Es liegt in der Boyce-Codd-Normalform (BCNF) vor (d. h. keine partiellen, transitiven oder anderen Anomalien).
- Es gibt keine mehrwertigen Abhängigkeiten.
-
Mehrwertige Abhängigkeit (MVD): Eine mehrwertige Abhängigkeit liegt vor, wenn ein Attribut in einer Tabelle mehrere unabhängige Attributsätze bestimmt. Mit anderen Worten: Wenn eine Beziehung zwei oder mehr unabhängige mehrwertige Attribute enthält, die nicht miteinander in Beziehung stehen, verstößt sie gegen 4NF.
Erklärung:
Bei 4NF besteht das Hauptziel darin, mehrwertige Abhängigkeiten zu eliminieren, die auftreten, wenn ein Datensatz zwei oder mehr unabhängige Attribute enthält, die nicht direkt miteinander verbunden sind, aber aufgrund ihrer Abhängigkeit vom gleichen Schlüssel zusammen erscheinen.
- Diese Arten von Abhängigkeiten führen zu Redundanz, da mehrere Kopien derselben Informationen in Zeilen wiederholt werden.
- Durch die Zerlegung der Beziehung zum Entfernen von MVDs beseitigen wir Redundanz und verbessern die Konsistenz in der Datenbank.
Schlüsselkonzept:
- In 4NF sollte eine Beziehung nicht zwei oder mehr mehrwertige Attribute haben, die von einem Kandidatenschlüssel abhängen. Jede mehrwertige Abhängigkeit muss durch entsprechende Zerlegung der Tabelle beseitigt werden.
Beispiel:
Nicht konforme Tabelle (nicht in 4NF):
Stellen Sie sich eine Tabelle vor, in der Informationen über Studenten, die Kurse, die sie belegen, und die Clubs, in denen sie tätig sind, gespeichert sind:
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Kandidatenschlüssel: Studenten-ID
Mehrwertige Abhängigkeiten:
- Eine StudentID kann sowohl eine Reihe von Kursen als auch eine Reihe von Clubs bestimmen, diese Sätze sind jedoch unabhängig voneinander.
-
StudentID → {Courses} (Mehrwertige Abhängigkeit zwischen StudentID und Courses)
-
StudentID → {Clubs} (Mehrwertige Abhängigkeit zwischen StudentID und Clubs)
Die Tabelle verstößt gegen 4NF, da StudentID sowohl die Kurse als auch die Clubs unabhängig bestimmt. Dies führt zu Redundanz, da dieselbe StudentID bei verschiedenen Kombinationen von Kursen und Clubs mehrmals wiederholt wird.
Kompatible Tabellen (in 4NF):
Damit die Tabelle 4NF entspricht, müssen wir die mehrwertigen Abhängigkeiten beseitigen, indem wir sie in zwei Tabellen zerlegen:
-
Studenten-Kurstabelle:
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Studenten-Clubtisch:
OrderID | Items
-------------------
1 | Pen, Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Jetzt werden die beiden mehrwertigen Abhängigkeiten separat behandelt:
- Die Student-Course-Tabelle speichert die Beziehung zwischen Studenten und den Kursen, die sie belegen.
- Die Student-Club-Tabelle speichert die Beziehung zwischen Studenten und den Clubs, in denen sie engagiert sind.
Fünfte Normalform (5NF)
Definition:
Eine Relation liegt in der Fünften Normalform (5NF) vor, auch bekannt als Projection-Join Normal Form (PJNF), wenn:
- Es liegt in der Vierten Normalform (4NF) vor (d. h. es existieren keine mehrwertigen Abhängigkeiten).
- Es kann nicht weiter zerlegt werden, ohne dass Informationen verloren gehen, was bedeutet, dass die Beziehung keine Join-Abhängigkeit oder verlustfreie Join-Zerlegung enthält.
-
Join-Abhängigkeit (JD): Eine Join-Abhängigkeit liegt vor, wenn eine Beziehung in zwei oder mehr Beziehungen zerlegt werden kann, diese jedoch wieder zusammengefügt werden, ohne dass Informationen verloren gehen. Mit anderen Worten liegt eine Join-Abhängigkeit vor, wenn eine Beziehung in Unterbeziehungen unterteilt werden kann, die ursprüngliche Beziehung jedoch ohne Datenverlust wiederhergestellt werden kann.
Erklärung:
5NF befasst sich mit Join-Abhängigkeiten und stellt sicher, dass die Daten so zerlegt werden, dass alle Informationen aus ihren zerlegten Teilen ohne Datenverlust rekonstruiert werden können. Eine Beziehung in 5NF ist so konzipiert, dass alle ihre nicht trivialen Join-Abhängigkeiten durch ihre Kandidatenschlüssel impliziert werden.
-
Verlustfreie Verknüpfungszerlegung: Wenn eine Beziehung in kleinere Beziehungen zerlegt und dann wieder zusammengefügt wird, kann die ursprüngliche Beziehung ohne Datenverlust vollständig wiederhergestellt werden. Eine Relation liegt in 5NF, wenn sie nicht weiter zerlegt werden kann, ohne dass es zu einem Informationsverlust kommt.
-
Nicht triviale Join-Abhängigkeit: Eine Join-Abhängigkeit ist nicht trivial, wenn die Join-Abhängigkeit nicht trivial erfüllt ist (d. h. nicht alle Attribute aus der Beziehung sind in der Join-Abhängigkeit vorhanden).
Einfacher ausgedrückt geht es bei 5NF darum, sicherzustellen, dass keine Redundanz durch unsachgemäße Zerlegungen entsteht. Es garantiert, dass beim Zerlegen einer Beziehung und späteren erneuten Zusammenfügen alle Originaldaten immer noch ohne Verlust oder Mehrdeutigkeit verfügbar sind.
Beispiel:
Nicht konforme Tabelle (nicht in 5NF):
Stellen Sie sich eine Tabelle vor, in der Informationen darüber gespeichert sind, welche Lieferanten welche Teile für verschiedene Projekte liefern:
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Kandidatenschlüssel: (Lieferant, Teil, Projekt)
Abhängigkeit beitreten:
Die obige Beziehung weist eine Join-Abhängigkeit auf, da sie ohne Informationsverlust in kleinere Beziehungen zerlegt werden kann. Beispielsweise kann die Tabelle in drei Unterbeziehungen zerlegt werden:
-
Lieferanten-Teiletabelle:
EmployeeID | ProjectID | ProjectManager
---------------------------------------
E1 | P1 | M1
E2 | P1 | M1
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Lieferanten-Projekttabelle:
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
-
Teilprojekttabelle:
OrderID | Items
-------------------
1 | Pen, Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Indem wir die Tabelle in diese kleineren Beziehungen zerlegen, können wir die ursprüngliche Tabelle immer noch wiederherstellen, indem wir eine natürliche Verknüpfung dieser drei kleineren Beziehungen durchführen.
Da diese Zerlegung jedoch möglich ist, verstößt sie gegen 5NF. Der Grund dafür ist ein Verstoß gegen 5NF, weil die Informationen darüber, welcher Lieferant welches Teil für ein bestimmtes Projekt liefert, redundant in mehreren Zeilen gespeichert sind. Wir speichern dieselben Fakten mehrmals, was unnötig ist und zu Inkonsistenzen führen kann.
Konforme Tabelle (in 5NF):
Um 5NF zu erreichen, zerlegen wir die Tabelle, sodass die Beziehung nicht weiter zerlegt werden kann, ohne dass Informationen verloren gehen:
-
Lieferanten-Teil-Projekttabelle:
OrderID | Item
---------------
1 | Pen
1 | Notebook
2 | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
In dieser Form liegt die Beziehung jetzt in 5NF vor, da sie nicht weiter zerlegt werden kann, ohne Daten zu verlieren. Diese Tabelle stellt die gleichen Informationen wie das Original dar, jedoch in einer stärker normalisierten Form, in der jedes Attribut vollständig vom Kandidatenschlüssel abhängt und keine Redundanz aufgrund falscher Zerlegung besteht.
Schlüsselkonzepte im relationalen Design
-
Mehrwertige Abhängigkeit: Wenn ein Attribut mehrere unabhängige Werte bestimmt.
-
Join-Abhängigkeit: Stellt sicher, dass bei Joins keine falschen Tupel erstellt werden.
-
Abhängigkeitserhaltung: Stellt sicher, dass alle funktionalen Abhängigkeiten nach der Zerlegung erhalten bleiben.
Dieser umfassende Leitfaden befähigt Sie, das relationale Datenbankdesign zu beherrschen und effiziente, konsistente und anomaliefreie Datenbanksysteme sicherzustellen.
Das obige ist der detaillierte Inhalt vonRelationales Datenbankdesign: DBMS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!