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.