Il semble que vous souhaitiez différencier les catégories et les sujets dans deux tableaux distincts, mais que les identifiants des deux soient référencés dans un autre tableau likes
pour aider les utilisateurs à aimer une catégorie ou un sujet.
Ce que vous pouvez faire est de créer une table de super-entités avec des sous-types categories
et topics
. La clé auto-incrémentée serait générée dans la table de super-entité et insérée dans une seule des deux tables de sous-type (selon qu'il s'agit d'une catégorie ou d'un sujet).
Les tables de sous-type référencent cette super-entité via le champ auto-incrémenté dans une relation 1:1.
De cette façon, vous pouvez simplement lier la table de super-entités aux likes
tableau basé uniquement sur une colonne (qui peut représenter soit une catégorie, soit un sujet), et aucun id
dans les tables de sous-types seront présentes dans les deux.
Voici un exemple simplifié de la façon dont vous pouvez modéliser cela :
Ce modèle vous permettrait de maintenir la relation entre les catégories et les sujets, mais en ayant les deux entités généralisées dans la superentity
tableau.
Un autre avantage de ce modèle est que vous pouvez extraire les champs communs des tables de sous-types dans la table de superentité. Disons par exemple que categories
et topics
les deux contenaient les champs title
et url
:vous pourriez mettre ces champs dans la superentity
table car ce sont des attributs communs de ses sous-types. Ne mettez que les champs spécifiques aux tables de sous-type DANS les tables de sous-type.