Я надеюсь, что термин «справочная таблица» выбран правильно, я имею в виду, например, таблицу ставок (справочную) со следующими ставками:
дешево: 15 долларов, -
Средний: $ 30, -
дорогое: $ 45, -
мы находимся в ситуации, когда для данного объекта (мы называем это «ошибка», это неисправность устройства, airco,лифт, кран, туалет и т. д.) для ремонта этого устройства нанят конструктор.этот конструктор имеет эти три (составленных) показателя: дешевый, средний и дорогой.
Когда конструктор устраняет ошибку, он вводит отработанные часы и ставку (когда старший выполнял работу, «дорогой»).и когда младший выполнил работу, «дешево»)
технически, мы затем добавляем FK из таблицы ошибок в таблицу тарифов.
Поэтому, когда счет должен быть распечатанмы получаем тариф через FK и количество часов, отработанных из записи об ошибке.
Проблема в том, что когда конструктор меняет свои тарифы, а вы пересчитываете старый счет спустя месяцы, другие суммы рассчитываются для счета, потому чтозапись изменилась.
Итак, мы должны построить какую-то историю, и вот в чем вопрос: как это делается?
я придумал две разные ситуации, ивопрос в том, является ли один из них хорошим, есть ли лучшие способы?
1 добавить поле с действительным и с действительным до в таблице тарифов, поэтому, когда вы редактируете значение, вы в fact создайте новую запись с новыми действительными датами.Недостатком является то, что вы всегда должны иметь в виду ставки с конкретной датой, которая для текущей ситуации (фактическая ставка на данный момент) не является необходимой.
2 не ставьте FK из-за ошибки в оценку, но когда вы устанавливаете скорость в случае сбоя, вы просто копируете ЗНАЧЕНИЕ из значения скорости в состояние сбоя.Недостатком является то, что когда ошибка все еще редактируема, когда вы редактируете скорость, частота ошибки не обновляется.И, когда вы редактируете ошибку, вы получаете выпадающий список с 3 значениями, из которых не совпадают текущие значения.
На данный момент спасибо уже за чтение всего этого поста!