Heim Datenbank MySQL-Tutorial Relationales Datenbankdesign: DBMS

Relationales Datenbankdesign: DBMS

Jan 05, 2025 pm 12:57 PM

Relational Database Design: DBMS

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

  1. 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.
  2. 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:

  1. Reflexivität: Wenn Y eine Teilmenge von X ist, dann ist X → Y.
  2. Erweiterung: Wenn X → Y, dann XZ → YZ (durch das Hinzufügen von Attributen auf beiden Seiten bleibt die Abhängigkeit erhalten).
  3. 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:

  1. 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.
  2. 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.
  3. Primärschlüssel:

    • Ein vom Datenbankdesigner ausgewählter Kandidatenschlüssel zur eindeutigen Identifizierung von Tupeln.
    • Beispiel: EmployeeID in einer Employee-Tabelle.
  4. 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.
  5. Zusammengesetzter Schlüssel:

    • Ein Primärschlüssel, der aus zwei oder mehr Attributen besteht.
    • Beispiel: (StudentID, CourseID) in einer Tabelle mit Studenteneinschreibungen.
  6. 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:

  1. 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.
  2. Einzelwertige Einträge: Jede Spalte in einer Tabelle sollte Werte eines einzelnen Datentyps enthalten und keine Spalte sollte Mengen, Listen oder Arrays enthalten.
  3. Eindeutigkeit der Zeilen: Jede Zeile muss eindeutig sein, was bedeutet, dass die Tabelle einen Primärschlüssel zur Unterscheidung zwischen Zeilen haben sollte.
  4. 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:

  1. Es liegt bereits in der Ersten Normalform (1NF) vor (d. h. keine mehrwertigen oder sich wiederholenden Gruppen).
  2. 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:

  1. 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
  1. 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:

  1. Es liegt in der Zweiten Normalform (2NF) vor (d. h. keine teilweisen Abhängigkeiten).
  2. 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:

  1. 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
  1. 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:

  1. Es liegt in der dritten Normalform (3NF) vor (d. h. es existieren keine partiellen oder transitiven Abhängigkeiten).
  2. 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:

  1. Kurs-ID → Dozent
  2. 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:

  1. Kursleitertabelle:
OrderID | Item
---------------
1       | Pen
1       | Notebook
2       | Pencil
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  1. 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:

  1. Es liegt in der Boyce-Codd-Normalform (BCNF) vor (d. h. keine partiellen, transitiven oder anderen Anomalien).
  2. 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:

  1. 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
  1. 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:

  1. Es liegt in der Vierten Normalform (4NF) vor (d. h. es existieren keine mehrwertigen Abhängigkeiten).
  2. 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:

  1. 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
  1. 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
  1. 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:

  1. 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1671
14
PHP-Tutorial
1276
29
C#-Tutorial
1256
24
MySQLs Rolle: Datenbanken in Webanwendungen MySQLs Rolle: Datenbanken in Webanwendungen Apr 17, 2025 am 12:23 AM

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.

Erläutern Sie die Rolle von InnoDB -Wiederherstellung von Protokollen und Rückgängigscheinen. Erläutern Sie die Rolle von InnoDB -Wiederherstellung von Protokollen und Rückgängigscheinen. Apr 15, 2025 am 12:16 AM

InnoDB verwendet Redologs und undologische, um Datenkonsistenz und Zuverlässigkeit zu gewährleisten. 1.REDOLOogen zeichnen Datenseitenänderung auf, um die Wiederherstellung und die Durchführung der Crash -Wiederherstellung und der Transaktion sicherzustellen. 2.Strundologs zeichnet den ursprünglichen Datenwert auf und unterstützt Transaktionsrollback und MVCC.

MySQL gegen andere Programmiersprachen: Ein Vergleich MySQL gegen andere Programmiersprachen: Ein Vergleich Apr 19, 2025 am 12:22 AM

Im Vergleich zu anderen Programmiersprachen wird MySQL hauptsächlich zum Speichern und Verwalten von Daten verwendet, während andere Sprachen wie Python, Java und C für die logische Verarbeitung und Anwendungsentwicklung verwendet werden. MySQL ist bekannt für seine hohe Leistung, Skalierbarkeit und plattformübergreifende Unterstützung, die für Datenverwaltungsanforderungen geeignet sind, während andere Sprachen in ihren jeweiligen Bereichen wie Datenanalysen, Unternehmensanwendungen und Systemprogramme Vorteile haben.

