Редакции: алгоритм и структура данных - PullRequest
2 голосов
/ 15 апреля 2010

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

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

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

Есть идеи, что будет лучшим подходом? По крайней мере, пожалуйста, укажите мне в правильном направлении. Спасибо!

1 Ответ

2 голосов
/ 15 апреля 2010

Одна из возможностей - иметь таблицу объектов и свойств (которую вы уже можете иметь). Создать таблицу ассоциации, содержащую ID ObjectId PropertyId Значение Date_Added / version_number (по вашему выбору, если вы хотите использовать метку времени или столбец последовательности)

Что касается вашей проблемы, вы всегда добавляете в таблицу сопоставлений и никогда не обновляете ее.

Если вы хотите получить снимок последних свойств объекта, вам нужно выполнить запрос DISTINCT для свойств, упорядоченных по дате_добавления / номеру версии. Для данного свойства проверка истории также проста.

Надеюсь, это поможет

...