我正在使用c#和實體框架代碼第一種方法處理庫存應用程序。多個公司的數據庫模式
其中一個設計要求是用戶應該能夠創建多個公司,並且每個公司應該擁有一整套庫存主表。
例如,每個公司都應該有自己的庫存日記和項目清單。還有一種方法可以將這些公司組合起來,形成一個「集團」公司,從本質上合併數據。
使用基於文件的RDBMS像sqlite的之一,它的很簡單,我只需要爲每家公司單獨SQLite數據庫,然後主數據庫將其結合在一起。但是,我應該如何去做一個單一的數據庫文件!不是多個文件數據庫。 我不想在每張桌子上都有「公司」欄!
我給了我有限的DB知識的想法是使用不同的模式分離。每個公司都有一個架構,每個公司在每個架構中都有相同的一組表,並且有一個單獨的架構來管理常見的表和表,以便將其他架構捆綁在一起。這是一個好方法嗎?因爲我很難找到一種方法來'動態'使用ef和代碼先創建模式。
編輯#1
要獲得公司數量的概念,一個企業擁有約4-5的公司,並在每個財政年度的老企業封閉和一套新的企業的創建。在同一個文件中保存多年的數據本質上是好的,但只要我可以提供一個單獨的模塊來加載數年的數據,就可以從幾個數據庫文件中進行逐年分析,這並不是必需的。
至於個別公司數據的大小,它可以擊中每家公司GB大關。
架構的變化很頻繁,至少在桌子上水平,這將是完全由用戶自定義。
我想推動我的問題的一個方面是實施這種設計。如果它是一個具有離散桌面接口和實現的應用程序,並且我擁有像SQL Server一樣的RDBMS服務器,那麼數據庫的數量並不重要。但是,對於託管在第三方並使用其數據庫服務器的基於Web的UI,可用數據庫的數量將受到限制。唯一的解決方案是使用像SQLite這樣的無服務器數據庫。 但是,就一般建議而言,SQLite不建議用於大型企業級數據庫。
關於這個http://msdn.microsoft.com/en-us/library/aa479086.aspx的一個很好的閱讀然而,我仍然需要一些使用c#和EF代碼的方法的幫助。我想用多模式方法。 – codetantrik