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



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

类似这样的东西:

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图格式?

这取决于您使用这些数据的目的。如果除了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;

若您只将数据用于一个图,那个么您可以创建两个表,并使用相同的SELECT语句通过INSERT语句填充它们。类似:

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 ...

最新更新