【发布时间】:2011-09-18 04:57:54
【问题描述】:
我需要一些编码建议,因为我担心我正在创建效率低下的臃肿代码。
我有一个跟踪公司财务数据的网络应用。我有一个名为Accounts 的表,其中包含与典型财务账户相对应的记录集合,例如收入、现金、应付账款、应收账款等。这些记录只是作为外键指向的名称持有者。
我还有一个名为Account_Transaction 的表,它记录了Accounts 中所有账户的所有进出资金交易。从本质上讲,Account_Transaction 表完成了所有繁重的工作,同时指向正在更改的各个帐户。
例如,进行销售时,会在Account_Transaction 表中创建两条记录。一条记录增加现金余额,另一条记录增加收入余额。
Trans Record 1:
Acct: Cash
Amt: 50.00
Date: Nov 1, 2011
Trans Record 2:
Acct: Revenue
Amt: 50.00
Date: Nov 1, 2011
所以现在我有两条记录,但它们都指向不同的帐户。现在,如果我想查看我的现金余额,我必须查看 每个 Account_Transaction 记录并检查该记录是否涉及现金。如果是这样,则添加/减去该记录的数量并移至下一条。
在一个典型的工作日内,可能会有超过 200-300 笔与上述类似的交易。因此,Account_Transaction 表将很快增长。几个月后,该表可能有几千条记录。诚然,这对于数据库来说并不算多,但是,每次用户想知道例如应收账款的当前余额时,我都必须遍历整个 Account_Transaction 表来汇总处理账户名称的所有记录“应收账款”。
我不确定我是否以最优化的方式设计了这个。我曾考虑为每个帐户创建一个不同的表(一个用于“现金”,另一个用于“应收账款”,另一个用于“收入”等...),但通过这种方法,我创建了 15-20 个具有完全相同参数的表, 除了他们的名字。这似乎是糟糕的设计,所以我采用了这个Account_Transaction 的想法。
这似乎是处理此类数据的合适方法吗?有没有更好的方法可以让我真正采用?
谢谢!
【问题讨论】: