Digamos que eu esteja administrando um fórum, onde cada usuário pode fazer várias postagens.
Então eu estruturei meu banco de dados da seguinte maneira: (com colunas não relacionadas omitidas)
PK | Eslováquia | CADEIA_0 |
---|---|---|
POST,post_id | thread,seq_num | ID do usuário |
USUÁRIO,id_do_usuário | NÃO_RELEVANTE | grandes_meta_dados |
Um caso de uso comum é renderizar um tópico de discussão inteiro, com todas as postagens dentro dele. No entanto, sempre que renderizamos uma postagem, renderizaremos alguns metadados do usuário que são representados acima como big_meta_data
(Isso pode incluir a imagem do perfil do usuário, a reputação do usuário, etc.)
Claro que podemos primeiro executar uma consulta para obter todas as postagens e, então, para cada usuário que vemos, executamos uma consulta adicional (provavelmente em lote).
Existe alguma maneira de evitar consultas extras aos registros do usuário ou o acima é suficiente?
A única maneira que consigo pensar é manter uma cópia disso big_meta_data
nas linhas POST, mas isso parece difícil de gerenciar e consome armazenamento extra.
Para obter dados do usuário, você precisaria fazer uma consulta adicional. Considerando que a latência será de um dígito milissegundo, é bastante normal fazer várias solicitações.
Se você mantivesse as informações do usuário em cada item da postagem e, caso um usuário alterasse um atributo em seu perfil, você precisaria alterar cada item da postagem armazenado, o que é complexo e não recomendado.