2013-12-18 52 views
1

寻找一些关于如何绘制我的表模式来表示当前双向图的建议。如何创建MYSQL模式来表示图形数据库?

我有一个节点列表,假设他们是全球机场(SFO,LAX,CDG,HKG等)。 节点通过不同权重的双向边连接。

例如,SFO-> LAX边缘可以是10,但是LAX-> SFO是8.

的权重每天都在变化,也想MySQL数据库来存储所有的节点,边和每权重天。

这是我目前的想法,但有没有更好的方法来解决这个问题?我应该使用多个表吗?

DATE, SOURCE, DESTINATION, WEIGHT 
12/01 LAX  SFO   8 
12/01 SFO  LAX   10 
12/01 ...  ...   ... 
12/02 LAX  SFO   15 
12/02 SFO  LAX   9 
12/02 ...  ...   ... 
... ...  ...   ... 
+0

如果有某种实际数据(如用于计算今天的路线之一) - 它是有道理的,从它分离的历史。 – zerkms

+1

您的数据结构似乎在描述数据方面做得非常好。结构看起来很好。我会倾向于包含一个自动递增的主键。如果您的数据很大,出于性能原因,索引和分区可能是可取的。 –

+0

你可以通过机场表进一步标准化,并在这里用外键引用它们 –

回答

0

你的数据模型取决于你想要存储什么数据以及你想如何与之交互 - 你似乎只给了我们前者的局部图片。尽管单个表格可以描述边缘,但它是有方向性的,因此需要2行来描述每条边缘 - 如同您的示例一样。

例如,SFO-> LAX边缘可以是10,但是LAX-> SFO是8

这指出该数据是不对称的,并且因此不双向 - 在这种情况下单桌足够。

虽然您可以用关系数据库来描述数据,但它不提供将数据分析为图形的工具。然而,MySQL有一个数据引擎,它的确如此,但OQGraph开发的当前状态是unknown

2

创建节点表和边缘表

Node Table 
ID Airport AirportProperties 
1 LAX  Address of LAX 
2 SFO  Adress and Link etc. 
3 ... 


Edge Table 
ID NodeID refNodeID Date Weight 
1 1  2   12/01 8 
2 2  1   12/01 10 
3 ...