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
如何在neo4j中为通过第三个节点关联的两个节点建模?_Neo4j - Fatal编程技术网

如何在neo4j中为通过第三个节点关联的两个节点建模?

如何在neo4j中为通过第三个节点关联的两个节点建模?,neo4j,Neo4j,我正在学习Neo4j,目前正在白板上显示我正在考虑的场景。 我有三种产品P1、P2、P3。P1和P2是独立的产品。P3是帮助您连接P1和P2的适配器 我想到了P1-[connects_to]-P2,其中P3是connects_to关系的属性,但是我如何存储P3的属性呢? 如果我将所有三个产品都创建为节点,并执行P1-[connections_to]-P3和P2-[connections_to]-P3,这并不能真正代表该域。 如何在Neo4j中对此进行建模 还可以在关系上存储属性 为什么将P3创建

我正在学习Neo4j,目前正在白板上显示我正在考虑的场景。 我有三种产品P1、P2、P3。P1和P2是独立的产品。P3是帮助您连接P1和P2的适配器

我想到了
P1-[connects_to]-P2
,其中P3是
connects_to
关系的属性,但是我如何存储P3的属性呢? 如果我将所有三个产品都创建为节点,并执行
P1-[connections_to]-P3
P2-[connections_to]-P3
,这并不能真正代表该域。 如何在Neo4j中对此进行建模

  • 还可以在关系上存储属性

  • 为什么将P3创建为节点并将其连接到其他节点不能代表域

  • “连接到”是一种非常糟糕的非描述性关系类型,请在您的域中找到更好地表达这种关系的内容

  • 还可以在关系上存储属性

  • 为什么将P3创建为节点并将其连接到其他节点不能代表域

  • “连接到”是一种非常糟糕的非描述性关系类型,请在您的域中找到更好地表达这种关系的内容


  • 将P1、P2和P3作为节点(因为你说这三个节点都是产品),并使用不同的标签将P3标识为连接节点。

    将P1、P2和P3作为节点(因为你说这三个节点都是产品),将P3标识为连接节点。

    我认为你可以使用类似的模型:

    (P1)-[:connected_through]->(A:Adapter)<-[:connected_through]-(P2)
    
    (A)-[:type_is]->(P3)
    
    (P1)-[:通过连接]->(A:适配器)(P3)
    

    我认为您可以使用类似的型号:

    (P1)-[:connected_through]->(A:Adapter)<-[:connected_through]-(P2)
    
    (A)-[:type_is]->(P3)
    
    (P1)-[:通过连接]->(A:适配器)(P3)
    

    具有相同属性的适配器仅将两个产品连接在一起?或者可以与其他产品连接在一起?可以用于将其他产品连接在一起…具有相同属性的适配器只能将两个产品连接在一起?或者可以与其他产品连接在一起?可以用于将其他产品连接在一起…如果P1和P2都连接到P3,则P1不一定连接到P2,因为这些连接可以用于连接到其他产品(可能是P4)。因此,它不能代表该领域。请理解我的示例并没有真正表达这一点,因此您的问题是非常有效的。(1)我想我不想让P3作为一种关系,因为它可以用于将许多产品连接在一起(例如,想想螺丝和螺母)。(3) “我可以连接P1和P2,但您需要P3”是这里常见的说法,因此我选择了它。如果你能详细说明为什么它不好,那就太好了,也许这会给我一个思考的方向!如果P1和P2都连接到P3,则P1不一定连接到P2,因为这些连接可能用于连接到其他产品(可能是P4)。因此,它不能代表该领域。请理解我的示例并没有真正表达这一点,因此您的问题是非常有效的。(1)我想我不想让P3作为一种关系,因为它可以用于将许多产品连接在一起(例如,想想螺丝和螺母)。(3) “我可以连接P1和P2,但您需要P3”是这里常见的说法,因此我选择了它。如果你能详细说明为什么它不好,那就太好了,也许这会给我一个思考的方向!有趣的想法,…也许我可以将“From”和“To”存储为属性,以表示P3实例连接了哪两个产品?这是个坏主意吗?如果P3总是连接不超过一对节点(例如P1和P2),则使用定向关系(P1)->(P3)->(P2)。在以后的查询中,您可以很容易地识别哪些节点进入P3,哪些节点离开P3。然而,如果P3可以连接许多对节点,您将不得不重新考虑设计,因为很难准确地确定P3连接了哪两个节点,…也许我可以将“From”和“to”存储为属性,以表示P3实例连接了哪两个产品?这是个坏主意吗?如果P3总是连接不超过一对节点(例如P1和P2),则使用定向关系(P1)->(P3)->(P2)。在以后的查询中,您可以很容易地识别哪些节点进入P3,哪些节点离开P3。但是,如果P3可以连接多对节点,则必须重新考虑设计,因为很难准确确定P3连接的是哪两个节点