产品目录中有文章。每篇文章都有特定的属性。这些属性(例如材料,尺寸,形状等)由某些文章(例如,有3种尺寸(6“,8”,10“)和2种材料(304、316)的工具。在目录中,对于可能组合的每个版本,您现在会找到6条记录。当您添加另一个属性(例如电压(230、400、500))时,速度很快,因为您现在拥有18条记录。我正在考虑是否应该将属性保留在节点中,以便每个属性都有18个节点,例如
(n:Tool {name:"X", voltage:"230", size:"6"})
并在节点上搜索属性以找到合适的节点,或者如果我尝试将那些关键属性设置为节点并将工具节点连接到属性节点,例如
(n:Tool {name:"X"}) -[:HAS_SIZE]- (s:Size {size:"6"})
(n) -[:HAS_VOLTAGE]- (v:Voltage {voltage:"230"}) a.s.o.
并尝试通过以下路径找到节点X。这最后一个选项可能也具有我可以通过选择例如所有电压节点。
最后一个可能导致许多节点和关系,并且当数量增加时,例如有20个属性节点,我不确定如何找到我的节点X?然后查询可能看起来像
MATCH (n:Tool) -[:HAS_SIZE]- (s:Size)
MATCH (n:Tool) -[:HAS_VOLTAGE]- (v:Voltage)
MATCH (n:Tool) -[:MADE_OF]- (m:Material)
where s.size = "6" AND v.voltage="230" AND m.material ="304"
return n
这将成为非常大的查询。
也许有人链接到文章/帖子,其中显示了这种数据模型的基本布局?谢谢!
您可以浏览这些幻灯片https://www.slideshare.net/mobile/neo4j/graphtour-neo4j-murrelektronik。它表明您可以走得更远,例如将属性值建模为节点,包括对基于其他属性计算的属性的支持,多语言支持以及单元之间的转换。披露:我们是该项目的一部分,为建模做出了巨大贡献。我们还提供了UI。