我有一个表格,代表网络中的节点及其路径。 所以它基本上是一个图表。
这样的事情:
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图形格式?
答案 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 ...