2009-10-19 89 views
0

歸檔數據視圖(很抱歉的標題含糊不清,我怎麼也想不到真的說什麼我正在尋找不寫一本書。)最好方法與更改日誌

所以在我們的應用程序,我們允許用戶更改關鍵數據。我記錄了誰在日誌模式中改變了什麼,但現在問題出現了:我如何最好地在視圖中表示數據以用於報告?

一個例子將有助於:客戶的數據(比如帳單地址)在2009年4月4日發生變化。假設今天10/19/19,我希望在改變之前和之後看到他們2009年的所有訂單。我還希望每個訂單都顯示截至訂單日期的當前賬單地址。

所以,我有4個表:

訂單(以訂單數據) 客戶(與當前的客戶數據) CustomerOrders(連接兩個) CustomerChange(持有變更之日起,誰做的改變(員工ID),舊賬單地址是什麼,以及他們改變了什麼)

如何最好地構建報告使用的視圖以便返回正確的地址?或者,我最好通過創建報告數據庫並對數據進行非規範化處理,這就是報告組要求的內容。

回答

0

如果這是您唯一要做的事情,則不需要單獨的數據庫。你可以創建一個非標準化的表格/立方體...並填充並從中檢索。如果您的數據量很大,請在此表上應用適當的索引。

+0

好點,但我想出了一種方法來做我想找的。通過在視圖中使用CTE並通過仍然> = 0的MIN(DateDiff)進行篩選,我可以從不同的表中提取適當的數據。性能測試表明這是非規範化數據和視圖之間的一種衝突;我並沒有真正期待這個!由於報告(以及他們的管理人員,我的馬鞍下的真正毛刺)仍然需要非規格化的數據,但我想我會將它分離出來放到一個單獨的實例中,以最大限度地減少產生巨大的非規範化表格的影響應用程序數據庫。 – Valkyrie 2009-10-20 13:31:06

0

就我個人而言,我會設計這個,所以你不需要報表的變更表。如果沒有存儲在表格中的訂單日期的所有數據,存儲訂單是一種糟糕的做法。您可以從地址表中查找地址並將其與訂單一起存儲(部分號碼和公司名稱相同,以及隨時間而改變的任何信息)。您無法通過加入客戶,地址,零件號碼,價格表等來獲取訂單信息。

審計表更適用於修復不良變更或查找製作它們的人而不是報告。