|
|
|
Покритикуйте историю
|
|||
|---|---|---|---|
|
#18+
Здравствуйте в базе есть объекты, для которых нужно хранить глобальныю историю, типа добавление/удаление пользователя, скачивание файла, добавление файла, добавление новой версии файла, сообщения между пользователями и т. д. что-то порядка 30 событий пока, который группируются по трем типам. Планирую создать таблицу ObjectHistory(id, event_id, type, [some required fields]) и для каждого типа хранить историю в таком виде [Type History](id, ..., ObjectHistoryId) Будет ли правильной такая схема или можно придумать что-то лучше? И какие проблемц могут возникнуть впоследствии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 10:46 |
|
||
|
Покритикуйте историю
|
|||
|---|---|---|---|
|
#18+
обычно для хранения истории делается либо дублирующая таблица для каждого типа объекта , либо одна таблица, в которой содержится история для всех типов примерно следующей структуры: History(id, HistoryDate, HistoryObjectID, ). Последний вариант можно нормализовать, выделив в дочернюю таблицу HistoryAttributeID и HistoryValue. Смысл таблицы [Type History](id, ..., ObjectHistoryId) мне не совсем понятен. Минусы дублирующей структуры - в поддержке и расширении (в последующем включении атрибутов ели для них понадобится ведение истории). Минусы одной таблицы - в проблемах с производительностью, ее оптимизации, необходимости организации дополнительных структур для хранения метаданных о типах, слабой типизации при хранении значения истории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 10:10 |
|
||
|
Покритикуйте историю
|
|||
|---|---|---|---|
|
#18+
_Monah_ в базе есть объекты, для которых нужно хранить глобальныю историю, типа добавление/удаление пользователя, скачивание файла, добавление файла, добавление новой версии файла, сообщения между пользователями и т. д. что-то порядка 30 событий пока, который группируются по трем типам. Я бы реализовал так: 1. Для связи пользователся с сессией создается таблица Сессий (SessionID, USER) 1. Удаление в основных таблицах запрещено. Признаком активности записи есть поле, например ISACTIVE 2. Для каждой таблицы есть архивная , с такой же структурой + 3 поля: Время, Операция, SessionID 3. В триггерах на вставку и изменения записывать NEW в архивную таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2008, 14:50 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35325310&tid=1543814]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 412ms |

| 0 / 0 |
