我在一個系統中工作,我們有這樣的設施。爲了保持高效,我們會爲客戶模式動態生成/修改表格。我們還需要嵌入一個元模型(模型的模型)來動態地在實體中處理信息。
選項1:使用自定義表格,您具有完全的靈活性,但它也顯着增加了複雜性,特別是現有數據的更新/遷移。以下是您需要考慮的事項列表:
- 如果列的類型發生了變化,該怎麼辦?
- 如果添加了一列,該怎麼辦?有默認值嗎?
- 如果刪除了一列,該怎麼辦?我可以丟棄現有的信息嗎?
- 如何管理列的重命名?
- 如何讓事物在數據庫之間移植?
- 如何使其在數據庫級別(如索引)有效?
- 如何管理人爲錯誤(例如用戶刪除一列然後改變主意)?
- 如何在客戶站點安裝新版本系統時管理遷移(腳本,部署等)?
- 如何在使用ORM時使用此功能?
選項2:一個輕量級的替代方法是在不同類型的業務表(例如:「USER_DATE_1」,「USER_DATE_2」等)添加一些「備用」欄目我已經看到了一個幾次。這會讓你的DBA尖叫,並不是一個好的做法,但至少可以促進一些事情,例如(遷移腳本,ORM集成)。
選項3:另一種選擇是將所有內容都存儲在具有結構屬性/數據的表中。但這對數據庫性能來說確實是一場災難。任何不完全微不足道的事情都需要很多連接。而且DBA會尖叫得更厲害。
選項4:它是選項2和3的混合。核心表是固定的,但可以使用具有屬性/數據的表以某種方式擴展它們。
總結:在你走這條路之前三思。它可以完成,但對應用程序的設計和維護有重大影響。
你是什麼意思的模型?你在談論數據庫嗎? – Pace 2010-04-18 16:15:46
死了5年以上的J2EE,沒有註釋。但是Java EE確實如此。 – 2010-04-18 16:32:06
什麼是功能要求?基於JavaEE(或*咳嗽* J2EE)的PhpMyAdmin克隆? – BalusC 2010-04-18 20:26:25