Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建MYSQL模式来表示图形数据库?_Mysql_Sql_Database - Fatal编程技术网

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

如何创建MYSQL模式来表示图形数据库?,mysql,sql,database,Mysql,Sql,Database,正在寻找有关如何映射表模式以表示当前双向图的建议 我有一个节点列表,假设它们是全球机场(SFO、LAX、CDG、HKG等)。 节点通过具有不同权重的双向边连接 例如,SFO->LAX edge可能为10,但LAX->SFO为8 权重每天都在变化,我希望mysql数据库每天存储所有节点、边和权重 这是我目前的想法,但有没有更好的方法?我应该使用多个表吗 DATE, SOURCE, DESTINATION, WEIGHT 12/01 LAX SFO 8 12/01 SFO

正在寻找有关如何映射表模式以表示当前双向图的建议

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

例如,SFO->LAX edge可能为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 ...     ...          ...
...   ...     ...          ...

您的数据模型取决于您想要存储什么数据以及您想要如何与之交互——您似乎只为我们提供了前者的部分图片。虽然一个表可以描述边,但它是有方向性的,因此需要两行来描述每个边-如您的示例所示

例如,SFO->LAX edge可能为10,但LAX->SFO为8

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


虽然可以用关系数据库来描述数据,但它不提供以图形形式分析数据的工具。然而,MySQL有一个数据引擎可以做到这一点,但是当前的开发状态是。

创建一个节点表和一个边缘表

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

如果存在某种类型的实际数据(比如今天用来计算路线的数据),将历史数据与之分离是有意义的。您的数据结构在描述数据方面似乎做得很好。我觉得这个结构很好。我倾向于包含一个自动递增的主键。如果您的数据很大,出于性能原因,可能需要索引和分区。您可以通过使用airport表并在此处使用外键引用它们来进一步规范化