Digamos que temos uma tabela de tópicos e queremos a capacidade de mesclar tópicos, de forma que todas as postagens de x tópicos sobre a mesma coisa apareçam em um único tópico (o mais antigo). Assim, quando alguém clicar em um tópico redundante que foi mesclado, será levado ao mais antigo, com todas as postagens do mais recente incluídas.
Minha ideia era criar uma tabela de mesclagem, que continha os seguintes atributos: merge_id (que é uma chave primária, tipo serial, incrementada automaticamente), topic_id e data. Portanto, se cinco postagens fossem mescladas, elas teriam um registro cada na tabela de mesclagem, todas associadas pelo merge_id. Cada tópico também teria um merge_id em sua tabela, definido como null se não fosse mesclado com outro post.
No entanto, digamos que eu precise mesclar outro com esses cinco, teria que deletar esses cinco e criar um novo registro para cada um, incluindo o sexto para que todos tenham o mesmo merge_id e, em seguida, atualize o merge_id em todos os tópicos mesclados; tudo isso dentro de uma transação.
Isso parece um pouco complicado para mim, e eu queria saber se alguém conhece uma maneira muito melhor de implementar a fusão de tópicos/tópicos do fórum.
Em vez de armazenar o merge_id na tabela de tópicos, armazene o id do tópico base, aquele em que as postagens deste tópico agora aparecem. Um nulo mostraria que o tópico atual não foi mesclado ou é o tópico base no qual outros foram mesclados. Para mesclar um novo tópico em um conjunto existente, seria necessário apenas definir o arquivo
base_topic_id
.