Heim >Datenbank >MySQL-Tutorial >Kann ein Fremdschlüssel auf mehrere Tabellen in polymorphen Assoziationen verweisen?

Kann ein Fremdschlüssel auf mehrere Tabellen in polymorphen Assoziationen verweisen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 02:39:291030Durchsuche

Can a Foreign Key Reference Multiple Tables in Polymorphic Associations?

Polymorphe Fremdschlüssel: Kann ein Fremdschlüssel auf mehrere Tabellen verweisen?

Das Konzept der Fremdschlüssel in relationalen Datenbanken beinhaltet typischerweise die Angabe des genauen Ziels Tabelle, auf die eine Referenzspalte verweisen soll. Wenn es jedoch um polymorphe Assoziationen geht, bei denen eine Tabelle eine Beziehung zu mehreren anderen Tabellen in einer Menge hat, stellt sich die Frage: Ist es möglich, einen Fremdschlüssel zu haben, der auf eine dieser Tabellen verweisen kann?

Die Antwort: Nein

Sowohl in MySQL als auch in PostgreSQL kann eine Fremdschlüsseleinschränkung nur auf eine einzelne übergeordnete Tabelle verweisen. Diese Einschränkung stellt die Datenintegrität sicher, indem eine klare Beziehung zwischen den referenzierenden Zeilen und den referenzierten Zeilen in der übergeordneten Tabelle aufrechterhalten wird.

Alternativen für polymorphe Assoziationen

Da ein Fremdschlüssel dies nicht kann Wenn Sie direkt auf mehrere Tabellen verweisen, sind alternative Lösungen erforderlich, um polymorphe Assoziationen zu modellieren:

  • Joined Inheritance: Erstellen Sie eine einzelne Tabelle, die alle Spalten der untergeordneten Tabellen und eine Diskriminatorspalte enthält um zu identifizieren, zu welcher Tabelle jede Zeile gehört.
  • Tabelle pro Klassenhierarchie: Erstellen Sie separate Tabellen für jede untergeordnete Tabelle und stellen Sie Beziehungen zwischen ihnen durch Vererbung her.
  • Union-Typen:Verwenden Sie eine einzelne Spalte, die Datenwerte aus verschiedenen Domänen aufnehmen kann, sodass auf mehrere untergeordnete Tabellen verwiesen werden kann.

Zusätzliche Ressourcen

Weitere Einblicke in polymorphe Assoziationen und ihre Lösungen finden Sie in den folgenden Ressourcen:

  • Praktische objektorientierte Modelle in SQL
  • SQL Antipatterns, Band 1: Vermeidung der Fallstricke der Datenbankprogrammierung

Das obige ist der detaillierte Inhalt vonKann ein Fremdschlüssel auf mehrere Tabellen in polymorphen Assoziationen verweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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