gpt4 book ai didi

graph - Neo4J 节点与关系实体

转载 作者:行者123 更新时间:2023-12-01 05:14:48 25 4
gpt4 key购买 nike

我正在研究 Spring Data 书中的 NEO4J 示例。

 Nodes         - Product, Person, Order

Relationships - (Order) Items (Product), (person) Reviewed (product)

我正在设计我的第一个 Neo4J 数据库,并遇到这样一种情况,即 Review 可能更适合作为节点而不是关系。

这样一个评论现在可以有一个 COVERS 关系
 Review COVERED Order , Review COVERED Product 

从某种意义上说,此审查将跨越多个 COVERED 关系。

对创建节点实体与节点关系有什么想法吗? Neo4J 似乎非常灵活……如果我改变主意,我似乎可以稍后修改它,是吗?

在关系中跨多个节点重复基本相同的评论文本似乎很奇怪……而是节省计算空间并创建一个评论节点
 Review Node Entity
- String comments
- int stars

最佳答案

设计时首要的事情是在白板上记下一个粗略的模型,这将使​​人们了解人们打算实现的目标。

在这种情况下,如果您保留 REVIEW节点分开实际上会创建额外的节点和关系,而不是减少计算空间。

(PERSON)-[:GIVEN]->(REVIEW)-[:COVERED]->(PRODUCT)

所以考虑提出一个问题(用例)让我对产品 A 进行评论?

该图首先需要检查所有 REVIEW连接到 PRODUCT A 的节点按关系类型 COVERED ,然后又要追溯到 PERSON节点以获取谁给出了评论。

但如果你这样做 (PERSON)-[:REVIEWED]->(PRODUCT)
您只需要查询一次所有关系类型 REVIEWED传入 PRODUCT A来自 PERSON节点。和 commentsstars您可以存储为关系属性。

所以我认为通过 REVIEWED 直接连接它带有属性 REVIEWED将是更整洁的设计和更简单的复杂性

关于graph - Neo4J 节点与关系实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21694181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com