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

Conception de la base de données :enregistrement et vérification

Je vois cela d'un point de vue différent.

Dans votre situation, une table est probablement suffisante. Mais il y a d'autres considérations.

1) Volume. Dans une petite table, le filtrage sur un indicateur n'affectera pas de manière significative les performances. Dans une grande table (des millions de lignes), vous devriez mettre le drapeau dans un index. Placer un indicateur de faible cardinalité dans un index d'une grande table peut diminuer les performances.

2) Défauts. Avoir un indicateur dans la table nécessite que presque toutes les requêtes utilisent l'indicateur. Pour un système suffisamment grand ou suffisamment complexe, quelqu'un va manquer ce drapeau. La détermination du risque dépend du coût de la sélection accidentelle d'un utilisateur non activé.

Une façon d'atténuer les risques consiste à utiliser des vues. Si vous implémentez une solution à deux tables, utilisez une vue (All_Users) utilisant UNION ALL. Si vous implémentez une solution à table unique, créez une vue pour les utilisateurs activés uniquement et utilisez cette table à la place. Seule la fonctionnalité de maintenance doit modifier les tables principales.