sql >> Base de Datos >  >> RDS >> Mysql

Diseño de Base de Datos:Registro y Verificación

Veo esto desde un punto de vista diferente.

En su situación, una mesa probablemente sea lo suficientemente buena. Pero hay otras consideraciones.

1) Volumen. En una tabla pequeña, el filtrado en una bandera no afectará significativamente el rendimiento. En una tabla grande (millones de filas), tendrías que poner la bandera en un índice. Poner una marca de cardinalidad baja en un índice de una tabla grande puede disminuir el rendimiento.

2) Defectos. Tener una bandera en la tabla requiere que casi todas las consultas usen la bandera. Para un sistema lo suficientemente grande o complejo, alguien va a pasar por alto esa bandera. Determinar el riesgo depende del costo de seleccionar accidentalmente un usuario no activado.

Una forma de mitigar los riesgos es usar vistas. Si implementa una solución de dos tablas, use una vista (All_Users) usando UNION ALL. Si implementa una solución de una tabla, cree una vista solo para usuarios activados y use esa tabla en su lugar. Solo la funcionalidad de mantenimiento necesita modificar las tablas principales.