小编ant*_*xic的帖子

如何存储和查询价格取决于一组复杂条件的产品?

我还没有决定数据库。我对 MySQl 有经验,并且对MongoDB很感兴趣。

让产品成为有线电视提供商的套餐:

{
    name: "Virgin TV",
    price: 20
},
{

    name: "Sky",
    price: 25
}
Run Code Online (Sandbox Code Playgroud)

每个包裹都有一些条件。的天空包例如可以是:

  • 前三个月的价格是XXX然后变成YYY
  • 如果您在 00:00 之后看电视是XXX-10
  • 如果您是第 N 个客户,您将享有 10% 的折扣。
  • ...

但Virgin 套餐的条件会有所不同

1) 我如何实际存储产品及其所有条件?

我只能想到为每个不同的条件创建类似存储过程的东西?

如果我不必标准化所有条件以适应数据库模式,那就太好了,因为新条件很容易来来去去。

编辑: 我已经意识到 2 个要点

  • MongoDB 支持匿名函数作为字段的值。
  • Map/Reduce 可以使用函数将一个集合转换为另一个集合

现在,我们的 Sky 包装及其状况可以轻松存储:

db.packages.insert({
    name:      "Sky"
    price:     25,
    condition: function(object, user_input){
        time_discount = user_input.time > 0 and user_input.time < 6 ? 10 : 0; …
Run Code Online (Sandbox Code Playgroud)

mongodb database-design query functions

7
推荐指数
1
解决办法
1114
查看次数

标签 统计

database-design ×1

functions ×1

mongodb ×1

query ×1