不同的数据表示没有太大的变化

时间:2014-01-05 17:58:27

标签: mysql graph gephi

我有一个表格,代表网络中的节点及其路径。 所以它基本上是一个图表。

这样的事情:

              Path (tablename)
Destination        Nodes           Edges

China                13              1
China                16              2
China                1               3
Australia            13              1
Australia            234             2

所以这意味着,要到达中国,你必须通过节点13,16和1.路径由边缘表示。所以

China : 13->16->1
Australia: 13->234

现在,像gephi这样的图形软件可以轻松地将这些数据导入到它的应用程序中以自动绘制图形。但是,我的表现并不符合他们所拥有的。要在grephi中构建图形,我需要一个名为

的表

节点包含节点列表(例如13,16,1,13)

边缘:包含节点之间的连接,如:

             Edges
     From               To
eg    13                 16
      16                 1

所以我的问题是,有什么更好的方法可以从我已经拥有的东西中得到这种表示?这是否意味着创建这两个表,如果是这样,我如何使用该模式自动化该过程?或者我应该提取数据然后解析为gephi图形格式?

1 个答案:

答案 0 :(得分:1)

这取决于您使用该数据的内容。如果有其他用法而不是gephi,最好将数据保留为当前格式并使用SELECT语句提取节点和边缘:

-- All nodes
SELECT DISTINCT node FROM path;

-- All edges
SELECT DISTINCT a.node from_node, b.node to_node
FROM path a, path b
WHERE a.destination = b.destination
  AND a.edge = b.edge - 1;

如果仅将数据用于图形,则可以创建2个表并通过INSERT语句用相同的SELECT填充它们。像:

CREATE TABLE nodes (node INTEGER PRIMARY KEY);
INSERT INTO nodes SELECT DISTINCT node FROM path;

CREATE TABLE edges (from INTEGER NOT NULL, to INTEGER NOT NULL, UNIQUE(from,to));
INSERT INTO edges SELECT DISTINCT a.node, b.node ...