c# - 数据库设计 : Custom fee/billing charge rates

标签 c# sql-server sql-server-2005 sql-server-2008 database-design

用户可以自定义计费率,这可能因用户而异。

你很可能有一个默认的账单费用表,看起来像这样

FEE
Id
FeeTypeId
FixedCharge
VariableCharge

当您向客户收费时,您可能会向他们发送发票等,然后您有一个表来存储可能看起来像这样的账单/收费金额!

USER_TRANSACTION_CHARGE
Id
UserId
FeeId
ChargeName
ChargeAmount
DateTime

您如何针对每个特定用户的自定义计费率进行设计?

最佳答案

看起来您的 FEE 表没有任何历史记录。能够开具 7 年或 10 年前的发票是一项常见的法律要求。 FEE 记录可以更改,那么这对发票表中的链接(feeid)有何影响?

FEE: Id, FeeTypeId, FixedCharge, VariableCharge
USER_FEE: Id, UserId, FeeTypeId, FixedCharge, VariableCharge

您可以创建一个 USER_FEE 表来“覆盖”特定用户的 FEE 表。因此,对于每个给定的 FeeTypeId,用户可能在 USER_FEE 中有一个覆盖层,或者可以退回到 FEE。

至于 USER_TRANSACTION_CHARGE,我严重质疑其中的链接列 FeeId,除非您维护针对 FEE 的历史记录,FeeId + DateTime 将链接到该列。我会把那张 table 放到

Id, UserId, ChargeName, ChargeAmount, DateTime

我在哪里假设 ChargeName 以某种方式链接到 FeeTypeId? ChargeAmount 是从 Fixed/VariableCharge 算出的任何值

所以本质上,(USER_)FEE 表用于查找值,但除此之外,它们存储为值,没有到 (USER_)FEE 表的反向链接,因为这看起来是一个简单的系统,没有版本控制。

关于c# - 数据库设计 : Custom fee/billing charge rates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709189/

相关文章:

c# - 将内容上传到 GCP 存储桶的 KMS 权限 403 错误

c# - 计算器故障: Only getting second value I enter

c# - Convert.ToDateTime(bool) 的意义何在?

c# - 在经典库中使用类时 IronPython 返回错误类型

c# - 无法摆脱错误 "There is already an open DataReader associated with this Command which must be closed first"

sql - 我应该使用 SQL_Variant 数据类型吗?

sql-server-2005 - 有关SQL语法: *=的问题

sql-server - 如何回滚SQL更新命令?

mysql - SQL 连接查询困惑 - MySQL

sql-server - 此查询是否相当于 SQL Server 2008 的 OPTIMIZE FOR UNKNOWN?