Pergunta

Estou procurando opiniões sobre como modelar um gráfico direcionado que contém um nó especial.

Nó especial:

  1. Não pode ter nenhuma bordas levando a ele.
  2. Não pode ser removido.

Design atual:

Tabelas: nós, bordas. As bordas contêm duas colunas; From_Node_ID e TO_NODE_ID, cada um referenciando um registro na tabela de nós.

Em vez de armazenar o nó especial como o primeiro registro na tabela de nós, decidi não manter um registro para ele, construindo -o separadamente de qualquer consulta de banco de dados. Na tabela de arestas, o NULL assume um significado especial na coluna From_Node_Id, referindo -se ao nó central.

Minha motivação para usar esse design era que eu não precisaria me preocupar em proteger um registro do nó central contra exclusão/modificação ou ser referenciado na coluna TO_NODE_ID da tabela de arestas. Isso também impediria automaticamente uma vantagem de ir de e para o mesmo nó. Sei que existem algumas desvantagens nesse design, como não ser capaz de fabricar de_node_id e para_node_id uma chave primária composta e provavelmente muito mais.

Atualmente, estou inclinado a tornar o nó central um registro real e criar cheques para esse nó nos métodos de banco de dados relevantes. Qual é a melhor maneira de fazer esse design?

Foi útil?

Solução

Eu vejo alguns argumentos contra o uso de nulo neste caso.

  1. Se os nós contiverem dados reais, você precisaria de código rígido para o nó central no aplicativo.
  2. Haverá problemas se o nó central puder ser alterado.
  3. O significado usual de nulo é que não há valor ou o valor é desconhecido. Por causa disso, outra pessoa que se aproxima do design proposta pode achá -lo inintivo.

Em outras palavras, eu preferiria ter linha no banco de dados para o nó central.

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