Qual seria o melhor design de banco de dados para um site de rede social? Uma única tabela com mais colunas e menos linhas ou várias tabelas com menos colunas, mas mais linhas?
Por exemplo: Um usuário pode postar uma atualização em seu mural ou em um grupo.
Dois designs de banco de dados em que consigo pensar são:
Design 1
UserPosts
- Eu iria
- ID do usuário
- postar
- data hora
UserGroupPost :
- Eu iria
- groupId
- ID do usuário
- postar
- data hora
Problema potencial : pode exigir junções, o que pode (no futuro) ser uma consulta lenta.
Design 2
Mensagens :
- Eu iria
- ID do usuário
- groupId
- postar
- datetime (onde groupid seria nulo se o usuário postar em seu mural)
Problema em potencial : o loop em um conjunto de dados grande pode levar um tempo (longo).
Como posso obter um melhor desempenho quando os dados aumentam? Existe alguma outra maneira (melhor)?