从表中专门选择一个字段

时间:2008-10-22 13:56:48

标签: database database-design

我必须在我的数据库中添加优惠券表。有3种类型的优惠券:百分比,金额或2为1。

到目前为止,我已经提出了一个包含这3个字段的优惠券表。如果百分比值未设置为null,那么就是这种优惠券。

我觉得这不是正确的做法。我应该创建一个CouponType表,你会怎么看?你会在哪里储存这些价值?

任何帮助或提示都赞赏!

谢谢,

Teebot

3 个答案:

答案 0 :(得分:4)

你是对的,我认为CouponType表适合你的问题。

两张桌子:优惠券和优惠券类型。将CouponTypeId存储在Coupons表中。

因此,举一个例子,你将有一张名为“50%off”的优惠券记录,如果会引用CouponType记录的百分比,那么你就可以确定将该项目的费用降低50%的逻辑。 / p>

所以现在你可以创建无限制的优惠券,如果它是一个美元金额的优惠券类型,它将采取“金额”列并将其视为美元金额。如果它是一个百分比,它将把它视为一个百分比,如果它是一个“x为1”的交易,它会将该值视为x。

- Table Coupons
  - ID
  - name
  - coupon_type_id # (or whatever fits your style guidelines)
  - amount # Example: 10.00 (treated as $10 off for amount type, treated as  
           # 10% for percent type or 10 for 1 with the final type) 
  - expiration_date

- Table CouponTypes
  - ID
  - type # (amount, percent, <whatever you decided to call the 2 for 1> :))

答案 1 :(得分:2)

将来您可能会有更多不同的优惠券类型。您可能还有与之相关的不同业务逻辑 - 您永远不会知道。在这种情况下做正确的事情总是有用的,所以是的,当然,创建一个优惠券类型字段和一个相关的字典表来配合它。

答案 2 :(得分:1)

我肯定会创建一个CouponType查找表。这样你就可以避免所有的NULL,并在将来允许更多的优惠券类型。

优惠券  coupon_id INT  名称VARCHAR  coupon_type_id INT&lt; - 外键

CouponType  coupon_type_id INT  type_description VARCHAR  ...

或者我想您可以在优惠券表CHAR(1)

中找到优惠券类型列