Я пытаюсь выяснить, как создавать таблицы БД для Undo-Redo.
Представьте, что у вас есть таблица задач со следующей структурой:
id <int>
title <varchar>
memo <string>
date_added <datetime>
date_due <datetime>
Теперь предположим, что за несколько дней и несколько входов в систему произошло несколько изменений; но пользователь хочет вернуться к одной из версий.
- Будет ли у вас отдельная таблица, отслеживающая изменения, или - попытаетесь ли вы сохранить изменения в таблице задач (строки "призрак" из-за отсутствия лучшего термина)?
- Вы будете отслеживать все столбцы или только те, которые меняются каждый раз?
Если это имеет значение, я использую MySQL. Кроме того, если это имеет значение, я хотел бы показать историю (ala Photoshop) и разрешить пользователю переключаться на любую версию.
Бонусный вопрос: вы сохранили бы целую ячейку memo
при изменении или попытаетесь ли вы сохранить только дельта? Причина, о которой я прошу, состоит в том, что ячейка memo
может быть большой, и только одно слово или символ могут быть изменены в каждой ревизии. Конечно, сохранение дельта потребует разбора, но если отскоки не ожидаются очень часто, не лучше ли экономить место, а не время обработки?
Благодарим вас за помощь.