嗨我正在開發一個發票應用程序。發票和發票行:您如何存儲客戶地址信息?
所以總的想法是有兩個表:
發票(ID,日期,CustomerAddress,CustomerState,CustomerCountry,增值稅,合計); InvoiceLine(Invoice_ID,ID,Concept,Units,PricePerUnit,Total);
正如你所看到的,這個基本的設計會導致很多記錄的重複,客戶端將擁有相同的地址,州和國家。
因此,替代方法是有一個地址表,然後建立關係地址<-發票。
但是,我認爲發票是不可變的文件,應該按照它最初制定的方式存儲。有時客戶會更改他們的地址或狀態,以及是否來自地址目錄,這些地址目錄會更改所有先前製作的發票。
那麼你有什麼經驗?
客戶地址如何存儲在發票中?在發票表中?地址表?或者是其他東西?
您能提供指向書籍,文章或文檔的指針嗎?
您不覺得發票表幾乎就像歷史表一樣,因此關於發票最初打印的信息的重複信息是否有效? – elviejo79 2010-06-02 00:43:40
@elviejo,可以證明你是正確的,但你必須評估你是否想要一遍又一遍地存儲相同的信息,或者只是將一個foriegn密鑰存儲到所使用的地址。如果您存儲了foriegn密鑰,那麼它意味着一旦發票鏈接到它就不能更改舊地址,相反,任何更改都必須成爲新的地址記錄,並且只需在地址表上維護一個標誌,以指示地址是否有效。 – slugster 2010-06-02 00:58:42
@elviejo您也可以在不必爲客戶更改整個地址維護過程的情況下執行此操作。當訂單成爲發票時,您可以鏈接到一個客戶實體和一個「匿名」地址實體(可能是賬單到發貨的角色),它們只包含發票時的地址。您查看所有地址欄並獲取代理鍵。這個「地址」歷史從不更新,只能插入。之前的地址只是重複使用。因此,您可以獲得時間點數據,而無需改變您的整個客戶維護設計。 – 2010-06-02 02:00:26