我在寻找的意见,就如何模型一个向图,其中包含一个特殊的节点。

特别节点:

  1. 不能有任何边领导。
  2. 无法去除。

目前的设计:

表:节点、边缘。边缘包含两个列;from_node_id和to_node_id,每个参考记录中的节点表。

而不是储存的特别节点,作为第一个记录在节点表,我决定不要保持一个记录,它在所有、建造单独的任何数据库查询。在边表,NULL需要在一个特殊的意义在from_node_id列,参照中心节点。

我的动机对于使用这种设计是,我就不必担心保护一个中心节点的记录中删除/修改或被引用的to_node_id列的边表。这也将自动地防止边缘去,并从相同的节点。我意识到存在着一些缺陷到这种设计,如不能够使from_node_id和to_node_id组合主键,而且很可能更多。

我目前倾向于使中心节点的一个实际记录和建立检查那个节点的相关数据库的方法。什么是最好的方式去这样的设计?

有帮助吗?

解决方案

我看到一些论点,反对使用空,在这种情况。

  1. 如果节点包含实际的数据,你就必须硬代码,数据中心节点的应用程序。
  2. 会有麻烦,如果中央节点可以改变的。
  3. 通常的含义NULL是,有没有价值或价值是未知的。因此另一人的办法的拟议的设计可以找到它直观.

换句话说,我希望排在数据库中心节点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top