发票和交易设计

时间:2014-01-21 17:46:17

标签: sql asp.net-mvc entity-framework database-design

我目前正在考虑如何设计发票实体。 特别是在发票金额方面。

这些是我想到的选项,你看到了什么利弊?

  1. 发票实体本身不持有金额,而是持有一个虚拟列表,其中包含与发票相关的所有交易,并通过这些计算并显示金额。 InvoiceId作为外键。
  2. 发票实体确实持有金额和交易清单(作为我假设的安全保险?),仍然是InvoiceId作为外键。
  3. 交易实体不包含外键。而是从交易中计算金额并存储在发票表中。有一些其他参考相应的发票。
  4. 目前我正在使用选项编号1.但是当我考虑未来时,我意识到我的交易表将包含很多交易。在某些时候,我可能想要移动那些以提高性能,而不必移动(丢弃)发票表。所以3号将是我的选择。但是,还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

选项4?

鉴于你的设置,我会在这里设置三个表...让我们摆脱整个更新的想法。让我们拿2个基表......你将拥有数据字段,这只是名称和ID。

Invoice Table
-InvoiceID

Transaction table
-TransactionID

注意缺少invoiceID?我们将有第三个表格控制关系。

 InvocieTransactions
-InvTransID
-InvoiceID
-TransactionID

现在,当您开具发票时,您只是在此表中插入而不是更新......并且可以使用一个选择语句来完成插入,该语句会抓取所有事务并将其与新的发票ID相关联。< / p>

我添加了ITID作为此表的唯一标识符...它是可选的,但我喜欢在表格上有唯一的编号,因此您可以在将来引用一行(主要用于故障排除目的,或者可能添加一层新的报道)

有意义吗?如果您愿意,我们可以继续讨论这个问题