发票&发票行:您如何存储客户地址信息?
嗨,我正在开发一个发票应用程序。
所以一般的想法是有两个表:
Invoice (ID, Date, CustomerAddress, CustomerState, CustomerCountry, VAT, Total);
InvoiceLine (Invoice_ID, ID, Concept, Units, PricePerUnit, Total);
正如您所看到的,这种基本设计会导致大量重复记录,其中客户端将具有相同的地址,状态和国家/地区。
所以另一种方法是拥有一个地址表,然后建立一个地址< -Invoice。
但是我认为发票是不可变的文件,应该按照它最初制作的方式存储。有时,客户会更改其地址或状态,如果它来自地址目录,该目录将更改以前制作的所有发票。
那你的经历是什么?
客户地址如何存储在发票中?在发票表中?地址表?或者是其他东西?
您能否提供指向书籍,文章或文档的指南,以便进一步详细讨论?
没有找到相关结果
已邀请:
3 个回复
体悉
痰嫉
然后您的订单商品成为订单和产品之间的多个关系表。
要获得完整的发票,您需要查询订单表并将其与OrderItems表连接。 OrderItem通常具有购买价格,因为产品表中的价格可能会在创建订单后发生变化,并且该信息通常对存储有用。
破弯
,
和
,但是构造它以便一旦输入地址,它就永远不会被更新或删除,只是弃用。您的地址表中可以包含
或
布尔字段。然后,当您创建发票时,发票会链接到CustomerID和当时正在使用的AddressID。当客户更改其地址时,您使用新的AddressID创建一个新记录,并使用布尔字段弃用旧记录。或者如果你真的想要保持良好的记录和/或需要查找这些数据,你可以得到一个
和
,但这会使查询更复杂一些。 这样你仍然存储旧地址,它仍然链接到客户以供参考,同时还允许客户拥有多个列出的地址(例如一个用于发货,一个用于计费)。 您可以根据需要添加更多表格,例如
,
,
等