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

Мне нравится ограничивать мою ширину приблизительно 100 символами, чтобы позволить двум редакторам SxS на широкоэкранном мониторе. Я не думаю, что существует любое серьезное основание для предела точно 80 символов больше.

9
задан JasonMArcher 5 November 2014 в 00:11
поделиться

5 ответов

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

Если вы хотите использовать только одну таблицу, я бы предложил добавить автор, временная метка и текущий флаг. Флаг на самом деле не нужен, поскольку вы можете выбрать максимальный номер версии, но он значительно упростит ваши запросы. Устанавливайте флаг только тогда, когда в строке указан самый высокий номер версии. Вы по-прежнему можете использовать триггер для заполнения строк, но будьте осторожны, иначе вы можете попасть в цикл триггеров обновления.

3
ответ дан 4 December 2019 в 20:24
поделиться

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

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

3
ответ дан 4 December 2019 в 20:24
поделиться

Возьмите это с огромным количеством salt, но у вас может быть родительский идентификатор, который присоединен к первичному ключу в той же таблице, вместе с bool, указывающим, является ли это текущей версией. Это метод, который я использовал для системы CMS некоторое время назад ... Возможно, вам понадобится общий идентификатор для истории изменений (чтобы получение всех исторических записей для элемента не рекурсивно). Вы можете сделать это, включив идентификатор первой версии во все последующие версии, чтобы вы могли легко получить всю партию.

my .02

2
ответ дан 4 December 2019 в 20:24
поделиться

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

Если вы хотите использовать полномасштабный контроль версий, вам нужно какое-то поле статуса в строке как хорошо, это говорит вам, была ли эта версия отменена / удалена / одобрена или нет. Когда вы получаете последнюю версию, вы выбираете строку с максимальным номером контроля версий, которая имеет соответствующий статус.

Если вы просто хотите сохранить историю сообщений и фактически не имеете контроля версий, вы можете просто использовать метод записи номера версии.

2
ответ дан 4 December 2019 в 20:24
поделиться
1
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

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