Database 发票数据库设计
几天前我创建了一个处理发票的应用程序。我想知道如何最好地将折扣整合到我的发票中。我应该将其作为负数项目(在发票项目表中)还是在发票表中创建“折扣”列?这两种选择中的任何一种都会给您带来什么后果?例如,您希望有多个折扣,还是以后有非常明确的折扣?如果每张发票只有一个折扣,那么我就不会把它弄得比需要的更复杂。在我看来,把它放在发票表中更容易和更清楚——把它作为一个否定的条目会使物品的处理变得更加困难。 < P>我完全同意使它尽可能简单,但有一件事要考虑的是,是否应该免除任何项目的折扣?在这种情况下,您需要在详细信息中添加bool字段,以记住哪一行应该有折扣。我将其作为负值项目。原因是:Database 发票数据库设计,database,database-design,invoice,discount,Database,Database Design,Invoice,Discount,几天前我创建了一个处理发票的应用程序。我想知道如何最好地将折扣整合到我的发票中。我应该将其作为负数项目(在发票项目表中)还是在发票表中创建“折扣”列?这两种选择中的任何一种都会给您带来什么后果?例如,您希望有多个折扣,还是以后有非常明确的折扣?如果每张发票只有一个折扣,那么我就不会把它弄得比需要的更复杂。在我看来,把它放在发票表中更容易和更清楚——把它作为一个否定的条目会使物品的处理变得更加困难。 < P>我完全同意使它尽可能简单,但有一件事要考虑的是,是否应该免除任何项目的折扣?在这种情况下,
- 开发票时,计算值永远保持不变是非常重要的;即使您的计算公式以后发生更改,您也可以正确地复制任何给定的发票。如果当时计算的值不正确,这一点也是正确的——它就是原来的值
- 拥有价值金额意味着在特殊情况下手动调整很容易处理-例如,您的营销经理/会计可能会因为延迟交货而决定给予100美元的一次性折扣。这对于负值来说是微不足道的-只需添加另一行,但贴现率很难/麻烦
- 每张发票可以有多个折扣金额
- 它是完全灵活的——它有自己的生存空间,可以随心所欲。事实上,我会让折扣成为另一种“产品”(甚至可能是多种产品——每种不同的折扣原因一种,例如圣诞节、优惠券、推荐等等)
- 对于它自己的项目,你可以添加一个原因描述,就像任何其他“产品”-例如“支付现金10%折扣”或其他任何东西
- 您不需要任何特殊的代码或数据库列!只需像以前一样汇总项目并将其打印在发票上。“没有勺子(折扣)”:它只是另一个行项目-有什么比不需要更改代码/db更简单
- 并非所有项目都应该打折-例如退款、退货、订阅(如果适用)。这变得太复杂,没有必要在数据库中表示折扣的业务逻辑。将计算等保留在应用程序代码中,将结果存储在数据库中
- 拥有自己的项意味着计算可以任意复杂。这意味着随着复杂度的增加,没有数据库维护。维护/更改代码比维护/更改数据库容易得多
- 最后,我成功地构建了一个发票系统,我采用了“项目”方法,效果非常好