2010-02-12 59 views
1

我面臨的一個常見問題是導出的信息必須顯示在詳細信息頁面和概覽表格中。顯示/更新派生信息的最佳方式?

例如,根據多個子項目狀態值的狀態,可能有1個項目的狀態。似乎存儲主要項目的派生狀態將是錯誤的,但對此信息進行排序和過濾也可能很麻煩。

處理這種情況的最佳方法是什麼?

回答

1

我不確定,我正確地得到了您的問題。爲了解釋我如何理解你的問題,我將使用示例。

例子:我們有車(項目)及其配件:車輪,發動機,車門等(分項)。汽車的狀態來源於其零件的狀態。例如:如果發動機的狀態是「損壞的」,那麼汽車的狀態是「損壞的」,或者如果車門的狀態是「缺失」並且發動機是「好的」,那麼汽車的狀態是「可用的」。

如果這個例子相當於你的意思,那麼你有以下選擇:

  1. 每次展示汽車的狀態時間計算得出的值,生成報告等優點:模型總是是一致的。 缺點:計算可能需要太多時間和資源。
  2. 首次計算派生值並將其存儲在數據庫中。每次更改子項目的狀態(觸發器,存儲過程,業務邏輯)時都要更改它。 優勢缺點是相同的,如1,但是如果1和2之間選擇,你必須考慮什麼更經常發生的情況:分項的變化狀況,或者關於該項目的信息被請求。
  3. 如果數據庫是高負載和有關項目的信息是不是時間關鍵的,那麼你可以重新計算通宵項目的狀態時,你的數據庫的負載是最小的,並將它們存儲在項目現場。 優點:最大限度地減少負載。 缺點:派生字段的返回值可能不正確。
  4. 保存上次計算派生狀態時子項的狀態。然後比較當前狀態(何時請求物品的狀態)和保存的狀態。如果改變,則重新計算,否則返回存儲值。 優點:降低負載。 缺點:需要額外的字段爲狀態的最後值。

這些是選項,但只有您知道特定信息(數據庫負載,派生值計算算法的複雜性,更常見的子項狀態更改或項目狀態讀取等)。所以只有你可以決定什麼適合你的情況。

+0

正是我在說什麼,謝謝。 – Greg 2010-02-15 17:12:40

相關問題