Memorizzo vari dettagli utente nel mio database MySQL. Originariamente era impostato in varie tabelle, il che significa che i dati sono collegati con UserIds e l'output tramite chiamate a volte complicate per visualizzare e manipolare i dati come richiesto. Impostando un nuovo sistema, ha quasi senso combinare tutte queste tabelle in un'unica grande tabella di contenuti correlati.
- Questo sarà un aiuto o un ostacolo?
- Considerazioni sulla velocità nella chiamata, nell'aggiornamento o nella ricerca / manipolazione?
Ecco un esempio di alcune delle mie strutture di tabella:
- utenti: ID utente, nome utente, e-mail, password crittografata, data di registrazione, ip
- user_details - dati dei cookie, nome, indirizzo, dettagli di contatto, affiliazione, dati demografici
- user_activity - contributi, ultimo accesso online, ultima visualizzazione
- user_settings - impostazioni di visualizzazione del profilo
- user_interests - variabili pubblicizzabili come target
- user_levels - diritti di accesso
- user_stats - hit, conteggi
Modifica: ho votato tutte le risposte finora, tutte hanno elementi che essenzialmente rispondono alla mia domanda.
La maggior parte delle tabelle ha una relazione 1: 1 che è stata la ragione principale per denormalizzarle.
Ci saranno problemi se la tabella si estende su oltre 100 colonne quando è probabile che una gran parte di queste celle rimanga vuota?