Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Projeto de banco de dados:registro e verificação


Eu vejo isso de um ponto de vista diferente.

Na sua situação, uma mesa provavelmente é boa o suficiente. Mas há outras considerações.

1) Volume. Em uma tabela pequena, a filtragem de um sinalizador não afetará significativamente o desempenho. Em uma tabela grande (milhões de linhas), você teria que colocar o sinalizador em um índice. Colocar um sinalizador de baixa cardinalidade em um índice de uma tabela grande pode diminuir o desempenho.

2) Defeitos. Ter um sinalizador na tabela requer que quase todas as consultas usem o sinalizador. Para um sistema grande o suficiente, ou complexo o suficiente, alguém vai perder essa bandeira. Determinar o risco depende do custo de selecionar acidentalmente um usuário não ativado.

Uma maneira de mitigar os riscos é usar visualizações. Se você implementar uma solução de duas tabelas, use uma exibição (All_Users) usando UNION ALL. Se você implementar uma solução de uma tabela, crie uma exibição apenas para usuários ativados e use essa tabela. Apenas a funcionalidade de manutenção precisa modificar as tabelas principais.