我會盡力描述我想要完成的工作,我找到的解決方案,並且會對您的輸入/建議感到高興。數據庫設計允許存儲來自可能會改變的外部關係的數據
我有這兩個表:
InvoiceType
-----------
invoice_type_id PK
type_name
line
show_in_income
..(other attributes)..
和
Invoice
-------
invoice_id PK
invoice_type_id FK
..(other attributes)..
比方說,我們有如下條目:
someInvoiceType: (1, "some name", "A", 1, ...)
someInvoice: (1, 1, ...)
我想的是,即使的屬性someInvoiceType被編輯,例如「有些名」變化「其他名稱」,在someInvoice,同時它有第一個值,保持舊的已創建。
所以我的(那種明顯的)解決方案是有一個單獨的表來存儲來自InvoiceType數據,這可能會改變,我想保留:
InvoiceInfo
------------
invoice_info_id PK
invoice_id FK
type_name
line
show_in_expenses
這將充滿只有當發票創建,因此將用於檢索我可能需要的所有信息,並且不會依賴任何更改。
我擔心的是,這個解決方案似乎有點「靜態」,並且不能真正展開,以防我想存儲更多屬性信息。
正如我在開始時所說的,我真的很想在我的場合提出一些建議/意見,甚至更好的設計方法。
非常感謝!
我想我可以回去和denormalise,它確實使一些操作更簡單,更快。 除了時間和查詢的複雜性,這個解決方案還有其他優勢嗎? 或者說得更好一些,我的方式是否能爲您的第一個解決方案提供任何優勢(您可以想到)? 非常感謝您的時間和迴應! – Systemfreak
版本控制解決方案的優勢在於它不會非規範化:)通過版本控制,您可以跟蹤參數的變化(例如,考慮定價),通過非規範化您可能會丟失一些此類信息。如果查找鍵不同,版本控制也可能有所幫助,但查找值是相同的。示例:稅收 - 您可能擁有相同的有效稅務鍵,但設置它的原因可能不同。實際上,您可以混合使用兩種方法:使用版本控制,其中保持版本化信息可產生額外的業務優勢,並在不進行非規範化的情況下使 – Shadow
好吧,我將不得不考慮這一點,非常感謝您的意見:) – Systemfreak