Как создать базу данных SQL с отменой и повторением?

Я пытаюсь понять, как создать в моих таблицах БД возможность отмены-повтора.

Представьте, что у вас есть таблица задач со следующей структурой:

id <int>
title <varchar>
memo <string>
date_added <datetime>
date_due <datetime>

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

  1. Будет ли у вас отдельная таблица для отслеживания изменений - или - вы попытаетесь сохранить изменения в таблице tasks («призрачные» строки, за отсутствием лучшего термина)?
  2. вы отслеживаете все столбцы или только те, которые менялись каждый раз?

Если это важно, я использую MySQL. Также, если это имеет значение, я хотел бы иметь возможность показывать историю (как в Photoshop) и позволять пользователю переключаться на любую версию.

Бонусный вопрос: Сохраните ли вы всю ячейку памятки при изменении или попытаетесь сохранить только дельту? Причина, по которой я спрашиваю, заключается в том, что ячейка памятки может быть большой, и при каждой ревизии может изменяться только одно слово или символ. Конечно, сохранение дельты потребует синтаксического анализа, но если отмены не ожидаются очень часто, не лучше ли сэкономить место, а не время обработки?

Спасибо за вашу помощь.

10
задан OMG Ponies 26 March 2011 в 00:53
поделиться