系統動作記錄設計(轉)

來源:互聯網
上載者:User

標籤:

前言

 

我們在做企業管理系統時,有多多少少都有對資料的完整性有所要求,比如要求系統不能物理刪除記錄,要求添加每一條資料時都要有系統記錄、或者更新某條資料都需要跟蹤到變化的內容、或者刪除資料時需要記錄誰刪除了,何時刪除了,以便誤刪後可以通過系統的XXX功能來恢複誤刪的資料。

我將這種功能稱為動作記錄

為什麼要做動作記錄?

其實上文也描述了一些,其主要目的就是跟蹤到每一個使用者在系統的操作行為,如對資料進行查詢、新增、編輯或刪除甚至是登入等行為。更進一步的理解可以說是對使用者使用系統情況的跟蹤,對資料的跟蹤防止資料意外刪除、更改時有所記錄,有所依據,以便對資料的還原,從某種程式上可以保護資料的完整性。

 

系統設計

情境

我們現在有一張表叫Employee:

ID int
Name nvarchar(50)
Gender nvarchar(2)
DateCreated datetime
CreateUser nvarchar(50)

在aspx頁面中可能會有EmployeeEdit.aspx(用來添加或更新Employee資訊等操作),EmployeeList.aspx(用來查詢或進行刪除Employee資訊等操作)

好了,現在我們要對Empoyee表操作的資訊做一個系統日誌,那怎麼辦?

也許你可以建立多一個表跟Employee表一模一樣的,叫做EmployeeLog

ID int
Name nvarchar(50)
Gender nvarchar(2)
DateCreated datetime
CreateUser nvarchar(50)
LogCreated datetime
OperationType int

其中加多了一些附屬的資訊如LogCreated(日誌添加日期)和OperationType(查詢、新增、刪除、更新)

此時這種情況可能大家在做使用者登入日誌的時候是一件很常見的事件。

但……問題來了,假如我需要對錶EmployeeIncome(員工的收入情況)做日誌那怎麼辦?

好建立多一張表叫EmployeeIncomeLog來記錄員工收入情況的動作記錄。

假如又需要對錶FixedAsset(固定資產)進行日誌記錄那又怎麼辦?

 

好了,大家可能意識到我們這樣做不但會造成表數量的增倍,而且大大的增加了工作量和開發時間,對資料庫表不易管理等情況。

 

因此我們需要一個能夠通過簡單的配置和編寫就可以完成以上功能的日誌管理

資料庫設計

包括三個表,

LogSetting(日誌設定)——用來儲存配置業務表名、業務名稱、主鍵等

LogSettingDetail(日誌設定明細)——用來儲存配置業務表需要記錄的詳細內容,如Employee表中,我們可能需要記錄欄位Name、Gender等資訊。

LogOperation(動作記錄)——用來記錄使用者對各種業務操作的內容情況。

 

下篇將討論用代碼如何?日誌管理的功能,下面先來幾張圖:

日誌列表:

查看日誌內容:

系統動作記錄設計(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.