Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Data Modeling_Graph Databases - Fatal编程技术网

Neo4j 一类对象的图形数据库数据模型

Neo4j 一类对象的图形数据库数据模型,neo4j,data-modeling,graph-databases,Neo4j,Data Modeling,Graph Databases,假设我是一名机械师,曾在许多不同的汽车上工作过,并希望保存一个我工作过的汽车的数据库。这些车有不同的制造商、型号,一些客户用不同的零件修改了这些车的版本,所以不能保证同一型号的车会给你同样的车。此外,我希望能够轻松地看到所有这些不同的汽车及其相似/不同之处。基本上,数据库需要同时表示我遇到的所有汽车之间的逻辑相似性/差异性,同时仍然能够推/拉我遇到的汽车的每个实例 这是为关系数据库还是图形数据库设置的 如果是一个图形数据库,您将如何着手设计它?每个关系标签都只是“has_a”或“is_a_typ

假设我是一名机械师,曾在许多不同的汽车上工作过,并希望保存一个我工作过的汽车的数据库。这些车有不同的制造商、型号,一些客户用不同的零件修改了这些车的版本,所以不能保证同一型号的车会给你同样的车。此外,我希望能够轻松地看到所有这些不同的汽车及其相似/不同之处。基本上,数据库需要同时表示我遇到的所有汽车之间的逻辑相似性/差异性,同时仍然能够推/拉我遇到的汽车的每个实例

这是为关系数据库还是图形数据库设置的

如果是一个图形数据库,您将如何着手设计它?每个关系标签都只是“has_a”或“is_a_type_of”。你会在所有的汽车之间有逻辑结构,并且对于每个汽车,让它们指向叶节点吗?或者让每个关系表示每个特定的汽车,并让这些关系跨越汽车的逻辑树结构


好的,一种方法是为每种域对象创建一个节点类型。您有一辆由VIN标识的汽车,它可以链接到品牌、型号和年份。您也有机械节点,[:在]各种汽车节点上工作。不要将品牌/型号/年份与汽车一起存储,而是通过关系进行链接,例如:

CREATE (c:Car { VIN: "ABC"})-[:make]->(m:Make {label:"Toyota"});
……等等

每个关系标签都只是一个“has_a”或 “是一种类型的”

可能不会,我会创建节点类型配对所特有的不同关系类型。所以机修工->汽车将是:继续工作,汽车->模型将是[:模型]等等。我不建议使用与has_a everywhere相同的关系类型,因为从建模的角度来看,很难对这些关系的有效域和范围进行排序,例如,你最终会遇到has_a可以从几乎任何东西变成几乎任何东西的情况,而且要找出你想要的关系是很难的

或者你会让每个关系代表每个特定的汽车和 这些关系是否跨越了汽车的逻辑树结构

每辆车都是自己的节点,由VIN等标识,而不是品牌/型号/年份。稍后拆分make/model/year将允许您非常轻松地查询所有VOVO等

最后一个也是最难回答的问题:

这是为关系数据库还是图形数据库设置的

这是一个固执己见的问题,它吸引了固执己见的答案,让我这么说吧:太阳底下的任何数据都可以通过关系和图表来完成。所以我可以回答是的关系图和是的图。您的数据和域没有选择您应该使用RDBMS还是Graph。您的查询和访问模式选择RDBMS vs.graph。如果您知道需要如何使用数据、将运行哪些查询以及尝试执行哪些操作,那么有了这些信息,您就可以进行自己的分析,并确定哪一个更好。两者都有长处和短处以及许多折衷点。如果不知道如何访问数据,就不可能以真正公平的方式回答这个问题