В моем веб-приложении я хочу регистрировать определенные пользовательские взаимодействия и т. Д., Например, «Пользовательская ABC присоединилась к группе XYZ». Поэтому я хочу настроить механизм ведения журнала, который регистрируется в базе данных Mssql. Сейчас я пытаюсь найти хороший дизайн базы данных для достижения гибкости.
Прежде всего, я не хочу регистрировать такие строки, как «Пользовательская ABC присоединилась к группе 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 сделала что-то еще»). Например, я мог бы хотеть добавить некоторую информацию к определенной записи журнала для будущих записей. Поэтому я создаю новый UserLogTemplate, который ссылается на тот же UserLogType. Так я бы достиг нисходящей совместимости.
Это дизайн базы данных, который будет работать? Вы предлагаете лучший дизайн?