Итак, у меня есть приложение Rails, которое отслеживает сотрудников. Мы хотим отслеживать историю занятости с течением времени. Мы хотели бы иметь возможность выполнять следующие виды запросов:
- Поиск сотрудников по их текущему статусу (зарплата, менеджер, должность и т. Д.)
- Поиск сотрудников по состоянию на конкретную дату
- Поиск сотрудников, которые когда-либо соответствовали условию
Мы не возражаем против того, что исторические запросы были значительно медленнее, даже, может быть, на 2 порядка медленнее.
Эта история отличается от контрольного журнала - контрольный журнал - это история данных, поэтому контрольный журнал скажет вам «какая зарплата была сохранена для сотрудника X на дату Y», но не позволит вам исправить что старые данные, если это не так.
[Мы также используем контрольные журналы для целей аудита, но я думаю, что логика контрольных журналов обеспечивает почти ортогональное требование к проекту.]
Существует ли известный шаблон проектирования базы данных для лучшей реализации такого рода истории? Или сайт, где я могу найти обсуждения различных "очевидных" конструкций и компромиссов? Есть плагины Rails?
Rails 2.3.5 с Ruby 1.8.7, если это имеет значение.