【问题标题】:How to convert SQL Database to Mongodb?如何将 SQL 数据库转换为 Mongodb?
【发布时间】:2013-11-06 00:08:42
【问题描述】:

对于我拥有的一些高尔夫数据,mongo 中的最佳架构是什么,我有点麻烦。

Tables:
ClubManufacturer (id, name, descr) -- ex: 1, Titleist
ClubType (id, name) -- ex: 1, Driver
Club (id, id_clubType, id_clubManufacturer, name, url) -- ex: 1, 1, 1, 913D2, link

我是否应该将每个球杆制造商存储为一个文档,并将球杆(和类型)作为文档的属性?我不知所措,因为我需要访问数据,以便显示所有发球杆或制造商的所有球杆。

我也是 mongodb 的新手,因此非常感谢任何见解。

谢谢!

【问题讨论】:

  • 每个厂家都有哪些属性?看起来它只是“名称”,那么为什么要规范化呢?只需将名称存储在俱乐部集合中,并将俱乐部类型存储为一个字段......
  • 其实有,厂家有“说明”,我更新了OP。

标签: sql mongodb database-schema nosql


【解决方案1】:

如果您的制造商有大量描述,那么您可能希望将它们分开以减少冗余。作为 Asya Kamsky 回答的延伸:

Manufacturer Collection:
{
   _id: "Manufacturer Name",
  description: "Long ... Description"
}

Club Collection:
{
  _id: Auto_Generated_Hash,
  manufacturer: "Name/ID",
  type: "Driver",
  name: "Club Name",
  url: "http://www.url.com/"
}

我使用制造商的名称作为 _id,这样如果您不需要描述,您仍然可以知道制造商是什么而无需进行“加入”。

【讨论】:

    【解决方案2】:

    除非您的制造商和类型表实际上比您在此处列出的要大得多,否则让 Club 集合中的每个文档看起来像这样似乎很简单:

    { _id: 1,
      manufacturer: 'Titleist',
      type: 'Driver',
      name: '913D2',
      url: 'http://blah.blah.blah/'
    }
    

    现在您可以索引制造商和类型字段,以支持通过任一属性进行快速查询。

    【讨论】:

    • 其实有,厂家有“说明”,我更新了OP。
    • 您可以将其保存在包含所有制造商的单独集合中 - 您是否真的需要根据制造商的描述搜索俱乐部?
    • 不,搜索非常通用,按俱乐部、俱乐部类型和制造商。该描述仅适用于制造商搜索信息页面。
    • 我认为在这种情况下这是最好的结构,您作为示例提供的查询将非常简单:db.clubs.find({"type": "Driver"})db.clubs.find({"manufacturer": "Titleist"})
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2018-01-25
    相关资源
    最近更新 更多