首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理折扣表?

问如何处理折扣表?
EN

Stack Overflow用户
提问于 2020-02-08 13:28:53
回答 1查看 368关注 0票数 2

我有几张桌子:

类别:

代码语言:javascript
复制
name - created_at

产品:

代码语言:javascript
复制
id - name - price - quantity - category_id - brand_id

我有这两张桌子,作为商店的老板,我需要给我的产品打折扣。所以我创造了桌子折扣:

折扣:

代码语言:javascript
复制
id - type('percentage','numeric') - value - cancel - expired_at

所以我需要:

对所有属于类别的产品(如T恤衫)给予折扣。

2-对我需要的特定产品给予折扣。

我的门窗:

创建了两个枢轴表:

代码语言:javascript
复制
discount_product ( discount_id -  product_id )

discount_category ( discount_id - category_id ) 

这样做是最好的做法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-08 15:00:35

您的方法对您当前的需求很好,保持两个支点保持折扣分离,索引将给取取数据速度,但缺点是您需要从两个表中查询来获取所有折扣(将稍微慢一些)。

下面的只是一种可能性,您可以忽略它,但是尝试一下

但我想提几个可能性

  • 如果店主想对某一特定品牌实行折扣怎么办?(假设您同意添加此功能),例如,他希望所有雷蒙德产品都有折扣?对于当前的模式,您需要找到所有使用雷蒙德的brand_id的产品,并在discount_product表中添加单独的条目到所有这些产品中(不太困难,但表中的数据会变得非常大),或者为品牌创建一个新的支点表。
  • 同样,如果店主想要所有雷蒙德(品牌)衬衫的折扣(我认为),同样别无选择,只能对个别产品进行折扣。
  • 如果只对特定的性别或年龄群体给予折扣呢?
  • 或者衣服尺寸

(好吧,我知道我想得太多了,因为这类要求的可能性很低。如果有这么多的需求,最好还是使用一个库或者切换到wordpress/Magento )。

因此,我的观点是,如果您需要更多的灵活性(我个人认为这一点也很重要),那么将这些折扣附加到单个产品上似乎是简单的出路(假设您没有为每种类型的折扣创建枢轴表)。一个灵活的项目更容易扩展,将来要在这个项目上工作的人会更少地诅咒你)保持单枢轴表并按类型区分它们不是更好吗?( aaargghhh听起来像是一种痛苦.但是吗?)

拉拉维尔有个解决办法给你,多态关系。是的,现在您只需要一个用于支点的表,让Laravel执行魔术(嗯,它只是在类型列中存储带有命名空间的模型名称)。如果您不想使用Laravels,您将需要一个类型表,将每个类型存储在这个表中,然后在透视表中放置一个外键。

但是在加入并选择遵循这个方法之前,想想你是否真的需要它呢?(我承认这大部分都不是你的问题,我只是因为我考虑过了才提出来的)你确定你只需要这两种折扣吗?你能拒绝任何其他类型的请求吗?你不在乎谁要收拾你的烂摊子?如果您的aswer是肯定的,那么只需坚持您当前的模式。

所以,选择你认为更合适的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60127226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档