Graph Neo4J节点与关系实体
我正在使用Spring Data的书中提供的NEO4J示例Graph Neo4J节点与关系实体,graph,neo4j,spring-data,Graph,Neo4j,Spring Data,我正在使用Spring Data的书中提供的NEO4J示例 Nodes - Product, Person, Order Relationships - (Order) Items (Product), (person) Reviewed (product) 我正在设计我的第一个Neo4J数据库,在这种情况下,评论可能更适合作为一个节点,而不是关系 这样一来,审查现在就可以有一个完整的框架 Review COVERED Order , Review COVERED Pr
Nodes - Product, Person, Order
Relationships - (Order) Items (Product), (person) Reviewed (product)
我正在设计我的第一个Neo4J数据库,在这种情况下,评论可能更适合作为一个节点,而不是关系
这样一来,审查现在就可以有一个完整的框架
Review COVERED Order , Review COVERED Product
从某种意义上说,该审查将涵盖多个涵盖的关系
对于创建节点实体与节点关系,有什么想法吗?Neo4J似乎非常灵活。。。如果我改变主意,以后我似乎可以修改它,是吗
在一个关系中,跨越多个节点重复本质上相同的评论文本似乎很奇怪。。。而是节省计算空间并创建一个审阅节点
Review Node Entity
- String comments
- int stars
在设计时,首先也是最重要的事情是在白板上草草写下一个粗略的模型,这将给人一个关于一个人打算实现什么的洞察力 在这种情况下,如果将
REVIEW
节点分开,实际上会创建额外的节点和关系,而不是减少计算空间
(PERSON)-[:GIVEN]->(REVIEW)-[:COVERED]->(PRODUCT)
请考虑问一个问题(用例)给我一个产品A的评论?
该图首先需要按relationshiptypeCOVERED
检查连接到产品A
的所有审查
节点,然后再次必须追溯到人员
节点,以获取审查对象
但是如果你做了(个人)-[:评论]->(产品)
您只需查询一次所有relationshiptypes已审核
在产品A
从个人
节点传入的信息。您可以将注释
和星号
存储为关系属性
因此,我认为通过
revieved
和attribs onrevieved
保持直接连接将是更简洁的设计,更不复杂,因此您建议将审查数据加倍,分成两个关系?Neo4j 2.0允许在关系上存储属性。因此,您可以将审阅数据保存为审阅关系的属性我知道这一事实。。。但如果审查涉及两个节点。。我需要写两封信。。这似乎效率低下,因为我现在存储的数据量翻了一番。我认为每种产品都有自己的独立评审权。将不同产品的评审分开是否理想,这样,如果您想追溯特定的产品评审,就更容易了。无论如何,案例评审涵盖了两个节点。。如果创建单独的节点。。根据我回答中的匹配模式1,将有2个关系覆盖,1个审查节点和1个给定关系。根据我的回答中的匹配模式2,只有2个已审核的关系。每个产品的单个审核不适用于我正在处理的数据。。我试两个例子。。其中,评论是具有多个关系的节点。。。还有一个是评论将关系加倍