当前位置:  开发笔记 > 后端 > 正文

如何在SQL中建模贝叶斯网络,或者更一般地说是有向加权图?

如何解决《如何在SQL中建模贝叶斯网络,或者更一般地说是有向加权图?》经验,为你挑选了1个好方法。

我在网上发现了一些文章,提供了如何在SQL中对各种图形(特别是DAG)进行建模的示例,但考虑到它们的建模相对简单,它们看起来都非常复杂.

这样做有最佳/标准的方法吗?我目前的想法是这样的:

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
) 

那有什么不对吗?任何人都知道更好(更强大,也许)的方式?



1> ConcernedOfT..:

这将是一个非常合理的方法.尽管某些系统(如Oracle或SQL Server)具有递归查询功能,但SQL并不能很好地执行递归结构.

虽然您可能会发现一种对特定搜索类型更有效的结构,但我认为在一般情况下您不会发现明显更好的结构.如果您的应用程序的要求以这种方式受到限制,那么这样的优化可能会给您带来好处.

由于贝叶斯网络是有向无环图(DAG),纯粹递归的父子关系不足以对网络进行建模(即一个节点可以有多个父节点),因此您的类型为M:M关系所描述的将是必要的.

Joe Celko撰写的各种"SQL for Smarties"书籍很好地概述了在SQL中实现和查询层次结构和图形结构的技术.这些是迄今为止我所知道的最佳资源. 强烈推荐.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有