【问题标题】:How should I store types of coupons in my db?我应该如何在我的数据库中存储优惠券类型?
【发布时间】:2011-11-24 00:30:01
【问题描述】:

我正在创建一个包含许多不同类型优惠券的优惠券系统。我想对其进行结构化,以便对其进行扩展。我不确定存储不同类型优惠券的最佳方式,例如:

  • 整个订单的固定金额
  • 固定整个订单的百分比
  • 一件商品的固定金额(可能是商品的 sku 或可能是最昂贵的商品)
  • 修复了一件商品的折扣(可能是商品的 sku 或可能是最昂贵的商品)
  • 买x送y
  • 免费产品(按商品的 SKU,按价格)
  • x 代表 y 美元(3 美元代表 2 美元,10 美元代表 15 美元,等等)

我正在使用mysql,最好存储为数组吗? json?有没有其他想法或有类似问题的人愿意分享他们是如何做到的?

【问题讨论】:

  • @acidzombie24 感谢您的超级有用的评论

标签: mysql arrays json


【解决方案1】:

在我的脑海中,您可以设计如下表格:

Table: Coupon_Summary
Columns: Coupon_ID(primary key), Coupon_Name

此表将保存有关优惠券的“顶级”数据。

Table: Coupon_Description
Columns: Coupon_ID(foreign key), Coupon_Description

此表将包含优惠券的描述。

Table: Coupon_Value
Columns: Coupon_ID(foreign key), Coupon_Value, Coupon_Currancy

此表将包含优惠券提供的折扣。 Coupon_Value 可以是百分比或硬值(百分比将附加一个 % 符号),如果这是零,则优惠券提供全额折扣,或者换句话说,该项目是免费的。这还包括折扣金额所依据的货币,以便您可以在货币之间进行转换。

Table: Coupon_Target_Order
Columns: Coupon_ID(foreign key), Order_IDs

此表包含与优惠券影响的订单相关的数据。如果 Order_ID 为 null 或零,则优惠券对所有订单均有效。否则,您可以为多个订单设置多个 ID。

我希望这会有所帮助 =)。

【讨论】:

  • 为什么这么多桌子?为什么不使用带有名称、描述等的 Coupon_General,然后使用外键并提供自己的类型特定数据的 Coupon_SomeType?
  • 如果您打算处理大量数据,这是一种更好的方法。至少对我来说是这样。您的观点可能不同 =)
【解决方案2】:

我会创建另一个表 - 例如 tblCouponType 并用唯一的数字和字符串填充我拥有的类型的注释,并在新类型可用时添加到它。然后将另一列添加到您的优惠券表中,该列引用您的优惠券类型的数值。这有助于数据库的整个“关系”部分:)

【讨论】:

    【解决方案3】:

    我假设您有某种products 表,其中包含您可以销售的所有产品。您可以创建一个类似于以下内容的coupons 表:

    id       discount       discount_percentage
    INT PK   DECIMAL(10,2)  DECIMAL(3,2)
    
    1        5.00           NULL
    2        NULL           10.00
    

    然后你可以像这样创建一个链接表coupons_products

    coupon_id   required_product_id
    INT FK      INT FK
    
    1           4773
    1           993
    

    因此,在此示例中,优惠券 ID 1 提供 5.00 美元的折扣,并且需要在订单上提供两种产品:4773 和 993。优惠券 ID 2 提供 10% 的折扣并且不需要任何产品。

    【讨论】:

      【解决方案4】:

      对于 SomeSQL,我宁愿不使用 JSON,因为几乎不可能有效地查询它。

      简单地说,我的方法是为优惠券类型(列:id、name、...)设置一个表格,为实际优惠券设置另一个表格。

      在优惠券表中,我将有一列“type_id”交叉引用到“couponTypes”表(或外键,就此而言)。

      这样,您以后可以随时添加新的优惠券类型,而不会使您拥有的数据失效。

      按类型查询“优惠券”是一个问题

      "SELECT 'id' FROM couponTypes WHERE 'name' = 'fixed sum'"; => $id
      
      "SELECT * FROM coupons WHERE 'type_id' = $id"; => All fixed sum Coupons. 
      

      欢迎来到 MySQL!

      【讨论】:

        猜你喜欢
        • 2017-08-16
        • 2020-03-20
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多