gpt4 book ai didi

mysql - 使用特殊的中心节点对有向图建模

转载 作者:可可西里 更新时间:2023-11-01 08:38:26 25 4
gpt4 key购买 nike

我正在寻找有关如何对包含一个特殊节点的有向图建模的意见。

特殊节点:

  1. 不能有任何边指向它。
  2. 无法删除。

当前设计:

表:节点、边。 Edges 包含两列; from_node_id 和 to_node_id,每个引用 Nodes 表中的一条记录。

我没有将特殊节点存储为 Nodes 表中的第一条记录,而是决定根本不为其保留记录,而是将其与任何数据库查询分开构建。在 Edges 表中,NULL 在 from_node_id 列中具有特殊含义,指的是中心节点。

我使用此设计的动机是我不必担心保护中心节点记录不被删除/修改或在 Edges 表的 to_node_id 列中被引用。这也将自动防止边从同一节点进出。我意识到这种设计有一些缺点,例如无法使 from_node_id 和 to_node_id 成为复合主键,可能还有更多缺点。

我目前倾向于使中心节点成为实际记录并在相关数据库方法中为该节点创建检查。进行此设计的最佳方法是什么?

最佳答案

我看到一些反对在这种情况下使用 NULL 的论据。

  1. 如果节点包含实际数据,您将不得不在应用程序中为中央节点硬编码数据。
  2. 如果中心节点可以改变就会有麻烦。
  3. NULL 通常的意思是没有值或者值未知。因此,接近所提议设计的另一个人可能会发现它不直观。

换句话说,我更愿意在中央节点的数据库中有行。

关于mysql - 使用特殊的中心节点对有向图建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com