Mysql
 sql >> Database >  >> RDS >> Mysql

Progettazione di database:registro e verifica

Lo vedo da un punto di vista diverso.

Nella tua situazione, un tavolo è probabilmente abbastanza buono. Ma ci sono altre considerazioni.

1) Volume. In una piccola tabella, il filtraggio su un flag non influirà in modo significativo sulle prestazioni. In una tabella di grandi dimensioni (milioni di righe), dovresti inserire il flag in un indice. L'inserimento di un flag di cardinalità bassa in un indice di una tabella di grandi dimensioni può ridurre le prestazioni.

2) Difetti. Avere un flag nella tabella richiede che quasi tutte le query utilizzino il flag. Per un sistema abbastanza grande o abbastanza complesso, qualcuno mancherà quella bandiera. La determinazione del rischio dipende dal costo della selezione accidentale di un utente non attivato.

Un modo per mitigare i rischi consiste nell'utilizzare le viste. Se si implementa una soluzione a due tabelle, utilizzare una vista (All_Users) utilizzando UNION ALL. Se implementi una soluzione a una tabella, crea una vista solo per gli utenti attivati ​​e usa invece quella tabella. Solo la funzionalità di manutenzione deve modificare le tabelle principali.