我发现了一些文章在网上提供的例子如何模型图表的各种各样(Dag,特别是)在SQL,但他们似乎都极为复杂,鉴于相对简单的什么他们建模。

是有一个最好的标准的方式这样做?我目前的想法是这样的:

create table node (
  id int not null auto_increment,
  name TEXT
)

create table edge (
  from_node int not null,
  to_node int not null,  
  weight float
) 

是的有什么错?任何人知道的更好(更强大,也许可)的方式?

有帮助吗?

解决方案

这将是一个相当合理的方法。SQL并没有真正做递归结构,虽然一些系统,例如Oracle或SQL服务器已经递归的查询功能。

虽然你可能找到一个结构,该结构的工作更好地为特定类型的搜索,我不认为你会找到一个明显更好的结构,在一般的情况。如果应用程序的要求都限于以这种方式,这种优化可能会带给你的利益。

作为一个贝网络是一个 针对环图 (DAG),一个纯粹的递归父子关系没有足够的模拟网络(即一个节点可以有一个以上的父母),因此M:M关系的类型你描述的将是必要的。

各种各样的'SQL为利己'的书 乔Celko 得到一个很好的概述的技术用于实现和查询的分级和图表的结构在SQL。这些是迄今为止最好的资源上的问题,我知道。 强烈建议。

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