Quale sarebbe una migliore progettazione di database per un sito Web di social network? Una singola tabella con più colonne e meno righe o più tabelle con meno colonne ma più righe?
Ad esempio: un utente può pubblicare un aggiornamento sulla propria bacheca o in un gruppo.
Due progetti di database a cui riesco a pensare sono:
Design 1
UserPosts
- id
- ID utente
- inviare
- appuntamento
UserGroupPost :
- id
- groupId
- ID utente
- inviare
- appuntamento
Potenziale problema : potrebbe richiedere un join, che può (in futuro) essere una query lenta.
Design 2
Messaggi :
- id
- ID utente
- groupId
- inviare
- datetime (dove groupid sarebbe nullo se l'utente post sulla propria bacheca)
Potenziale problema : il ciclo su un set di dati di grandi dimensioni potrebbe richiedere un tempo (lungo).
Come posso ottenere prestazioni migliori quando aumentano i dati? C'è un altro modo (migliore)?