我正在设计一个产品表,我希望揭示这些想法。
我需要为网站设计产品表,销售/折扣将在产品上......我有两种方法,我认为哪一种更好
选项1:产品表中的折扣
product table
id name price discount category
1 pen 70 0.20 2
选项2:折扣在另一个表
中product table
id name price category
1 pen 70 2
2 pencil
discount table
id discount
1 0.20
productdiscount table
prodid discountid
1 2
答案 0 :(得分:2)
一般而言,选项2更好。
这是因为如果需要商业逻辑,很容易为单个产品添加多个折扣。
也可以重复使用折扣。假设您最终有这样的折扣表:
discount
id type value expires maxuses
1 percent 20 10-22-2015 500
2 flat 1.50 12-31-2015 null
您不需要修改product_discount表或产品表,以便上述工作仍然有效。
答案 1 :(得分:2)
取决于你的情况,我猜选项1更好。
如果你选择选项2,你也可以完全精神化并将价格放在另一张表中,因为你可以。问那些刚刚回答了选项2的人,他们会说你应该....
存在数据库表过度规范化的问题。
您需要问自己在两个选项之间做出选择的唯一问题是:我是否需要更改所有10美元折扣产品的折扣?我是否应该将折扣价值更改为15,以反映所有具有折扣的产品?大部分时间答案都是否定的,折扣是针对单个产品的。
答案 2 :(得分:0)
从我的观点来看,我会选择选项2但不同的想法。有几个原因
1。首先,表productdiscount
是不必要的,因为你已经拥有discount
表,除了它是多对多的关系并且你必须创建一个桥之外,再创建一个具有来自两个表的ID的表是不必要的。此外,您必须加入三个表才能检索产品详细信息和折扣价值,这使得这不是一个好习惯。
2。其次,我建议您创建一个表discountHistory
,创建此表的原因是为了检查更改折扣的时间,人员和原因。同样的价格也可能是有代价的。例如,创建一个表priceHistory
以跟踪过去的价格变化。
总的来说,应该有product
,discount
,discountHistory
,priceHistory
表,我建议您使用此数据库表设计,因为它通常是用于许多购物中心。