2016-08-02 68 views
0

我遵循如下所示的嵌套集模型:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/如何可視化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的例子,我不確定如何有效地知道每個節點及其邊緣。

任何意見將不勝感激。謝謝!

回答

0

這取決於「可視化」的含義。

在您選擇的任何編程語言中,有向圖可以表示爲一組節點對,每個節點對代表一個父節點和一個子節點。沒有父母的節點是源,而沒有孩子的節點是匯。有許多知名的和廣泛公佈的算法用於步行樹的切割和評估所有可能的步行,電路等。