我有几张桌子:
类别:
name - created_at产品:
id - name - price - quantity - category_id - brand_id我有这两张桌子,作为商店的老板,我需要给我的产品打折扣。所以我创造了桌子折扣:
折扣:
id - type('percentage','numeric') - value - cancel - expired_at所以我需要:
对所有属于类别的产品(如T恤衫)给予折扣。
2-对我需要的特定产品给予折扣。
我的门窗:
创建了两个枢轴表:
discount_product ( discount_id - product_id )
discount_category ( discount_id - category_id ) 这样做是最好的做法吗?
发布于 2020-02-08 15:00:35
您的方法对您当前的需求很好,保持两个支点保持折扣分离,索引将给取取数据速度,但缺点是您需要从两个表中查询来获取所有折扣(将稍微慢一些)。
下面的只是一种可能性,您可以忽略它,但是尝试一下
但我想提几个可能性
brand_id的产品,并在discount_product表中添加单独的条目到所有这些产品中(不太困难,但表中的数据会变得非常大),或者为品牌创建一个新的支点表。(好吧,我知道我想得太多了,因为这类要求的可能性很低。如果有这么多的需求,最好还是使用一个库或者切换到wordpress/Magento )。
因此,我的观点是,如果您需要更多的灵活性(我个人认为这一点也很重要),那么将这些折扣附加到单个产品上似乎是简单的出路(假设您没有为每种类型的折扣创建枢轴表)。一个灵活的项目更容易扩展,将来要在这个项目上工作的人会更少地诅咒你)保持单枢轴表并按类型区分它们不是更好吗?( aaargghhh听起来像是一种痛苦.但是吗?)
拉拉维尔有个解决办法给你,多态关系。是的,现在您只需要一个用于支点的表,让Laravel执行魔术(嗯,它只是在类型列中存储带有命名空间的模型名称)。如果您不想使用Laravels,您将需要一个类型表,将每个类型存储在这个表中,然后在透视表中放置一个外键。
但是在加入并选择遵循这个方法之前,想想你是否真的需要它呢?(我承认这大部分都不是你的问题,我只是因为我考虑过了才提出来的)你确定你只需要这两种折扣吗?你能拒绝任何其他类型的请求吗?你不在乎谁要收拾你的烂摊子?如果您的aswer是肯定的,那么只需坚持您当前的模式。
所以,选择你认为更合适的。
https://stackoverflow.com/questions/60127226
复制相似问题