如何创建MYSQL模式来表示图形数据库?

时间:2013-12-18 23:06:45

标签: mysql sql database

寻找关于如何映射我的表模式以表示当前双向图的一些建议。

我有一个节点列表,假设它们是全球机场(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 ...     ...          ...
...   ...     ...          ...

2 个答案:

答案 0 :(得分: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  ...

答案 1 :(得分:0)

您的数据模型取决于您要存储的数据以及您希望与之交互的方式 - 您似乎只给了我们前者的部分图片。虽然单个表可以描述边缘,但它是方向性的,因此需要2行来描述每条边 - 根据您的示例。

  

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

这表明数据不是对称的,因此不是双向的 - 在这种情况下单个表就足够了。

虽然您可以根据关系数据库描述数据,但它不提供用于将数据分析为图形的工具。但是,有一个MySQL的数据引擎就是这样做的,但是OQGraph的当前开发状态​​是unknown