Sembra che tu voglia differenziare categorie e argomenti in due tabelle separate, ma fare riferimento agli ID di entrambi in un'altra tabella likes
per facilitare agli utenti il gradimento di una categoria o di un argomento.
Quello che puoi fare è creare una tabella di super-entità con i sottotipi categories
e topics
. La chiave con incremento automatico verrebbe generata nella tabella delle superentità e inserita solo in una delle due tabelle di sottotipo (a seconda che si tratti di una categoria o di un argomento).
Le tabelle dei sottotipi fanno riferimento a questa superentità tramite il campo a incremento automatico in una relazione 1:1.
In questo modo, puoi semplicemente collegare la tabella delle super-entità ai likes
tabella basata solo su una colonna (che può rappresentare una categoria o un argomento) e nessun id
nelle sottotipi le tabelle saranno presenti in entrambi.
Ecco un esempio semplificato di come puoi modellarlo:
Questo modello ti permetterebbe di mantenere la relazione tra categorie e argomenti, ma avendo entrambe le entità generalizzate nella superentity
tabella.
Un altro vantaggio di questo modello è che puoi estrarre i campi comuni nelle tabelle dei sottotipi nella tabella delle superentità. Supponiamo ad esempio che categories
e topics
entrambi contenevano i campi title
e url
:potresti inserire questi campi nella superentity
tabella perché sono attributi comuni dei suoi sottotipi. Inserisci solo i campi specifici delle tabelle dei sottotipi nelle tabelle dei sottotipi.