我应该如何在我的数据库中存储优惠券类型?

时间:2011-09-23 22:05:16

标签: mysql arrays json

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

  • 整个订单的固定金额
  • 修正整个订单的百分比
  • 一件物品的固定金额(可以是物品的sku或者可能是最贵的物品)
  • 修正了一件物品的百分比(可能是物品的sku或者可能是最贵的物品)
  • 购买x得到
  • 免费商品(按商品价格,按价格)
  • x为$ y(3美元为2美元,10美元为15美元等)

我正在使用mysql,最好存储为数组吗? JSON?任何其他想法或有类似问题的人都会分享他们如何做到这一点?

4 个答案:

答案 0 :(得分: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为空或零,则优惠券对所有订单有效。否则,您可以为多个订单设置多个ID。

我希望这有一些帮助=)。

答案 1 :(得分:0)

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

简单来说,我的方法是,有一个优惠券类型表(列:id,名称,...)和另一个实际优惠券。

在优惠券表中,我会有一个“type_id”列交叉引用“couponTypes”表(或外键)。

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

查询“按类型划分的优惠券”是

的问题
"SELECT 'id' FROM couponTypes WHERE 'name' = 'fixed sum'"; => $id

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

欢迎使用MySQL!

答案 2 :(得分:0)

我假设您有某种products表,其中包含您可以销售的所有产品。您可以创建一个类似于:{/ p>的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%的折扣,不需要任何产品。

答案 3 :(得分:0)

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