我正在創建一種維基網站,並且有一個由父實體組成的數據結構,該實體與子實體具有一對多的關係。我目前將它存儲在數據庫中的兩個表中,具有從子實體表到父實體表的外鍵關係。存儲此數據結構的最佳方式是什麼?
我需要在我的數據庫中爲維基功能版本這個數據結構。如果它只是一張桌子,這將是直接的,但是因爲它是兩個,所以它有點棘手。我正在考慮刪除子實體表並將它們作爲XML數據存儲在父實體表的字段中。我不需要通過這些子實體進行搜索。這是個好主意還是壞主意?有沒有更好的方法來存儲我的數據?
我正在創建一種維基網站,並且有一個由父實體組成的數據結構,該實體與子實體具有一對多的關係。我目前將它存儲在數據庫中的兩個表中,具有從子實體表到父實體表的外鍵關係。存儲此數據結構的最佳方式是什麼?
我需要在我的數據庫中爲維基功能版本這個數據結構。如果它只是一張桌子,這將是直接的,但是因爲它是兩個,所以它有點棘手。我正在考慮刪除子實體表並將它們作爲XML數據存儲在父實體表的字段中。我不需要通過這些子實體進行搜索。這是個好主意還是壞主意?有沒有更好的方法來存儲我的數據?
我想在父實體的領域 表
更改父每次取出孩子 實體表,並將其保存爲XML 數據,您將創建的副本孩子們:如果父母的數據變化很大,那麼你很快就會吃掉你的存儲空間。另外,將所有子級更改存儲在單個父級記錄中會導致父級膨脹(因爲有很多子級傾向於),這可能會影響數據檢索的性能。
有存儲版本數據的許多不同的方式,但他們分爲兩類:
這些方法之間的選擇取決於您想要對歷史版本進行什麼操作。他們在那裏只是爲了回滾?或者用戶是否會定期瀏覽更改?
另一個並不總是適用的複雜因素,但我認爲這可能是相關的(因爲您的建議解決方案)是父母和孩子變化之間的關係:當您顯示父母的歷史版本時,您需要顯示孩子的適當版本?反之亦然,如果您顯示的是舊版本的孩子,您是否需要顯示其父母(和兄弟姐妹)的適當版本?
您需要確定的關鍵是:大多數用戶最需要做什麼?優先考慮這一點。如果最常見的用例是,那麼只需查看所有記錄的當前版本,那麼您應該使用單獨的表格來存儲版本。
如果您需要記錄應用於給定父版本的子版本,那麼您可以引入額外的框架表(parent_id,parent_version,child_id,child_version)。當您只有一個家長和一個孩子的表格時,維護此表格不會太繁重。粗糙的地方是當你有多個孩子需要跟蹤時。
聽起來像您可能最終會限制將來存儲在子實體中的數據的可擴展性。爲什麼你不能只擁有存儲變更歷史的parent_history和child_history表。即在將數據更新到歷史記錄表之前複製數據的確切副本。歷史記錄表將包含一個日期時間字段,以便在發生更改時進行保存。您可以使用觸發器來執行副本 – Andrew 2010-02-19 10:13:10