在图数据库中建模介词关系的正确方法是什么?(例如,A在C上进行B,X通过Z购买Y)

布莱恩·格雷厄姆

假设我想拥有一个购物者,杂货店和农产品的数据库。例如,比利的杂货店提供胡萝卜和萝卜。爱丽丝的杂货店供应胡萝卜和萝卜。Jinh从Alice's Grocery购买胡萝卜,并从Billy's Grocery购买萝卜。

看起来像“胡萝卜”,“ Jinh”和“ Alice's Grocery”将是三个节点。我了解hyperedge,但是据我了解,它们存在性能问题。将这些节点之一编码为关系(例如,关系“ buys_carrots_from”)似乎是一种反模式。

有没有一种表达这种关系的明智方法(Jinh从Alice's Grocery购买胡萝卜)?还是这种类型的数据不能在图形数据库上很好地转换?

德克·霍斯滕

仅具有(:grocery),(:product)和(:consumer)节点

create (Billy_s:grocery{name:"Billy's"})
create (Alice_s:grocery{name:"Alice's"})
create (carrots:product)
create (turnips:product)
create (radishes:product)
create (Jinh:consumer)

您无法将其正确地建模为图形。(我知道我的代码只是伪代码)create (Jinh)-[BUYS]->(carrots)仅表示Jinh可能从Alice的公司购买胡萝卜。

因此,我们需要一个中介,并且像往常一样,该中介对于存储更多信息非常有用:价格

create (Billy_s_carrots:offer{price:0.45})
create (Billy_s_turnips:offer{price:1.12})
create (Alice_s_carrots:offer{price:0.42})
create (Alice_s_radises:offer{price:1.50})

create (Billy_s)-[:SUPPLIES]->(Billy_s_carrots)-[:WHICH_ARE]->(carrots)
create (Billy_s)-[:SUPPLIES]->(Billy_s_turnips)-[:WHICH_ARE]->->(turnips)
create (Alice_s)-[SUPPLIES]->(Alice_s_carrots)-[:WHICH_ARE]->(carrots)
create (Alice_s)-[SUPPLIES]->(Alice_s_radishes)-[:WHICH_ARE]->(radishes) 

现在如果

create (Jinh)-[:DESIRES]->(carrots) // and
create (Jinh)-[:DESIRES]->(turnips) 

他/她可以选择省钱

create (Jinh)-[:BUYS]->(Alice_s_carrots) // and
create (Jinh)-[:BUYS]->(Billy_s_turnips) 

或节省时间

create (Jinh)-[:BUYS]->(Billy_s_carrots) // and
create (Jinh)-[:BUYS]->(Billy_s_turnips) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SQLite关系数据库中对此建模

来自分类Dev

在关系数据库中存储大量点(x,y,z)

来自分类Dev

在关系数据库中记录同胞的最有效方法是什么?

来自分类Dev

如何为数据库中的X vs Y vs Z关系建模?

来自分类Dev

没有JOIN,处理文档数据库中数据的正确方法是什么?

来自分类Dev

在图数据库中建模介词关系的正确方法是什么?(例如,A对C做B,X通过Z购买Y)

来自分类Dev

图数据库中的条件关系

来自分类Dev

图数据库中的关系属性是关系

来自分类Dev

在关系数据库中存储数组的最佳方法是什么?

来自分类Dev

Phoenix Framework:播种数据库进行测试的正确方法是什么?

来自分类Dev

什么是在数据库之间应用关系的正确方法?

来自分类Dev

进行注册身份验证并将其存储在数据库中的正确方法是什么?

来自分类Dev

在Firebase实时数据库中添加“ .indexOn”规则的正确方法是什么?

来自分类Dev

在asmx Web服务中为数据库IO生成线程的正确方法是什么?

来自分类Dev

在关系数据库中存储大量点(x,y,z)

来自分类Dev

根据数据库中的信息有选择地在Meteor中发布的正确方法是什么?

来自分类Dev

从分离的实体更新数据库的正确方法是什么?

来自分类Dev

从控制器创建对象(在数据库中)的正确方法是什么?

来自分类Dev

在Rails 4的对等市场中,从具有许多关系的数据库中删除用户的最佳方法是什么?

来自分类Dev

在Django中建立具有深层依赖关系的数据库的正确方法是什么?

来自分类Dev

用户与数据库中购买之间的关系

来自分类Dev

图数据库中的关系属性是关系

来自分类Dev

通过API对未排序和过滤的数据库数据进行分页的最佳方法是什么?

来自分类Dev

数据库中的实体关系图?

来自分类Dev

在neo4j电影图数据库中建模RATED关系的更好方法

来自分类Dev

通过Java驱动程序从MongoDB获取所有数据库的正确方法是什么

来自分类Dev

在 Openshift 中连接到数据库的正确方法是什么?

来自分类Dev

在关系mysql数据库的多个表中执行多个插入查询的正确方法是什么?

来自分类Dev

在 MongoDB 中设计具有父子关系的数据库的最佳方法是什么?

Related 相关文章

  1. 1

    在SQLite关系数据库中对此建模

  2. 2

    在关系数据库中存储大量点(x,y,z)

  3. 3

    在关系数据库中记录同胞的最有效方法是什么?

  4. 4

    如何为数据库中的X vs Y vs Z关系建模?

  5. 5

    没有JOIN,处理文档数据库中数据的正确方法是什么?

  6. 6

    在图数据库中建模介词关系的正确方法是什么?(例如,A对C做B,X通过Z购买Y)

  7. 7

    图数据库中的条件关系

  8. 8

    图数据库中的关系属性是关系

  9. 9

    在关系数据库中存储数组的最佳方法是什么?

  10. 10

    Phoenix Framework:播种数据库进行测试的正确方法是什么?

  11. 11

    什么是在数据库之间应用关系的正确方法?

  12. 12

    进行注册身份验证并将其存储在数据库中的正确方法是什么?

  13. 13

    在Firebase实时数据库中添加“ .indexOn”规则的正确方法是什么?

  14. 14

    在asmx Web服务中为数据库IO生成线程的正确方法是什么?

  15. 15

    在关系数据库中存储大量点(x,y,z)

  16. 16

    根据数据库中的信息有选择地在Meteor中发布的正确方法是什么?

  17. 17

    从分离的实体更新数据库的正确方法是什么?

  18. 18

    从控制器创建对象(在数据库中)的正确方法是什么?

  19. 19

    在Rails 4的对等市场中,从具有许多关系的数据库中删除用户的最佳方法是什么?

  20. 20

    在Django中建立具有深层依赖关系的数据库的正确方法是什么?

  21. 21

    用户与数据库中购买之间的关系

  22. 22

    图数据库中的关系属性是关系

  23. 23

    通过API对未排序和过滤的数据库数据进行分页的最佳方法是什么?

  24. 24

    数据库中的实体关系图?

  25. 25

    在neo4j电影图数据库中建模RATED关系的更好方法

  26. 26

    通过Java驱动程序从MongoDB获取所有数据库的正确方法是什么

  27. 27

    在 Openshift 中连接到数据库的正确方法是什么?

  28. 28

    在关系mysql数据库的多个表中执行多个插入查询的正确方法是什么?

  29. 29

    在 MongoDB 中设计具有父子关系的数据库的最佳方法是什么?

热门标签

归档