¿Cuál sería un mejor diseño de base de datos para un sitio web de red social? ¿Una sola tabla con más columnas y menos filas, o varias tablas con menos columnas pero más filas?
Por ejemplo: un usuario puede publicar una actualización en su muro o en un grupo.
Dos diseños de bases de datos que se me ocurren son:
Diseño 1
Publicaciones de usuario
- carné de identidad
- ID de usuario
- enviar
- fecha y hora
UserGroupPost :
- carné de identidad
- Identificación del grupo
- ID de usuario
- enviar
- fecha y hora
Problema potencial : podría requerir uniones, que pueden (en el futuro) ser una consulta lenta.
Diseño 2
Publicaciones :
- carné de identidad
- ID de usuario
- Identificación del grupo
- enviar
- datetime (donde groupid sería nulo si el usuario publica en su muro)
Problema potencial : La reproducción en bucle sobre un conjunto de datos grande podría llevar un tiempo (largo).
¿Cómo puedo obtener un mejor rendimiento cuando aumentan los datos? ¿Hay alguna otra (mejor) manera?