我更像是一个前端人员,所以如果这些问题变得愚蠢,我会事先道歉:)
我正在为电子商务网站设计数据库架构。本网站上销售的产品可能包含其他产品。 Eq:将汽车视为产品。汽车还可以包含其他产品,如座椅,方向盘,挡风玻璃等,每个产品都可以单独出售。
问题#1 :Product
表必须考虑到这一点? Product
表是否有一个名为Products
的字段包含与此产品关联的所有productIds? (或归一化到自己的表中进行优化)
问题#2 :此网站也会不时有折扣,可以应用于产品(在单个产品或包含其他产品的产品上)。还有一些折扣适用于整个订单。设计折扣表的最佳方法是什么?
答案 0 :(得分:2)
问题1:
不要包含逗号分隔ID的列。你最终会讨厌生活。查询很难,难以更新,也不允许您强制执行数据完整性。我建议使用这样的东西:
Product
--------
ProductId
ProductName
ParentProductId --nullable
这将为您提供一个具有递归层次结构的表。如果产品没有任何父母,只需将ParentProductId
列保留为空。
问题2:
我会将此结构用于折扣:
ProductDiscounts
-----------------
DiscountId
ProductId --nullable
Discount
Order
------
OrderId
DiscountId --nullable
OtherStuff
使用此结构,您必须构建逻辑,以便在没有特定产品ID的情况下将折扣应用于整个订单。
答案 1 :(得分:1)
不知道更多,这应该符合您的需求:
Q1。
带有ids的产品表
包含多行包含产品ID且包含产品ID
Q2。
折扣表有:
折扣开始日期时间
折扣结束日期时间
金额小数
金额类型 - 百分比或直接金额
产品ID - 如果为null,则折扣适用于整个订单,而不仅仅是一个产品
希望这有帮助。