Wygląda na to, że chcesz rozróżnić kategorie i tematy w dwóch osobnych tabelach, ale mieć identyfikatory obu z nich w innej tabeli likes
aby ułatwić użytkownikom lubiącym kategorię lub temat.
To, co możesz zrobić, to utworzyć tabelę nadrzędnych jednostek z podtypami categories
i topics
. Automatycznie zwiększany klucz byłby generowany w tabeli nadrzędnej i wstawiany tylko do jednej z dwóch tabel podtypów (w zależności od tego, czy jest to kategoria, czy temat).
Tabele podtypów odwołują się do tego superelementu poprzez pole z automatycznym przyrostem w relacji 1:1.
W ten sposób możesz po prostu połączyć tabelę superelementów z likes
tabela oparta tylko na jednej kolumnie (która może reprezentować kategorię lub temat) i nie ma id
w tabelach podtypów będą obecne w obu.
Oto uproszczony przykład tego, jak możesz to wymodelować:
Ten model umożliwiłby utrzymanie relacji między kategoriami i tematami, ale uogólnienie obu encji w superentity
tabela.
Kolejną zaletą tego modelu jest możliwość wyodrębnienia wspólnych pól z tabel podtypów do tabeli nadrzędności. Powiedz na przykład, że categories
i topics
oba zawierały pola title
i url
:możesz umieścić te pola w superentity
tabeli, ponieważ są one wspólnymi atrybutami jej podtypów. W tabelach podtypów umieszczaj tylko pola, które są specyficzne dla tabel podtypów.