Pergunta

Estou criando um quadro de mensagens de rosca e eu estou tentando mantê-lo simples. Há uma mesa de mensagem e, em seguida, uma mesa de respostas que tem um campo 'reply_id' que pode ser nulo para indicar uma resposta de nível superior, ou um valor que indica uma resposta de rosca.

Estou um pouco confuso sobre como fazer uma chamada Escolha neste tipo de mesa embora?

Reply
-id (every reply gets a unique id)
-message_id (the message it is replying to)
-reply_id (the id of the reply it may be replying to - for threading)
-reply

Eu sei que isto pode ser um problema complexo, especialmente para o desempenho, mas eu realmente estou apenas procurando a solução mais básica para isso.

graças ...

Foi útil?

Solução

Você está usando a maneira ingênua "livro" de árvores de armazenamento, ou seja, armazenar uma referência para o pai imediato. Este projeto é chamado Lista de Adjacência . Existem outras soluções:

  • Caminho enumeração , onde você armazena em cada nó da árvore uma string codificação de todos os seus ancestrais diretos.
  • conjuntos aninhados , uma abordagem inteligente por Joe Celko onde você usa dois valores numéricos por nó para ligados todos os seus descendentes.
  • Encerramento Tabela (ou adjacência Relação), onde você usa uma tabela separada para listar cada par ancestral-descendente.

Veja a minha resposta a " o que é a maneira mais eficiente / elegante para analisar uma mesa plana em uma árvore? " para referências e exemplos do projeto Encerramento tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top