用于处理个人和经常性费用的数据库设计

03U*_*Usr 5 c# sql database-design design-patterns sql-server-2008-r2

我们有一个结算系统,我们处理个人费用以及经常性费用(订阅).

有两个SQL表:

StandardCharges
RecurringCharges
Run Code Online (Sandbox Code Playgroud)

StandardCharges表包含客户在本月购买的单个商品.

RecurringCharges表保存按日期收费的定期项目.到时候,我们的系统会自动创建一个recur请求,该请求会向StandardCharges表添加一行,并在RecurringCharges表中按日期将费用增加到下个月.

在每个月末,我们从StandardCharges表中获取每个客户的总价值并创建发票.

是否有某种设计模式或其他方式?这是正确的数据库设计吗?理想情况下,我想在一张Charges桌子上收取所有费用,并从那里管理经常性费用?

谢谢

Kan*_*ane 2

我怀疑你的设计确实是正确的。

当从现实世界的角度思考数据时,将“可能”交易(即尚未发生且可能不会实现的交易,可能是因为客户超出了信用额度)与已承诺交易和实际交易混合在一起是没有意义的。

将数据合并到单个表中也会使报告变得困难,因为您必须应用特殊的过滤条件并存储额外的元数据 - 例如 TransactionCompleted 和 TransactionIsFutureCharge。

如果我要提出建议,它将重命名为StandardCharges更接近它所保存的数据的名称,例如CompletedTransactions和。RecurringTransactionsPendingTransactions