2017-05-21 104 views
0

我正在編寫一個應用程序,用戶可以添加有關書籍,出版商,來源(指向特定書籍的鏈接)等信息。 每個用戶都應該有能力添加或編輯書籍或有關任何書籍(流派,出版商等) 。 當用戶添加或更改有關圖書的信息時,只有主持人不檢查信息的正確性時,此信息纔可用。驗證後,所有用戶都可以獲得信息。
你可以看到我的數據庫模式here
我應該如何存儲關於用戶貢獻更改的信息?如何存儲有關用戶提供的更改的信息?

回答

0

您至少有一些基本方法可以使用。

選項1:保持未決在一組平行表的變化 - 在這個選項中,你會或多或少具有相同的表格,你的主要模式複製你的模式,但每個表中增加額外的編輯相關的信息,例如作爲proposed_byproposed_datetimeapproval_statusapproved_by

在這個選項中,你會跟蹤所有提議的變更,他們將被寫入主組表只有當主持人批准他們。您可以在這些並行表格中保留建議更改的歷史記錄,也可以採用已批准和已拒絕的更改,只保留待執行的更改。這將取決於您的業務需求。

選項2:使用狀態標誌跟蹤主表中的掛起更改 - 在此選項中,您可以將選項1的更改跟蹤列本身添加到主表中。您還可以使用status_flag列來指示哪些記錄是正式的,哪些是待處理的更改。如果需要,您也可以設想跟蹤被拒絕的更改。

選擇哪個選項?所有的設計都是關於折衷的。根據您的需求,您可以使用這些選項中的任何一個。第一個選項的問題是您必須複製所有表格,然後在其上添加更改跟蹤列。第二個選項的問題是,您的代碼讀取數據會更復雜,因爲它必須考慮篩選出所有未決的更改(以及如果您跟蹤它們而拒絕更改)。

我是乾淨的代碼風扇。出於這個原因,我可能會傾向於選擇1,但是我不知道你的業務需求,所以你將不得不做出自己的決定。