Mysql 如何处理折扣表?
我有这些桌子: 类别:Mysql 如何处理折扣表?,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,我有这些桌子: 类别: name - created_at 产品: id - name - price - quantity - category_id - brand_id 我有这两张表,作为店主,我需要为我的产品创建折扣。 所以我创建了表折扣: 折扣: id - type('percentage','numeric') - value - cancel - expired_at 因此,我需要: 1-对属于例如类别(T恤)的所有产品进行折扣 2-对特定产品或我需要的产品进行折扣 我的嘴:
name - created_at
产品:
id - name - price - quantity - category_id - brand_id
我有这两张表,作为店主,我需要为我的产品创建折扣。
所以我创建了表折扣:
折扣:
id - type('percentage','numeric') - value - cancel - expired_at
因此,我需要:
1-对属于例如类别(T恤)的所有产品进行折扣
2-对特定产品或我需要的产品进行折扣
我的嘴:
创建了两个数据透视表:
discount_product ( discount_id - product_id )
discount_category ( discount_id - category_id )
这是这样做的最佳实践吗?您的方法适合您当前的需求,保持两个枢轴保持折扣分离,索引将提高获取数据的速度,但缺点是您需要从两个表中查询以获取所有折扣(速度会稍慢) 以下只是一种可能性,您可以忽略它,但尝试一下阅读它 但我想提几个可能性
- 如果店主想给某个特定品牌打折怎么办?(假设您同意添加此功能)例如,他希望所有Raymond产品都有折扣?在当前模式下,您需要查找所有具有Raymond的
品牌id的产品,并在
表中为所有这些产品添加单个条目(其实并不难,但表中的数据会变得非常大),或者为品牌创建一个新的透视表折扣产品
- 同样,如果店主想要所有雷蒙德(品牌)衬衫(我猜是类别)的折扣,那么他也别无选择,只能对个别产品实行折扣
- 如果只给特定性别或年龄组打折怎么办
- 还是衣服尺寸
所以,首先,选择你认为更合适的,非常感谢你的精彩解释!真的很喜欢:)|关于品牌等的问题是的,我也需要这一个来给品牌打折!+我真的很喜欢(多态关系),但我需要哪种类型的关系?我是说多对多还是一对多?或者什么?现在我的表有这样的多态关系:(id-可折扣的类型-可折扣的类型-类型-值-取消-过期的值)是好的还是我需要将类型和值分离到另一个与可折扣的表相关的表?@jamal,你需要一个多态的多对多关系。对于使用多态多对多,您可以使用与问题中相同的产品、类别和折扣表。唯一的变化是透视表。您可以保留一个透视表,该表将具有
id、折扣id、折扣类型、折扣id
。看这张照片。将文档中的post和video表替换为产品表和类别表,用折扣表标记,用折扣表标记。@jamal再次强调,您的原始模式也很好,只是在我的回答中提到的情况下,更难扩展。大多数人通常只使用保持不同数据透视表的简单方法。是的,结构似乎是正确的(但您可能应该交换表名)。试试看,把代码弄乱,没有比把手弄脏更好的学习方法了。还要保留有意义的表名,通过查看表名了解表的用途可以节省大量时间。