Heim >Datenbank >MySQL-Tutorial >Ist ein Fremdschlüssel für mehrere Tabellen in relationalen Datenbanken möglich?

Ist ein Fremdschlüssel für mehrere Tabellen in relationalen Datenbanken möglich?

DDD
DDDOriginal
2024-10-24 03:58:30833Durchsuche

Is a Foreign Key to Multiple Tables Possible in Relational Databases?

Fremdschlüssel für eine von mehreren Tabellen: Ist das möglich?

In relationalen Datenbanken werden Fremdschlüssel verwendet, um Beziehungen zwischen Tabellen herzustellen. Normalerweise verweist ein Fremdschlüssel in einer Tabelle auf einen Primärschlüssel in einer anderen Tabelle. Es stellt sich jedoch die Frage: Kann ein Fremdschlüssel auf eine von mehreren Tabellen verweisen?

Die Antwort: Nein

Eine Fremdschlüsseleinschränkung verweist immer genau auf eine übergeordnete Tabelle. Dies bedeutet, dass es nicht möglich ist, einen Fremdschlüssel zu definieren, der auf eine von mehreren möglichen Tabellen verweist. Dieses Verhalten ist in MySQL und PostgreSQL gleich.

Auswirkungen auf polymorphe Beziehungen

Polymorphe Beziehungen sind, wenn eine Tabelle eine Beziehung zu einer von mehreren anderen Tabellen haben kann. Im bereitgestellten Beispiel hat die Tabelle „images“ eine Beziehung zu einer von zwei Tabellen: „subordinates“ oder „products“.

In solchen Fällen ist es nicht möglich, direkt einen Fremdschlüssel zu erstellen, der auf verweist entweder „Untergebene“ oder „Produkte“. Stattdessen muss explizit eine Join-Tabelle definiert werden, um die Beziehung herzustellen. Die Join-Tabelle enthält die Fremdschlüssel sowohl für „Untergebene“ als auch für „Produkte“, und die Tabelle „Bilder“ verfügt dann über einen Fremdschlüssel, der auf die Join-Tabelle verweist.

Zusätzliche Ressourcen

Beachten Sie zur weiteren Erforschung dieses Themas die folgenden Ressourcen:

Das obige ist der detaillierte Inhalt vonIst ein Fremdschlüssel für mehrere Tabellen in relationalen Datenbanken möglich?. 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