В конечном итоге я собираюсь преобразовать это в дизайн Hibernate / JPA.Но я хотел начать с точки зрения базы данных.У нас есть различные таблицы, содержащие данные, которые датируются будущим.Возьмите таблицу сотрудников со следующим псевдоопределением:
сотрудник
- id INT AUTO_INCREMENT
- ... поля данных ...
- действует с ДАТЫ
- действует до ДАТЫ
Сотрудник_обзоры
- id INT AUTO_INCREMENT
- employee_id INT FK employee.id
Очень упрощенно.Но допустим, что у сотрудника А есть id = 1 ,ffectiveFrom = 01.01.2011 ,ffectiveTo = 01.01.2099.Этот сотрудник будет менять работу в будущем, что теоретически создаст новую строку, id = 2 сffectiveFrom = 01.07.2011 ,ffectiveTo = 1/1/2099 и id = 1ffectiveTo обновлено до 6 /30/2011.Но теперь моя программа должна будет проходить каждую таблицу, которая имеет отношение FK к сотруднику каждую ночь, и обновлять эти FK, чтобы ссылаться на недавно вступившую в силу запись сотрудника.
Я видел различные публикации как в чистом SQLи на форумах Hibernate у меня должна быть отдельная таблица employee_versions, в которой я буду хранить все данные с эффективными датами, что приведет к обновленному псевдо-определению ниже:
employee
employee_versions
- id INT AUTO_INCREMENT
- employee_id INT FK employee.id
- ... поля данных ...
- действует от ДАТЫ
- действует до ДАТЫ
employee_reviews
- id INT AUTO_INCREMENT
- employee_id INT FK сотрудника.id
Затем, чтобы получить какие-либо фактические данные, нужно будет фактически выбрать из employee_versions с правильным employee_id и диапазоном дат.Кажется довольно неестественным иметь эту вторичную таблицу «версий» для каждой версионируемой сущности.
У кого-нибудь есть какие-либо мнения, предложения из вашей предыдущей работы и т. Д.?Как я уже сказал, я беру это чисто с точки зрения общего проектирования SQL, прежде чем наложить на Hibernate сверху.Спасибо!