2010-04-15 8 views
2

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

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

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

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

ответ

2

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

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

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

Я надеюсь, что это поможет

+0

Я не вижу причины для использования 2 таблиц, можете ли вы объяснить, пожалуйста? Не могу ли я выбрать DISTINCT для строк из одной таблицы? –

+0

@mvblfst Это сделано в двух таблицах, чтобы оптимизировать производительность для чтения последних данных, я считаю, что чтение таблицы версий будет очень массивной операцией –