elv*_*o79 5 database-design invoices
嗨,我正在开发一个发票应用程序.
所以一般的想法是有两个表:
Invoice (ID, Date, CustomerAddress, CustomerState, CustomerCountry, VAT, Total);
InvoiceLine (Invoice_ID, ID, Concept, Units, PricePerUnit, Total);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这种基本设计会导致大量重复记录,其中客户端将具有相同的地址,状态和国家/地区.
所以另一种方法是拥有一个地址表,然后建立一个地址<-Invoice.
但是我认为发票是不可变的文件,应该按照它最初制作的方式存储.有时,客户会更改其地址或状态,如果它来自地址目录,该目录将更改以前制作的所有发票.
那你的经历是什么?
客户地址如何存储在发票中?在发票表中?地址表?或者是其他东西?
您能否提供指向书籍,文章或文档的指南,以便进一步详细讨论?
我强烈建议不要在发票中存储任何客户详细信息.
相反,我会有一个像这样的结构:
客户表,主键为id
客户地址表(因为每个客户可能随时间具有不同的地址),客户ID为外键
发票表,其地址字段是客户地址表的外键.
顺便说一句,我会考虑为每个订单项添加增值税字段.有些国家/地区的不同项目类型的增值税税率不同.