如何可视化MySQL嵌套集?

时间:2016-08-02 14:52:06

标签: javascript php jquery mysql

我正在遵循此处所示的嵌套集模型:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

我有层次数据,实际上是一堆带有边/节点的不同图形,我希望可视化它。我理解嵌套集的概念,但不知道如何在不运行过多查询(性能)的情况下知道每个节点的父/子关系。

我正在尝试使用来自visjs的http://visjs.org/examples/network/basicUsage.html之类的内容来创建图表。

但是visjs想要采用以下格式的数据集:

<script type="text/javascript">
  // create an array with nodes
  var nodes = new vis.DataSet([
    {id: 1, label: 'Node 1'},
    {id: 2, label: 'Node 2'},
    {id: 3, label: 'Node 3'},
    {id: 4, label: 'Node 4'},
    {id: 5, label: 'Node 5'}
  ]);

  // create an array with edges
  var edges = new vis.DataSet([
    {from: 1, to: 3},
    {from: 1, to: 2},
    {from: 2, to: 4},
    {from: 2, to: 5}
  ]);

  // create a network
  var container = document.getElementById('mynetwork');
  var data = {
    nodes: nodes,
    edges: edges
  };
  var options = {};
  var network = new vis.Network(container, data, options);
</script>

有没有办法可以运行单个查询或有效的函数来返回数据,以便我知道:

节点1(lft 1,rgt 8)有子节点2(2,3)和节点3(4,7)

节点3具有子节点4(5,6)

    Node 1
      /\
Node 2  Node 3
          | 
        Node 4

我可以获得完整的树,或者我可以做缩进的事情,

基于visjs示例,我不确定如何有效地了解每个节点及其边缘。

任何建议都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

这取决于你的意思&#34; visualize。&#34;

在您选择的任何编程语言中,有向图可以表示为一组节点对,每个节点对代表一个父节点和一个子节点。没有父节点的节点是源,而没有子节点的节点是宿。有许多众所周知且广泛发布的算法,用于行走树的切割并评估所有可能的步道,电路等。