@tjfwapjfa

Как хранить версии текстов?

Допустим мне нужно хранить версии текстов. Я предполагаю так:

texts
- id
- author_id
...

versions
- id
- text_id
- text

Обратите внимание, текст не храню в таблице text, только в versions. При создании нового текста также создаю новую версию и текст сохраняю туда. Правильный ход?
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Можно версионность организовать на основе одной таблицы, достаточно добавить в таблицу поле с timestamp. При изменении просто добавляем новую запись с новым timestamp. Для выбора текущей записи, выбираем запись с наибольшим timestamp. Легко делается интерфейс для просмотра изменений и т.п.
Для удаления, нужно завести поле состояния, куда будет писаться признак удаления, физически записи не удалять.
Подобную схему таблиц с историей неоднократно видел в банковском софте.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@AVKor
Можно патчи хранить. Если размеры текстов большие, и их много, то место будет расходоваться экономнее. Но для восстановления полного текста определённой версии в этом случае необходимо патчить исходную версию нужное число раз.
Ответ написан
Комментировать
да
Ответ написан
Комментировать
AlexXYZ
@AlexXYZ
O Keep Clear O
Можно повесить триггер на события изменение,добавление,удаление, чтобы не программировать всю бизнеслогику. Из триггера можно писать хоть в соседний столбец, хоть в соседнюю таблицу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы