在 Neo4j 中将实体与适当的关系相关联?

2023-12-07

我尝试使用 Neo4j 对项目、员工和项目角色之间的关系进行建模。每个项目都有一个称为“项目经理”的角色和一个称为“总监”的角色。我试图在数据模型中实现的是能够说“对于项目 A,主管是员工 X”。就我的目的而言,重要的是“项目”、“员工”和“角色”都是实体(而不是属性)。这在 Neo4j 中可能吗?简单来说,Neo4j 中可以使用关联实体吗?在 MySQL 中,这将用一个带有唯一 id 列和三个外键列的联结表来表示,一个外键列分别代表项目、人员和角色,这将允许我将这些实体之间的关系识别为实体本身。想法?


@wassgren 的答案很可靠,值得考虑。

我将提供一种额外的选择。也就是说,您可以“Reify“这种关系。具体化就是当你将一种关系转变为一个节点时。你将一种抽象的关联(员工和项目之间的关系)转变为一个具体的实体(角色)。其他答案选项基本上涉及两个节点Project and Staff,它们之间的关系存在变化。这些方法并不具体化角色,而是将其存储为关系的属性或标签。

(director:Staff {name: "Joe"})-[:plays]->(r:Role {label:"Director"})-[:member_of]->(p:Project { name: "Project X"});

所以......人们不会直接为项目做出贡献,而是角色。人们扮演角色。这是一种直观的感觉。

这种方法的优点是,您可以将“角色”视为一等公民,并断言它的关系和属性。如果您不将“角色”拆分为单独的节点,您将无法将关系挂在该节点之外。此外,如果您向伪装成角色的关系添加额外的属性,您最终可能会对属性何时适用于角色以及何时适用于工作人员与项目之间的关联感到困惑。

想知道谁在参与一个项目吗?那只是:

  MATCH (p:Project {label: "Project X"})<-[:member_of]-(r:Role)<-[:plays]-(s:Staff)
   RETURN s;

所以我认为我的建议从长远来看更加灵活,但对你来说也可能有点过分了。

考虑一个假设的未来需求:我们希望将角色与技术级别或工作类别相关联。 IE。项目经理应该始终是副总裁或更高级别(愚蠢的例子)。如果你的角色是一段关系,你就不能这样做。如果您的角色是合适的节点,则可以。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Neo4j 中将实体与适当的关系相关联? 的相关文章

  • 通过 awselb 使用 ssl 时的 neo4j java 驱动程序问题

    I am using neo4j community version 3 1 1 and enterprise edition version 3 0 1 with ssl configured through awselb To conn
  • 如何在neo4j中显示屏幕上的所有节点

    我有近 5000 个节点Recipes和 5 个节点Meal Types在 Neo4j 数据库中 目前他们之间没有任何关系 我正在下面运行 CQL MATCH n RETURN n LIMIT 100000 这运行良好 但它返回与相关的节点
  • 带子图聚合的递归查询(任意深度)

    我问了一个问题earlier https stackoverflow com questions 28036055 recursive query with sub graph aggreagation关于沿着图表聚合数量 提供的两个答案效
  • 有没有办法从密码结果中删除 _id _type

    我使用 apoc convert toTree 过程将查询结果转换为树 然后过滤结果以仅获取几个属性 但是 在生成的有效负载中 我得到了两个无法删除的属性 id 和 type 这是我的查询 我应该只获取 prefLabel 和 uri MA
  • 概念数据建模:RDF 是正确的工具吗?其他解决方案?

    我正在规划一个系统 该系统结合了各种数据源 并允许用户对这些数据源进行简单的查询 系统的一部分需要充当抽象层 了解所有连接的数据源 用户不应该 需要 了解底层数据 提供者 数据提供者可以是任何东西 关系 DBMS 错误跟踪系统 气象站 它们
  • 如何返回每个另一个节点属性的最大计数

    我需要计算一位作曲家的音乐作品每十年被演奏了多少次 然后只返回每十年演奏次数最多的一首作品 除了过滤除每十年最高计数之外的所有内容之外 该密码可以执行所有操作 match c Composer CREATED BY w Work lt 2
  • 同时运行 Gremlin-Server 和 NEO4J Server

    目前看来我们不能同时运行两者Neo4J服务器 and Gremlin服务器同时 有什么办法可以同时运行两者吗 NEO4J 正在运行 我尝试启动 Gremlin Server 然后出现以下错误 java lang RuntimeExcepti
  • 如何从 Neo4j 服务器插件登录?

    我正在尝试调试我正在编写的 Neo4J 服务器插件中的问题 有可以输出的日志吗 在哪里或如何执行此操作并不明显 好问题 我想你可以使用 Java 日志记录吗 这应该被路由到正常的日志系统中
  • Cypher:从集合中提取唯一值

    I have MATCH x rels gt y RETURN extract r in rels r property as collected where collected是路径上所有关系的属性的集合 例如 null 4 null 4
  • 当两个表非常相似时,什么时候应该将它们合并?

    我有事件和照片 然后对两者进行评论 现在 我有两个评论表 一个用于与事件相关的评论 另一个用于照片评论 架构与此类似 CREATE TABLE EventComments CommentId int EventId int Comment
  • 使用 cypher 和 apoc 将数百万个节点添加到 neo4j 空间层

    我有一个包含 380 万个节点的数据集 我正在尝试将所有这些加载到 Neo4j 空间中 节点将进入一个简单的点层 因此具有所需的纬度和经度字段 我试过了 MATCH d pointnode WITH collect d as pn CALL
  • 在 Ubuntu 中更改 Neo4j 中的数据存储位置

    我已经成功安装了neo4j 端口号为7474 并且工作正常 我的问题是数据存储在 var lib neo4j 该目录中的该位置很快就会满 我想更改数据存储位置 这怎么可能 我尝试编辑该文件 etc neo4j neo4j server pr
  • neo4j:CYPHER查询节点的所有属性

    我们正在评估 Neo4J 的未来项目 目前只是尝试学习 Cypher 及其功能 但到目前为止 我认为应该非常简单的一件事却让我无法理解 我希望能够查看任何给定节点的所有属性及其值 在 SQL 中 会是这样的 select from Tabl
  • Neo4j 中合并和创建唯一之间的区别

    我试图找出合并和创建唯一之间的区别 我知道这些功能 合并 如果不存在模式 我可以创建节点 MERGE n name X RETURN n 这将创建具有属性名称的节点 n 空节点 m 和关系 RELATED MERGE n name X RE
  • Rails Accepts_nested_attributes_for 子级在验证时没有设置父级

    验证时 我试图在子模型中访问我的父模型 我在 has one 上发现了一些关于反向属性的信息 但我的 Rails 2 3 5 无法识别它 因此它一定从未进入发行版 我不确定这是否正是我所需要的 我想根据父属性有条件地验证子属性 我的父模型已
  • Neo4j 服务器无法使用非托管扩展启动

    我正在尝试在 neo4j 服务器 版本 CE 2 3 2 上使用非托管扩展 所以我正在尝试一个简单的你好世界的例子 http neo4j com docs stable server unmanaged extensions htmlNeo
  • Firestore 数据建模文章和类别

    Context 我正在用 Angular 创建一个类似 wiki 的页面 wiki 页面的文章总数可能不会超过 5000 篇 我想获得最有效的 页面加载 方式 但我认为我对此太陌生 无法监督一种选择相对于另一种选择的后果 当然我也想遵守惯例
  • UNWIND 从 JSON 文件加载的多个不相关的数组

    我试图通过一次调用 apoc load json 来展开多个数组属性 我的版本不能完全工作 某些关系无法加载 我的猜测是 这是由于通过WITH 命令进行输出管道造成的 如果我为每个基于数组的属性单独运行展开 我可以加载所有内容 但我很好奇如
  • neo4j合并2个或多个重复节点

    我使用 cypher 手动输入 Neo4j 数据库 因此很容易出现创建重复节点等错误 重复的节点将与其他节点具有各自的关系 是否有内置函数可以合并这些节点 或者我应该手动完成 听起来可能 但密码脚本很复杂 获取每个重复节点的关系 使用正确的
  • neo4j cypher更新现有节点或创建新节点

    我有一个包含大约 900 万个节点和 1200 万个关系的图 对于图中的每个节点 每个节点都有一个属性子集 这些属性通过标签形成节点的唯一标识 该图正在通过各种数据源进行更新 这些数据源会增加图中的现有节点 或者在节点不存在时创建新节点 我

