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

Deux tables avec les mêmes colonnes ou une table avec une colonne supplémentaire ?

Dépend des contraintes :

  • Avez-vous des clés étrangères ou des CHECK sur apples qui n'existent pas sur les oranges (ou vice-versa) ?
  • Avez-vous besoin de garder les clés uniques sur les deux tables (donc pas de apple peut avoir le même identifiant que certains orange ) ?

Si les réponses à ces deux questions sont :"oui" et "non" , gardez les tables séparées (afin que les contraintes puissent être rendues spécifiques à une table).

Si les réponses sont :"non" et "oui" , fusionnez-les (afin que vous puissiez créer une clé qui couvre les deux).

Si les réponses sont :"oui" et "oui" , envisagez d'émuler l'héritage :

Rechercher des données est un exemple typique de tables qui se ressemblent, mais qui doivent être conservées séparément afin que les FK puissent être conservées séparément.

Plus précisément, il s'agit de la stratégie "toutes les classes dans des tables séparées" pour représenter l'héritage (c'est-à-dire catégorie, sous-classement, sous-typage, hiérarchie de généralisation, etc.). Vous voudrez peut-être jeter un œil à ce message pour plus d'informations.