Database DB表示产品“特价”,其中特价因字段而异

Database DB表示产品“特价”,其中特价因字段而异,database,normalization,database-normalization,Database,Normalization,Database Normalization,我正在努力找出在我的数据库中表示特价商品概念的最佳方法-这些与销售产品相关。每种特价都会提供某种折扣,但它们会有所不同,一种只是简单的降价,而另一种则是买x送y半价或x类30%折扣。我预计不会有超过10种特价商品类型。。。但是需求会发生变化,如果需要,我需要确保我能够处理更多的需求 我试图想出一个简单的方法来在我的DB中表示这些,但是我认为我要么必须为每个特殊创建一个表,要么必须有一个特殊表,其中包含90%的值为空的列。我打算有一个SpecialType表,该表将按类型将所有特价组合在一起,例如

我正在努力找出在我的数据库中表示特价商品概念的最佳方法-这些与销售产品相关。每种特价都会提供某种折扣,但它们会有所不同,一种只是简单的降价,而另一种则是买x送y半价或x类30%折扣。我预计不会有超过10种特价商品类型。。。但是需求会发生变化,如果需要,我需要确保我能够处理更多的需求

我试图想出一个简单的方法来在我的DB中表示这些,但是我认为我要么必须为每个特殊创建一个表,要么必须有一个特殊表,其中包含90%的值为空的列。我打算有一个SpecialType表,该表将按类型将所有特价组合在一起,例如折扣、买x送y,这将用于确定相应应用层中的业务逻辑。此外,我还认为我可以为每种特殊类型创建一个表,然后缓存结果,基本上缓存每种产品的可渲染输出,这些输出可以定期更新,比如每5分钟更新一次,这样做的目的是执行大量的连接编辑-这些实际上可能是联合编辑,但很少这样做,因为数据不是实时关键的,5分钟的延迟不会导致任何人死亡


如果您能就如何以最整洁的方式处理这种情况,同时保持我的数据库正常化提供任何反馈,我将不胜感激。

由于添加特殊类型需要更改代码,并且您无法合理预测所有可能的特殊类型,因此我很乐意为每种特殊类型创建一个单独的表,以及某种主表,其中将包含特殊类型、名称、描述等

使用一个包含大量不适用字段的表往往会成为一个问题,而这几乎总是一种过度使用


顺便说一句,我一生中最不愉快的意外之一是,当我发现一个新的促销活动需要从电视广告中更改代码/数据库时。

你只是在展示适用的特价商品吗,或者您是否计算价格和类似的业务逻辑?如果出现新的特殊类型,是否需要更改代码?是的,我预计将根据特殊类型在BLL中进行计算。因此,在添加新类型时,必须添加额外的逻辑。当然,除非有更好的办法。