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

MYSQL :Utilisateur - configuration de la table des détails du profil - bonne pratique

Éléments à prendre en compte dans vos approches

Stocker le profil utilisateur dans le tableau des utilisateurs

  • C'est généralement l'approche la plus rapide pour accéder aux données de profil, bien que vous puissiez avoir beaucoup de données redondantes ici (des colonnes qui peuvent ne contenir aucune information).
  • Rapide (surtout si vous n'extrayez que les colonnes dont vous avez besoin de la base de données)
  • Données perdues
  • Plus difficile à utiliser/maintenir (sans doute avec des interfaces telles que PHPMyAdmin)

Stockage du profil utilisateur dans User_Profile Table 1-1 relation avec les utilisateurs

  • La jointure devrait toujours être assez rapide et vous pouvez éliminer certaines redondances de données si les profils utilisateur ne sont pas créés à moins qu'un utilisateur n'en remplisse un.
  • Plus facile à utiliser
  • Toujours un peu plus lent en raison d'une jointure (ou d'une deuxième requête)

Stocker le profil utilisateur sous forme de propriétés et de valeurs dans des tables

*c'est à dire. Table pour stocker les options possibles, table pour stocker user_id, option_id et value*

  • Aucune donnée redondante stockée, toutes les données sont pertinentes
  • Méthode la plus normalisée
  • Plus lent pour récupérer et mettre à jour les données

Mon impression est que la plupart des sites Web utilisent la 2ème méthode et stockent les informations de profil dans une deuxième table, il est courant pour la plupart des grands sites Web de dénormaliser la base de données (twitter, facebook) pour obtenir de meilleures performances de lecture au détriment de performances d'écriture plus lentes.

Je pense que conserver les informations de profil dans une deuxième table est probablement la voie à suivre lorsque vous examinez 50 000 enregistrements. Pour des performances optimales, vous souhaitez séparer les données fortement écrites des données fortement lues afin de garantir le bon fonctionnement du cache.