Управление версиями в реляционной базе данных - PullRequest
0 голосов
/ 07 октября 2010

У меня проблема с введением хорошего управления версиями в моей базе данных.

Давайте сделаем простой пример.Небольшой прокат.

У вас есть таблица Person (P_ID, Name), таблица Computer (C_ID, Type) и таблица Rent (R_ID, P_ID, C_ID, FromData, ToData).

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

Моя цель - установить на моих веб-сайтах какую-то систему, которая позволяет легко создавать версии некоторых записей в таблице.

Дополнительная информация:

У меня естьбизнес-логика, которая требует, чтобы я мог выпустить запись для версии.Я также должен иметь возможность откатиться на старые.Причина в том, что я хочу экспортировать для разных версий данных.

Ответы [ 4 ]

4 голосов
/ 07 октября 2010

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

Как только вы узнаете это, ответ должен выскочить на вас.IE, если аудитом является ваша цель, вы можете добавить триггеры базы данных и сохранить старые и новые значения в отдельной таблице [Audit].

2 голосов
/ 07 октября 2010

Вы сделали заявление (что хотите создать версию), но не задали вопрос (в чем именно заключается ваша проблема). Без вопросов трудно дать ответ.

В целом, вы можете предоставить управление версиями:

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

  2. Добавьте столбец PK, столбец номера версии и столбец «OriginalID» в таблицу в верхней части модели для этого объекта.

  3. Чтобы сделать управление версиями, скопируйте запись верхнего уровня на новый PK, поместив исходный PK в столбец «originalID» и увеличив столбец номера версии. Скопируйте связанные таблицы, изменив FK в этих таблицах, чтобы они соответствовали PK новой записи. Затем разрешите пользователю изменять записи, относящиеся к новой версии записи PK.

1 голос
/ 07 октября 2010

Вы можете создать архивную таблицу, которую вы обновляете с помощью хранимой процедуры или триггера, которая заполняется копией всех полей в строке данных в основной таблице после каждого обновления или вставки.Архивная таблица будет иметь свой собственный PK и метки времени для внесения изменений.

1 голос
/ 07 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...