Modelando um gráfico direcionado com um nó central especial
-
19-09-2019 - |
Pergunta
Estou procurando opiniões sobre como modelar um gráfico direcionado que contém um nó especial.
Nó especial:
- Não pode ter nenhuma bordas levando a ele.
- 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?
Solução
Eu vejo alguns argumentos contra o uso de nulo neste caso.
- Se os nós contiverem dados reais, você precisaria de código rígido para o nó central no aplicativo.
- Haverá problemas se o nó central puder ser alterado.
- 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.