2010-06-28 2 views
1

У меня есть вопросы относительно пересмотра записей базы данных.Проверка записей в базе данных

Прежде всего у меня есть таблица базы данных с имя и содержание столбцы. Я хочу иметь «резервные» версии контента (и, возможно, имя) сохраненный столбец плюс пользователь, сделавший это редактирование.
Лучше иметь аудит стол с предыдущими версиями (и должен ли я хранить только измененный столбец или оба) или сохранить все в одном столе и просто поместить в него timestamp?

Примечание: колонка будет текстовым полем с не очень маленькими текстами, которые будут часто меняться.

И еще я хотел бы спросить вас, будет ли очень сложно сделать ревизии стола вместе со своими «детьми» (списки «to-to»). Я хочу сохранить ревизии как дел, так и ранее упомянутой таблицы. Или будет лучше, если я каким-то образом разметю эти списки дел в столбце (это замедлит работу при чтении и записи)?

Спасибо заранее!

ответ

1

В большинстве случаев лучше иметь отдельную таблицу истории, по следующим причинам:

  • запрашивая текущая версия таблицы проста (и это то, что является наиболее распространенным активным при нормальном применении);
  • сохранение целостности данных проще (поскольку уникальные ограничения и внешние ключи просты);
  • Производительность индексированных чтений не ухудшится.

Одна из проблем, связанных с отдельным подходом к таблице, состоит в том, что сложнее определить версию дочерней записи, относящуюся к данной версии родительской записи. Для этого нет простого решения. Но наименее худшим решением является фильтрация на основе временных меток версии.

1

Мы всегда строили другую таблицу с тем же именем, но суффикс с «_audit» и двумя дополнительными столбцами. Уникальный идентификатор и дата-время. Затем мы создали триггеры для обновления и удаления, которые ставили старую строку в таблице истории.

Таким образом, данные, которые были записаны один раз, не занимали бы в два раза больше места в базе данных, и мы могли бы писать запросы, которые определяли бы, какими были данные в определенный день.

Смежные вопросы