随机推荐

  • WPF DatePicker:什么是最好的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要一个用于 WPF 应
  • R Markdown / rmarkdown 中的回归表 (html/pdf)

    出于发布的目的 我经常需要我的作品的 PDF 和 HTML 版本 包括回归表 并且我想使用 R Markdown 对于 PDF 来说stargazer和texreg包装可以制作出精美的桌子 现在 在尝试生成同样有吸引力的 HTML 输出时
  • 可变大小的对象可能无法初始化

    我有一堂这样的课 class aClass public aClass N 5 void aMemberFunction int nums N 1 2 3 4 5 private const int N 测试代码是 int main aCl
  • Pyqt 选项卡就像 Google Chrome 中一样

    我想让我的 pyqt 应用程序在菜单栏中有选项卡 就像 Google Chrome 一样 有关如何做到这一点的任何建议或简单示例 我确实找到了这些相关链接 http ivan fomentgroup org blog 2009 03 29
  • C++:路由到成员函数的静态函数包装器?

    我尝试了各种设计方法来解决这个问题 但我似乎无法做到正确 我需要公开一些静态函数以用作 C 库的回调函数 但是 我希望实际实现是非静态的 因此我可以使用虚函数并重用基类中的代码 例如 class Callbacks static void
  • 软件自动更新

    我们正在用 C 开发一个基于 Windows 的应用程序 我想为软件提供自动更新 事实上 一旦用户运行该程序 它应该能够通知用户它将从服务器获取最新版本 我们已经使用 Visual Studio 安装程序创建器创建了我们的安装程序 然后软件
  • 将 Flask 请求注入另一个 Flask 应用程序

    有没有办法将 Flask 请求对象注入到不同的 Flask 应用程序中 这就是我想做的 app flask Flask name app route foo
  • Mysql + 大表 = 慢查询?

    我在 Mysql 上的大表上遇到一些性能问题 该表有 3800 万行 大小为 3GB 我想通过测试 2 列来选择 我尝试了很多索引 每列一个索引 两列一个索引 但查询仍然很慢 如下所示 超过 4 秒才能获取 1644 行 SELECT tw
  • 将 Java 类的消息记录回空手道报告

    我们有一个场景 我们必须发布 json 请求 然后验证 UI 中的一些操作 因此 我们有一个空手道功能文件 它会满足请求 然后我们从功能文件中调用一个 java 类 java 类将运行我们的 Selenium Webdriver 测试 在
  • 基于API密钥监控API网关API

    如何监控我的 Amazon API Gateway API API 密钥 目前它显示所有 API 密钥的数据 但我想显示特定 API 密钥的 API 调用 5xx 错误 4xx 错误等 如果您正在考虑监控 APIX Api Key标题级别
  • Firefox 锁定 place.sqlite

    平台 Firefox 3 6 13 Python 2 7 stackless 和 Windows 7 尚未在 Ubuntu 上测试 我会 我尝试使用 apsw 库 conn apsw Connection dir profile place
  • 从不扩展 Application 的类的 Main 方法启动 JavaFX

    我在从未扩展的类的 Main 方法启动 JavaFX 应用程序时遇到问题javafx application Application 在我的应用程序中有MainApp java哪个应该启动重写的方法start in the MainUICo
  • JSON 列表(不是对象)到 Bash 数组?

    我有一个 JSON 列表 包含项目列表的键值对的值 john boris joe frank 我如何将其转换为 bash 数组 以便我可以迭代它们 简单案例 无换行字符串 简单的方法是使用jq将列表转换为每项一行 并将其读入脚本中 json
  • 将数据导出到谷歌表格

    这更多的是关于性能 这是场景 此应用程序用于控制组织中的电脑库存 因此该应用程序有一个由 32 个字段和 1 个关系组成的模型 该模型已保存 2650 条记录 我还有一个将所有记录导出到谷歌表格的过程 尽管它工作得很好 但从我的角度来看 导
  • 在两个上下文之间共享纹理/图像而不需要上下文共享的最佳方法是什么?

    我想要做的是从一个上下文中获取渲染结果 并在另一个不与前一个上下文共享的上下文中进行进一步的渲染 我能想到的唯一方法是使用像 API 这样的 glReadPixels 将渲染结果从 GPU 内存复制到系统内存 并在另一个上下文中使用复制的数
  • php date() 比服务器时间提前一小时(夏令时问题)

    我正在尝试排查并解决这个问题 我正在使用的服务器 Linux 上的 php 5 2 9 具有正确的本地时间 America Buenos Aires user server home site public html date Mon No
  • 合并sqlite

    最近在读sqlite3的源码 在合并版本中 只有四个文件 上官方网站 他们说 合并也使其运行得更快 当我们使用合并来编译 SQLite 而不是单独的源文件时 我们测量到性能提高了 5 到 10 我不明白他们是如何做到的以及为什么 有人有什么
  • NetUIHWND 和 DirectUIHWND [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 使用Spy 工具 似乎某些微软应用程序使用网络UIHWND and 直接UIHWND窗口类 例如 Word 2010 的功能区似乎是 NetUIHW
  • ActiveAdmin:编辑模型实例时下拉菜单太大

    我有两个模型 UserDevice and UserInfo如下 在 schema rb 中 create table user devices force cascade do t t integer user info id t str
  • 在 Neo4j 中将实体与适当的关系相关联?

    我尝试使用 Neo4j 对项目 员工和项目角色之间的关系进行建模 每个项目都有一个称为 项目经理 的角色和一个称为 总监 的角色 我试图在数据模型中实现的是能够说 对于项目 A 主管是员工 X 就我的目的而言 重要的是 项目 员工 和 角色