Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2010, 21:47   #1
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
Восклицание Как "в ручную" правильно организовать ведение истории в базе данных

Добрый день, уважаемые форумчане. Может быть подобная тема и была, - честно искал, но найти не смог.

Вопрос.
Есть база данных Access в связке с Дельфи. Мне нужно организовать историю:
- ввода всех элементов - текстовые поля, ричэдиты, списки и прочее
- изменение столбцов таблиц базы данных с указанием времени и кто и когда и что делал
- история работы пользователей.

Я вижу это пока так.
История ввода элементов
для однотипных элементов завести таблицу, типа
THistEdit (HEid / HEDatetimestart / HENameEdit / HEUser / HEText / HEComment )
То есть хранить время, имя элемента, пользователя и значения введенного поля, а потом выбирать по запросу.

История работы пользователей - похожая таблица, как для элементов - только для пользователя: "дата, когда вошел, вышел и что-нибудь еще."

А вот с историей изменения столбцов в таблицах сложнее. Я думаю сделать так
- код
- имя таблицы
- имя стобца
- дата время изменения
- значение
А потом делать выборку по паре таблца столбец.

Второй вариант. Создавать еще одну таблицу, например, "Работники" - "ИстоиряРаботники" и в нее писать все изменения, по приведенному выше типу только по таблице "Работники". То есть - множить число таблиц истории соответственно числу рабочих таблиц.

Эффективно ли это? Какие еще есть варианты? Подскажите, возможно есть какие-нибудь стандартные средства, А я не знаю?

Спасибо.
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 17.09.2010, 23:49   #2
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Если сделать одну таблицу изменений в БД и повесить заполнение на триггеры, то со временем таблица может разрастись до неимоверных размеров. Если создавать для каждой таблицы еще одну таблицу дублер, то изменении структуры таблицы можно забыть изменить структуру таблицы дублера. В первом случае сразу видно что изменили. Во втором на определенный момент времени легче получить полную информацию. Вообщем наверно надо смотреть как часто меняются данные, структура и тд и тп. Я б наверно сделал одну, но с возможностью переносить "старые" данные в архивную таблицу.
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 18.09.2010, 10:53   #3
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Спасибо, понял совет.
и это пройдет...
grenles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Как организовать "F5(обновить)" для папки? Гражданин.РФ Помощь студентам 1 30.05.2010 16:15
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
"как в БД (Access) организовать поиск?" Принцесса Помощь студентам 2 16.12.2009 14:36
Как добавить "значение по умолчанию" в базе Access? bafy БД в Delphi 6 13.02.2009 12:29