我有一个请求开发一个应用程序来跟踪某个项目(或项目)的移动。为了更好地演示应用程序必须做什么,我画了一个图表(简化抽象)。
因为我从来没有使用过除关系数据库之外的任何数据库,我真的不知道我是否可以用图形数据库解决这个问题。
系统必须回答这些问题:
- 某个笔式驱动器走过的路径是什么?
- 我通过了一些笔驱动程序。他们现在在哪里?
- 我收到的钢笔是什么,它们来自哪里,又去了哪里?
- 我烧过的笔在哪里?和谁?
非常感谢任何帮助和建议。
谢谢
在 Neo4j 中,一切要么是节点,要么是关系。所以思考一下很有用:我的节点和关系是什么?
例如,这里可能每个“pen drive”、“person”和“location”都是一个节点。像“walk”或“give”这样的动词就是你的关系。
在这个模型中,您可以使用“Cypher”查询诸如“给我所有通过关系游走连接到笔节点的位置节点”之类的内容。或者,说“从所有人员节点开始,并返回与笔式驱动器节点具有给定关系的节点,而笔式驱动器节点没有连接回起始人员节点的给定关系。”
这种丰富的图形查询语言为您免费提供了最短距离等不错的算法,因此您可以在事务记录之外确定,例如,笔式驱动器是否使用最佳路径从 A 到 B。但正如您在上面看到的,“关系连接”不会产生简单的查询或描述。
当涉及到数据库设计时,当模型在思维上映射变得很麻烦时,开发也会很痛苦。根据您计划如何查询数据库来设计数据库。如果您无法根据 Neo4j 轻松解释这些查询,则 Neo4j 可能不是最合适的。