2010-01-30 36 views
2

在我的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。這就是我如何實現向下兼容。

這是一個可以工作的數據庫設計嗎?你建議更好的設計?

回答

0

我決定使用我自己發佈的db設計。

0

我不只是試圖哄我的一個應用程序,但我開發了一個應用程序日誌記錄工具,允許您存儲自定義元信息以及單獨的日誌條目。它使用CouchDB運行,這是一個面向文檔的數據庫(非關係數據庫,這是SQL Server的一部分),這使得存儲和檢索鬆散結構的信息變得更加容易。

如果您有興趣,請查看GitHub和/或給我發電子郵件。我很樂意幫助你開始使用它,也許它會更適合這種「不那麼結構化」的數據。