在我的Web應用程序中,我想記錄某些用戶交互等,如「用戶ABC加入組XYZ」。因此,我想設置一個登錄到Mssql數據庫的日誌記錄機制。我現在試圖找到一個好的數據庫設計來實現靈活性。如何爲模板化日誌記錄目的設計數據庫?
首先,我不想記錄像「用戶ABC加入組XYZ」字符串。我想從模板中分離出「ABC」和「XYZ」內容。所以我正在尋找一個模板化日誌記錄數據庫。
事情是這樣的:
表:用戶日誌
IDLog int primary key
IDUserLogTemplate int foreign key
date datetime
表 UserLogTemplate
IDUserLogTemplate int PK
TemplateString varchar (like 'User {0} joined Group {1}')
IDUserLogType int FK
表 UserLogType
IDUserLogType int PK
Name varchar
Description varchar
表 UserLogContent
IDUserLogContent int PK
IDLog int FK
PlaceholderPosition int (like '0')
Value varchar (like "ABC")
我覺得這個數據庫結構會給我足夠的靈活性來添加/刪除/編輯特定的日誌類型(如「用戶ABC做別的東西」)。例如,我可能希望將某些信息添加到特定的日誌條目以供將來輸入。因此,我創建了一個引用相同UserLogType的新UserLogTemplate。這就是我如何實現向下兼容。
這是一個可以工作的數據庫設計嗎?你建議更好的設計?