2010-01-30 3 views
2

내 웹 응용 프로그램에서 "User ABC joined Group XYZ"와 같은 특정 사용자 상호 작용 등을 기록하려고합니다. 따라서 Mssql 데이터베이스에 로그인하는 로깅 메커니즘을 설정하고 싶습니다. 나는 이제 유연성을 얻기 위해 좋은 데이터베이스 디자인을 찾으려고 노력 중이다.템플릿 로깅 목적으로 데이터베이스를 디자인하는 방법은 무엇입니까?

우선 "User ABC joined Group XYZ"와 같은 문자열을 기록하지 않으려합니다. 나는 "ABC"와 "XYZ"라는 내용을 템플릿에서 분리하고 싶습니다. 그래서 템플릿 로깅 데이터베이스를 찾고 있습니다. 이 같은

뭔가 :
테이블 : UserLog

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

나는 단지 내 응용 프로그램 중 하나를 때려 눕 히려는 것이 아니라 개별 로그 항목과 함께 사용자 지정 메타 정보를 저장할 수있는 응용 프로그램 로깅 도구를 개발했습니다. SQL Server가 제공하는 비 관계형 데이터베이스 인 CouchDB를 사용하여 실행하면 느슨하게 구조화 된 정보를 훨씬 쉽게 저장하고 검색 할 수 있습니다.

관심이 있으시면 GitHub에서 확인하거나 이메일을 보내주세요. 나는 당신이 그것을 시작하는 것을 돕기를 원하고, 아마 "그렇게 그렇게 구조화되지 않은"데이터의 이런 유형에 훨씬 더 적합 할 것이다.

관련 문제