Subtypen: Ein Dilemma im Datenbankdesign
Im Bereich des Datenbankdesigns stellt sich die Frage der Subtypisierung, wenn es um Entitäten geht, die Gemeinsamkeiten haben Eigenschaften, sondern weisen auch einzigartige Eigenschaften auf. Stellen Sie sich ein Szenario vor, in dem Sie über drei Tabellen verfügen: BÜCHER, ARTIKEL und NOTIZEN. Jedes Buch oder jeder Artikel kann mehrere Notizen haben.
Ursprünglicher Entwurf: Eine einheitliche NOTES-Tabelle
Der ursprüngliche Entwurf entschied sich für eine einheitliche NOTES-Tabelle mit Folgendem Spalten:
In diesem Schema gibt note_type an, ob die note ist mit einem Buch oder einem Artikel verknüpft, während note_type_id als Fremdschlüssel für das jeweilige Dokument dient Entität.
Alternatives Design: Separate NOTES-Tabellen
Ein alternativer Ansatz schlägt vor, NOTES in separate Tabellen aufzuteilen Tabellen:
Dieses Design trennt buchspezifische und artikelspezifische Notizen und führt zusätzliche Tabellen ein zur Verlinkung auf die entsprechenden Entitäten.
Auswertung der Optionen
Beide Designs haben ihre Vorzüge. Die einheitliche NOTES-Tabelle bietet Einfachheit und macht zusätzliche Tabellen überflüssig. Das alternative Design bietet jedoch eine klarere Trennung und Potenzial für zukünftige Erweiterbarkeit.
Eine Supertyp-/Subtyp-Perspektive
Erwägen Sie die Einführung eines Supertyp-/Subtyp-Ansatzes, bei dem PUBLIKATION als Grundlage dient Supertyp für BÜCHER und ARTIKEL. Dies ermöglicht eine einzelne, gemeinsam genutzte NOTE-Tabelle mit einem Fremdschlüssel für PUBLICATION. Diese Struktur ermöglicht das nahtlose Abrufen von Notizen, unabhängig davon, ob sie mit einem Buch oder einem Artikel verknüpft sind.
Vorteile des Supertype/Subtype-Designs:
Beispielstruktur:
TABLE PUBLICATION ( ID (PK)
Das obige ist der detaillierte Inhalt vonEinheitliche oder separate NOTES-Tabellen: Welches Datenbankdesign verarbeitet Subtypen am besten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!