我已经完成的任务:
实施产品折扣功能,其中折扣金额取决于不同的条件,例如:
假定我们只需要满足第一个条件,即每个制造商的折扣金额-我认为这是一对一关系的纯示例,其中每个制造商都定义了自己的折扣。
从数据库架构的角度来看,我们可以通过两种方式轻松实现这一部分:
但是,如果我只有一个以上的标准(每个制造商的折扣),我该怎么办?
如何正确构建表的结构?
答案 0 :(得分:0)
每个折扣都应该有自己的表格。
然后,折扣查询量变为:
SELECT IFNULL(cd.discount, 0) + IFNULL(md.discount, 0) + IFNULL(custd.discount, 0) as discount
FROM product p
LEFT JOIN category_discount cd
ON p.category = cd.category
LEFT JOIN manufacturer_discount md
ON p.manufacturer = md.manufacturer
LEFT JOIN customer_discount custd
ON p.customer_type = custd.customer_type
请注意,JOIN
比折扣的确切计算更为重要,请记住,NULL是一个未找到的值,需要考虑。
保留表格仅用于一个目的。放置多种折扣类型可能会变得很混乱,因为您需要多个行。具有一对一关系的多个表也最终成为不必要的麻烦。
如果对表结构有疑问,请开始在这些表上写出所需的查询。通常,哪种表结构会导致此时的简单查询变得很明显。