【问题标题】:create a pricing matrix - sql or array of constants?创建定价矩阵 - sql 还是常量数组?
【发布时间】:2010-08-13 00:18:48
【问题描述】:

我打算在 Rails 中为一个项目创建一个定价矩阵。它应该是一张目的地和出发地点的表格,价格取决于你来和计划去的地方。

我还没有决定如何更好地做到这一点:要么在数据库中为这个矩阵制作一个表,要么制作一个巨大的常量数组。问题是,客户端应该能够编辑这个矩阵,所以它最有可能走数据库路线。

无论如何,什么是一个好的架构?目的地ID,出发ID,然后价格?目的地和出发 id 将是包含所有可能位置的表的外键。有更好的方法吗?

【问题讨论】:

    标签: sql database database-design matrix


    【解决方案1】:

    使它成为一个数据库表。

    价格唯一不变的是它们会发生变化。

    添加:

    定价(也称为产品保理)是我有丰富经验的事情。

    您的客户也可能会要求/或欣赏附加的定价工具,以帮助他们解决问题。例如,你的 sw:

    • 可能有报告以专为定价人员设计的方式显示价格。
    • 报告最高、最低价格(以帮助发现数据输入错误)
    • 查看定量信息的视觉设计,了解如何直观地显示目的地对的价格
    • 确保目的地/出发地对只添加一次。 (在另一个方向上没有重复。)

    您可能还需要担心定价的生效日期。即如何以协调的方式推出一组新的价格。

    【讨论】:

    • 我的架构正确吗?只是两个位置的 ID,然后是相应的价格?
    • 检查价格没有(也不会在短期内)附加参数。例如婴儿/儿童/成人定价、季节性定价等。我使用“sku”表(库存单位)。除了出发/目的地的简单方面外,每一行还包含许多字段。比如 Effective_dates、active(此时可购买)等。更改价格时,添加新行,不要更改现有行的价格(将其标记为非活动)。
    【解决方案2】:

    我会使用两张表,Location 和 TravelPrice。

    Location
    ----------
    LocationID --PK
    Name
    
    TravelPrice
    -------------
    TravelPriceID --PK
    DepartureLocationID --FK to Location
    DestinationLocationID --FK to Location
    Price
    StartDate --date the price is effective from
    EndDate --date the price is effective to (or NULL)
    

    这使您可以保留价格历史记录,这对于报告、计费等很重要。理想情况下,您应该在TravelPrice 表上触发,以确保给定DepartureLocationID/@987654324 的日期没有间隙或重叠@ 组合,并且该对只有一条带有 NULL EndDate 的记录。

    【讨论】:

      【解决方案3】:

      我会将它添加到一个 3 列表中,因为它不一定是一个矩阵 - 您可能不会从所有地方旅行到所有其他地方。您希望能够对其进行编辑。完成硬编码版本后,系统会要求您对其进行编辑。

      LeavingFrom, TravellingTo, Price
      

      此外,随着目的地列表的增长,查询性能和代码维护将成为一个因素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多