Estou desenvolvendo um fórum como um aplicativo usando um banco de dados MySQL. Tenho mensagens, comentários e respostas apenas qualquer outro fórum.
No momento tenho uma tabela para postagens, uma tabela para comentários/respostas e uma tabela para relacionamentos usuário/objeto.
Ultimamente, tenho estudado a estrutura do banco de dados do WordPress CMS e notei que todos os itens acima estão em uma única tabela e há um campo 'post_type' que determina o tipo do objeto (por exemplo, post, comentário ou resposta).
Descobri que isso é muito flexível para os propósitos deste site, mas é sensato em termos de velocidade?
Além disso, eu estava pensando em usar um banco de dados adicional, como ElasticSearch apenas para consulta e MySQL apenas para armazenamento.
Quais são seus pensamentos sobre essa abordagem? Vantagens desvantagens?
Agradeço antecipadamente :)
Quando o padrão de dados é o mesmo e os dados possivelmente estão relacionados, essa configuração é totalmente adequada e até desejável, pois torna certas tarefas (como o suporte a uma função de pesquisa) muito mais fáceis. Com indexação adequada e velocidade de consultas sólida não deve ser uma preocupação.
Esse tipo de tabela só deve ser evitado se você estiver tentando forçar os dados a se ajustarem ao padrão por causa de menos tabelas (como decidir salvar os dados do usuário como uma representação de string para caber nessa tabela com um novo tipo) ou usar tipos para indicar diferentes referências de chave para outras tabelas que compartilham uma única coluna, o que inibiria o uso de chaves estrangeiras e quebraria seu modelo relacional.