Estou tentando criar um esquema de banco de dados que será usado para uma rede social semelhante à do Facebook.
Pois posts
tenho dois esquemas em mente que são os seguintes:
- Design de tabela única
Nesta abordagem, haverá apenas uma tabela única para todos os tipos de postagem (texto, foto, vídeo etc.).
A estrutura pode ser semelhante à seguinte:
|-----------------------------------------------|
| id | user_id | type | content | ... |
|-----------------------------------------------|
A content
coluna conterá os json_encoded
dados para todos os tipos de mídia.
- Projeto de
várias tabelas Essa abordagem consideraria tabelas diferentes para cada tipo de mídia, que será uma tabela principal que contém o registro de postagem principal e cada tabela orientada à mídia conterá os respectivos dados de mídia.
Tabela de postagens:
|-----------------------------------------------|
| id | user_id | type | content | ... |
|-----------------------------------------------|
Tabela de fotos:
|------------------------------------------------------------|
| id | post_id | user_id | url | thumb_url | ... |
|------------------------------------------------------------|
Tabela de vídeos:
|-----------------------------------------------------------------|
| id | post_id | user_id | url | screenshot_url | ... |
|-----------------------------------------------------------------|
e assim por diante...
Eu ficaria muito feliz se você pudesse me orientar sobre qual abordagem é melhor ou qualquer outro esquema que serviria ao propósito em melhores condições, em termos de desempenho.