Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Uma mesa vs várias mesas


Pode haver razões reais para querer/precisar de uma única tabela de comentários. Por exemplo, seria mais simples visualizar todos os comentários de um determinado usuário. Além disso, as pesquisas em todos os comentários seriam mais simples (coloque um índice FTS em uma tabela e pronto).

Por outro lado, se não houver uma razão convincente para manter os comentários em uma única tabela, existe uma possível terceira (e bastante óbvia) solução.

Crie uma tabela de comentários separada para cada item (post, evento, arquivo, documento). As relações do RI seriam muito simples de definir e descrever nessa situação. Além disso, se você estiver digitando consultas ad-hoc com muita frequência, isso pode simplificar. Por exemplo
 select * from documents d left join doc_comments c 
                           on d.id = c.docid 
                           where d.id=42;

Nada disso pode ser pertinente ou importante para sua situação, mas pode valer a pena considerar.

Um pensamento aleatório adicional:ambas as soluções no OP têm a "sensação" de que estão definindo um relacionamento muitos para muitos (por exemplo, um comentário pode pertencer a vários itens). Assumindo que não é a situação desejada, pode ser prevenida com o índice único apropriado, ... mas ainda ... tem aquela aparência inicial, que parece que pode levar a uma possível confusão.