Иностранные ключи и исторические данные - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть таблица котировок, которая генерирует цену на основе множества параметров. Цена генерируется на основе данных из нескольких других таблиц, таких как: Сборы, Купон, Акции и т. Д. Лучший способ справиться с этим - использовать ForeignKeys. Вот таблица (все поля _id являются внешними ключами):

Quote
#user input fields
charge_id
promotion_id
coupon_id
tariff_id

Все выглядит хорошо. Каждая запись котировки имеет очень подробные данные, которые сообщают вам, откуда берется цена. Проблема в том, что данные в таблицах, от которых они зависят, не обязательно останутся прежними. Он может быть удален или изменен. Допустим, у цитаты есть внешний ключ к тарифу, и затем он меняется. Записи, связанные с этим больше не рассказывают ту же историю. Как вы справляетесь с чем-то вроде этого? Буду очень признателен, если вы порекомендуете какую-то теорию, связанную с этим.

1 Ответ

1 голос
/ 08 ноября 2019

Если вы не хотите, чтобы значения котировок изменялись при изменении объектов, связанных с внешним ключом, лучше всего добавить все поля из отдельных моделей внешних ключей в классе Quote.

Затем при вычислениизначения Quote, вы выбираете данные из всех (теперь не) связанных объектов и сохраняете их в таблице Quotes.

Теперь любые изменения в внешних таблицах не будут влиять на таблицу Quotes.

Другой вариант - использовать библиотеку типа django-simple-history , которая отслеживает все изменения в моделях с изменением времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...