【问题标题】:food information graph modeling食品信息图建模
【发布时间】:2013-04-27 05:44:02
【问题描述】:

我有以下来自 mongodb 数据库的信息,我想导出到 neo4j 图表:

"_id" : 1366,
"fields" : {
"title" : "Beef Steak",
"keywords" : [
    "beef",
    "steak"
],
"categories" : {
    "category" : "Meat",
    "subcategory" : null,
    "verified" : false,
    "predicted" : true
 },
 "nutrients" :
    {
        "tag_name" : "FASAT",
        "value" : 1.352,
        "unit" : "g",
        "title" : "Saturated fatty acids"
    },
    ...

我一直在阅读一些 neo4j 建模示例,但我不确定我的模型。

这就是我的想法:

节点:

  • 食物
  • 关键字
  • 类别
  • 子类别
  • 养分

关系:

  1. food - rel_name -> 关键字
  2. 食物 - rel_name -> 类别
  3. 食物 - rel_name -> 子类别
  4. 类别 - rel_name -> 子类别
  5. 食物 - has_nutrients -> 营养素

“has_nutrients”关系名称将包含一个“值”属性,以指示食物含有多少营养素。

我考虑了 2,3 和 4 个关系来执行不同的查询:-“肉类”类别的子类别,-食物的类别和子类别,-具有“意大利面”类别的所有食物。也许有更简单的方法。

【问题讨论】:

    标签: database-design neo4j


    【解决方案1】:

    如果您想不出更好的关系名称,请执行类似的操作

    food - [HAS_KEYWORD] -> keyword
    food - [HAS_SUBCATEGORY] -> subcategory
    subcategory - [BELONGS_TO] -> category
    food - [HAS_NUTRIENT] -> nutrient
    

    对于您的子类别,我通常喜欢从孩子到父母的方向,但我通常更倾向于偏好。

    您需要区分类别和子类别吗?就像如果类别是Meat 而子类别是Pork,您是否需要实际链接到Meat?您可以只与Pork 建立联系,这意味着Meat 会减少关系。

    ({name='Pork', type='Subcategory'}) -[BELONGS_TO]-> ({name='Meat', type='Category'})
    ({name='Pork Chops', type='Food'}) -[HAS_SUBCATEGORY]-> ({name='Pork', type='Subcategory'})
    

    这将减少关系,因为您将能够从子类别中暗示类别。

    除了上述建议之外,其余的看起来都非常面向图形,并且看起来像是一个可靠的设计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2020-11-14
      • 1970-01-01
      • 2015-03-27
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多