Mysql
 sql >> Base de données >  >> RDS >> Mysql

Incrémentation automatique de MySQL entre les tables

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.