系统操作日志设计(转载)
前言
我們在做企業管理系統時,有多多少少都有對數據的完整性有所要求,比如要求系統不能物理刪除記錄,要求添加每一條數據時都要有系統記錄、或者更新某條數據都需要跟蹤到變化的內容、或者刪除數據時需要記錄誰刪除了,何時刪除了,以便誤刪后可以通過系統的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(操作日志)——用來記錄用戶對各種業務操作的內容情況。
下篇將討論用代碼如何實現日志管理的功能,下面先來幾張圖:
日志列表:
查看日志內容:
總結
以上是生活随笔為你收集整理的系统操作日志设计(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2013各版本激活密钥
- 下一篇: 腾达路由器穿墙模式怎么设置路由器怎么设置