Wie wirkt sich die MySQL -Kardinalität auf die Abfrageleistung aus? Wie wirkt sich die MySQL -Kardinalität auf die Abfrageleistung aus? Apr 14, 2025 am 12:18 AM

Die MySQL -Idium -Kardinalität hat einen signifikanten Einfluss auf die Abfrageleistung: 1. Hoher Kardinalitätsindex kann den Datenbereich effektiver einschränken und die Effizienz der Abfrage verbessern. 2. Niedriger Kardinalitätsindex kann zu einem vollständigen Tischscannen führen und die Abfrageleistung verringern. 3. Im gemeinsamen Index sollten hohe Kardinalitätssequenzen vorne platziert werden, um die Abfrage zu optimieren.

MySQL für Anfänger: Erste Schritte mit der Datenbankverwaltung MySQL für Anfänger: Erste Schritte mit der Datenbankverwaltung Apr 18, 2025 am 12:10 AM

Zu den grundlegenden Operationen von MySQL gehört das Erstellen von Datenbanken, Tabellen und die Verwendung von SQL zur Durchführung von CRUD -Operationen für Daten. 1. Erstellen Sie eine Datenbank: createdatabasemy_first_db; 2. Erstellen Sie eine Tabelle: CreateTableBooks (IDINGAUTO_INCRECTIONPRIMARYKEY, Titelvarchar (100) Notnull, AuthorVarchar (100) Notnull, veröffentlicht_yearint); 3.. Daten einfügen: InsertIntoBooks (Titel, Autor, veröffentlicht_year) va

MySQL gegen andere Datenbanken: Vergleich der Optionen MySQL gegen andere Datenbanken: Vergleich der Optionen Apr 15, 2025 am 12:08 AM

MySQL eignet sich für Webanwendungen und Content -Management -Systeme und ist beliebt für Open Source, hohe Leistung und Benutzerfreundlichkeit. 1) Im Vergleich zu Postgresql führt MySQL in einfachen Abfragen und hohen gleichzeitigen Lesevorgängen besser ab. 2) Im Vergleich zu Oracle ist MySQL aufgrund seiner Open Source und niedrigen Kosten bei kleinen und mittleren Unternehmen beliebter. 3) Im Vergleich zu Microsoft SQL Server eignet sich MySQL besser für plattformübergreifende Anwendungen. 4) Im Gegensatz zu MongoDB eignet sich MySQL besser für strukturierte Daten und Transaktionsverarbeitung.

Erläutern Sie den InnoDB -Pufferpool und seine Bedeutung für die Leistung. Erläutern Sie den InnoDB -Pufferpool und seine Bedeutung für die Leistung. Apr 19, 2025 am 12:24 AM

InnoDbbufferpool reduziert die Scheiben -E/A durch Zwischenspeicherung von Daten und Indizieren von Seiten und Verbesserung der Datenbankleistung. Das Arbeitsprinzip umfasst: 1. Daten lesen: Daten von Bufferpool lesen; 2. Daten schreiben: Schreiben Sie nach der Änderung der Daten an Bufferpool und aktualisieren Sie sie regelmäßig auf Festplatte. 3. Cache -Management: Verwenden Sie den LRU -Algorithmus, um Cache -Seiten zu verwalten. 4. Lesemechanismus: Last benachbarte Datenseiten im Voraus. Durch die Größe des Bufferpool und die Verwendung mehrerer Instanzen kann die Datenbankleistung optimiert werden.

MySQL: Strukturierte Daten und relationale Datenbanken MySQL: Strukturierte Daten und relationale Datenbanken Apr 18, 2025 am 12:22 AM

MySQL verwaltet strukturierte Daten effizient durch Tabellenstruktur und SQL-Abfrage und implementiert Inter-Tisch-Beziehungen durch Fremdschlüssel. 1. Definieren Sie beim Erstellen einer Tabelle das Datenformat und das Typ. 2. Verwenden Sie fremde Schlüssel, um Beziehungen zwischen Tabellen aufzubauen. 3.. Verbessern Sie die Leistung durch Indexierung und Abfrageoptimierung. 4. regelmäßig Sicherung und Überwachung von Datenbanken, um die Datensicherheit und die Leistungsoptimierung der Daten zu gewährleisten.

See all articles