내 웹 응용 프로그램에서 "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을 만듭니다. 그것이 하위 호환성을 얻는 방법입니다.
해당 데이터베이스 디자인이 작동합니까? 당신은 더 나은 디자인을 제안합니까?