Quelle serait une meilleure conception de base de données pour un site Web de réseau social? Une seule table avec plus de colonnes et moins de lignes, ou plusieurs tables avec moins de colonnes mais plus de lignes?
Par exemple: un utilisateur peut publier une mise à jour sur son mur ou dans un groupe.
Je peux penser à deux conceptions de bases de données:
Conception 1
UserPosts
- id
- identifiant d'utilisateur
- Publier
- datetime
UserGroupPost :
- id
- groupId
- identifiant d'utilisateur
- Publier
- datetime
Problème potentiel : pourrait nécessiter des jointures, ce qui peut (à l'avenir) être une requête lente.
Conception 2
Messages :
- id
- identifiant d'utilisateur
- groupId
- Publier
- datetime (où groupid serait nul si l'utilisateur poste sur son mur)
Problème potentiel : la boucle sur un grand ensemble de données peut prendre un (long) temps.
Comment obtenir de meilleures performances lorsque les données augmentent? Existe-t-il un autre (meilleur) moyen?