Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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
如何将关系数据库建模为neo4j图形数据库?_Neo4j_Relational Database_Graph Databases - Fatal编程技术网

如何将关系数据库建模为neo4j图形数据库?

如何将关系数据库建模为neo4j图形数据库?,neo4j,relational-database,graph-databases,Neo4j,Relational Database,Graph Databases,我有一个关系数据库(大约30个表),我想把它转置到neo4j图形数据库中,我不知道从哪里开始。。。 是否有一种将表和/或元组转换为图形模型的通用方法?(关系属性,一个或多个图形?)文档的最佳来源是什么 谢谢你的帮助 首先,如果可能的话,我建议不要使用关系数据库作为转换到图形模型的“参考”。关系建模中的错误和陷阱往往会转移到图形模型中,并引入其他奇怪之处。事实上,如果你有一个源ER图,那可能是一个更好的起点,因为它实际上已经是一个图了。甚至可以考虑为你的领域做一次重新建模练习! 也就是说,从基本的

我有一个关系数据库(大约30个表),我想把它转置到neo4j图形数据库中,我不知道从哪里开始。。。 是否有一种将表和/或元组转换为图形模型的通用方法?(关系属性,一个或多个图形?)文档的最佳来源是什么

谢谢你的帮助


首先,如果可能的话,我建议不要使用关系数据库作为转换到图形模型的“参考”。关系建模中的错误和陷阱往往会转移到图形模型中,并引入其他奇怪之处。事实上,如果你有一个源ER图,那可能是一个更好的起点,因为它实际上已经是一个图了。甚至可以考虑为你的领域做一次重新建模练习! 也就是说,从基本的角度来看,您可以将大多数表看作是表示节点类型(例如“用户”或“电影”)的表,其中连接表和键表示关系类型

无论如何,从我的角度来看,一个很好的起点是确定图形/数据源应该回答的一些问题。写下这些问题,并尝试提出代表这些问题的密码查询。通常情况下,一个图模型很自然地就产生于这样的努力,而这并不是那么困难

如果您还没有,我强烈建议您从这里免费下载一本Graph Databases电子书:

当你习惯于以一种关系的方式做事时,它被挤满了很多关于如何建立你的领域的信息,甚至还有一些事情要考虑。虽然Neo4j网站(Neo4j.org)有一本参考手册,其中有大量关于Cypher的最新信息,但它也包含一些关于Cypher的资料


希望这有帮助

这种转换不会有一站式的解决方案,因为并非所有数据模型都适合于图形建模,而且每个应用程序都是一个独特的特殊雪花……但是

通常,您的“基本”表(例如用户、角色、订单、产品)将成为节点,而您的“连接表”(也称为buster表)将成为您关系的候选表(例如UserRole、OrderLineItem)。要记住的关键点是,在一个图中,通常情况下,在两个特定节点之间只能有一个给定类型的关系-因此在上面的示例中,如果系统允许同一产品按顺序排列两次-这将导致问题

外键是关系的第二个来源,查看它们,看看作为关系或只是属性是否有意义

只要记住您正试图通过数据模型解决的问题-如果它正在遍历您的对象以查找关系和距离等。。。那么,图形可能是一个很好的匹配。如果您正在为一个电子商务应用程序建模,其中您正在处理单个嵌套对象(例如订单->行项目->产品->sku),那么关系模型可能是合适的


希望我的$0.02能有所帮助……

正如前面所说,从关系数据库模型到图形数据库模型没有神奇的转换

您应该查找原始实体以及它们之间的关系,以便找到节点、属性和关系。并始终记住您将要执行的查询类型


正如BtySgtMajor所说,这本书是一本好的开始,而且是免费的。

我想问题是“你想在里面做什么模型?”。如果您谈论从关系模型到图形模式的简单移动,我想您是做错了。你认为他们可以做得更好,就用他们来做吧。你希望用这些来实现什么好处?为什么要像60年代和70年代那样回到程序性数据处理?+1,但请注意,在neo4j中,节点之间可以有多条相同类型的边-另请参见。。。谢谢我完全认为你只能有一个=(A)-[r:REL_TYPE]-(B)。。。打开了更多的模型