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

MYSQL:Configuração da tabela de detalhes do perfil do usuário - prática recomendada


Coisas a considerar com suas abordagens

Armazenando perfil de usuário na tabela de usuários
  • Essa geralmente será a abordagem mais rápida em termos de obtenção dos dados do perfil, embora você possa ter muitos dados redundantes aqui (colunas que podem não conter nenhuma informação).
  • Rápido (especialmente se você apenas extrair as colunas necessárias do banco de dados)
  • Dados desperdiçados
  • Mais difícil de trabalhar/manter (possivelmente com interfaces como PHPMyAdmin)

Armazenando perfil de usuário em User_Profile Tabela 1-1 relacionamento com usuários
  • Ainda deve ser bastante rápido com uma junção e você pode eliminar alguma redundância de dados se os perfis de usuário não forem criados, a menos que um usuário preencha um.
  • Mais fácil de trabalhar
  • Sempre um pouco mais lento devido à junção (ou 2ª consulta)

Armazenando perfil de usuário como propriedades e valores em tabelas

*ou seja Tabela para armazenar opções possíveis, tabela para armazenar user_id, option_id e value*
  • Nenhum dado redundante armazenado, todos os dados são relevantes
  • Método mais normalizado
  • Mais lento para recuperar e atualizar dados

Minha impressão é que a maioria dos sites usa o 2º método e armazena as informações do perfil em uma segunda tabela, é comum que a maioria dos sites maiores desnormalize o banco de dados (twitter, facebook) para obter maior desempenho de leitura às custas de desempenho de gravação mais lento.

Eu acho que manter as informações do perfil em uma segunda tabela é provavelmente o caminho a seguir quando você está olhando para 50.000 registros. Para um desempenho ideal, você deseja manter os dados gravados fortemente separados dos dados que são lidos intensamente para garantir que o cache possa funcionar de forma eficaz.