Я разрабатываю приложение для подачи заявок в ситуации, когда персонал, который будет зарегистрирован, может быть развернут несколько раз в течение всего срока службы приложения.Должен ли я нормализовать дополнительные поля во временных таблицах?
В моей текущей модели хранятся дополнительные поля данных в каждой записи развертывания.
В 90% случаев эти данные не будут меняться во время развертывания, но будут случаи, когда это произойдет. На данный момент я просто заканчиваю текущее развертывание и создаю новый, обновляя соответствующие данные.
Staff Table
-----------------------------
| ID | First Name | Surname |
-----------------------------
| 1 | Bob | Brown |
-----------------------------
Deployments Table
------------------------------------------------------------
| Sta | End | Staff_ID | Reg Pay | Temp Pay | Other Fields |
------------------------------------------------------------
| Jan | Mar | 1 | 3 | 3 | Other data |
| Jul | Sep | 1 | 3 | 5 | Other data |
| Sep | Dec | 1 | 5 | 5 | Other data |
------------------------------------------------------------
Пример: Уровень оплаты Боба равен 3. Сначала он был развернут в январе 2011 года на регулярном уровне оплаты. Его развертывание заканчивается в марте 2011 года (и поэтому перестает показывать в реестре с этой даты).
В июле он повторно развернут, но на этот раз более высокий уровень оплаты, чем его обычный уровень.
В сентябре его регулярное положение продвигается так, чтобы соответствовать его уровню оплаты развертывания (т. Е. Когда его развертывание закончится, он продолжит уровень 5).
июльское развертывание завершается в декабре, но фактически состоит из двух записей.
Я придумал эту модель, чтобы попытаться уменьшить количество событий, связанных с датой и периодом, которые я должен был сделать, а также упростить обновление интерфейса, если мне нужно добавить новые параметры, специфичные для развертывания поля.
Весьма маловероятно, что таблица развертывания будет расти намного больше тысячи записей, так как приложение в целом предназначено для ситуаций, которые по своей природе ограничены по продолжительности.
Мой вопрос: Я стреляю себе в ногу?
Является ли это абсолютно ужасной структурой данных? Должен ли я укусить пулю и извлечь эти данные в отдельные таблицы? Есть ли способ сделать это, не увеличивая количество полей даты начала и окончания, с которыми мне приходится иметь дело в любое время, когда я добавляю поле?
Спасибо за подсказку. Я думаю, что это может облегчить жизнь. – Alex