Neo4j 关系

Neo4j relations

我是图形数据库的新手,我只使用过基于 SQL 的数据库,这就是我不知道如何在 neo4j 中实现 m-n 关系的原因。在 MySQL 中,我会有 4 tables - Person, Job, Position, PersonH​​asJob.

其中 table PersonH​​asJob 有列 person_id、job_id、position_id,开始于 [datetime]。

基于此,我在 neo4j 中创建了这些 table 作为单独的节点

其中 PersonH​​asJob 具有我上面提到的每个 属性(不是 ID,而是对象方式)

我看到这个中间节点连接所有东西的输出方式对我来说有点奇怪。

有没有更好的方法来定义我的nodes/relationships?

谢谢。

您的图形模型可能如下所示。但这一切都取决于...

  1. 制作您的第一个模型(白板或使用箭头等工具https://arrows.app/
  2. 测试模型(是否支持您的领域问题)
  3. 如果不是,回到1。
  4. 制作一个样本图“实例模型”(可以是whiteboard/arrows或者通过将一些数据加载到neo4j中)
  5. 测试你的领域问题(通过在你的图表中走动/编写密码查询)

重复直到你有一个模型可以很好地支持你的所有查询(读取和写入)。

您在节点中模拟 table 并作为边连接的起始策略是可以的。很好,这对你来说很奇怪!!当您进入图形世界时,您的整个世界观都会发生变化。遍历比连接更有效和可扩展。

为什么要建立图形数据库?您开发的模式将根据您要解决的问题而有所不同。如果您正在寻找公司之间的协作或创建团队,您可以使用额外的节点和边来增强您的图表。对于工作或公司类型,您可以使用 ontology。等等。有了这些增强功能,您可以选择使用新属性或添加新节点。例如,工作类型 ontology 可以提供您作为 属性 放入员工节点的代码。或者你可以有工作类型的节点,然后是员工和他的工作类型之间的边。后者更健壮。