Es scheint, dass Sie Kategorien und Themen in zwei separaten Tabellen unterscheiden möchten, aber die IDs von beiden in einer anderen Tabelle likes
referenziert werden sollen um Benutzern das Liken einer Kategorie oder eines Themas zu erleichtern.
Was Sie tun können, ist eine Superentitätstabelle mit den Untertypen categories
zu erstellen und topics
. Der automatisch inkrementierte Schlüssel würde in der Superentitätstabelle generiert und nur in eine der beiden Untertyptabellen eingefügt (basierend darauf, ob es sich um eine Kategorie oder ein Thema handelt).
Die Subtype-Tabellen referenzieren diese Superentität über das automatisch inkrementierte Feld in einer 1:1-Beziehung.
Auf diese Weise können Sie die Super-Entity-Tabelle einfach mit den likes
verknüpfen Tabelle, die nur auf einer Spalte basiert (die entweder eine Kategorie oder ein Thema darstellen kann), und keine id
in den Untertyptabellen wird in beiden vorhanden sein.
Hier ist ein vereinfachtes Beispiel dafür, wie Sie dies modellieren können:
Dieses Modell würde es Ihnen ermöglichen, die Beziehung zwischen Kategorien und Themen aufrechtzuerhalten, aber beide Entitäten in der superentity
zu verallgemeinern Tabelle.
Ein weiterer Vorteil dieses Modells besteht darin, dass Sie gemeinsame Felder in den Subtype-Tabellen in die Superentity-Tabelle abstrahieren können. Sagen Sie zum Beispiel, dass categories
und topics
beide enthielten die Felder title
und url
:Sie könnten diese Felder in die superentity
einfügen Tabelle, weil sie gemeinsame Attribute ihrer Untertypen sind. Setzen Sie nur Felder, die für die Subtyptabellen spezifisch sind, IN die Subtyptabellen.