У вас есть два варианта:
- либо вы делаете таблицу
Products
«разрешенной по времени» (также известную как «временная база данных»), например, вы сохраняете «предыдущее» состояние вашего отдельного продукта в своей таблице и присваиваете каждой записи пару ValidFrom / ValidTo
дат. Таким образом, если вы измените свой продукт, вы получите новую запись, а предыдущая останется нетронутой, на которую ссылаются те счета, которые ее использовали; обновляется только ValidTo
дата для продукта
или
- вы можете скопировать продукты (по крайней мере, те биты, которые вам нужны для вашего счета) в счет-фактуру - это позволит вам всегда знать, как выглядел продукт при создании счета-фактуры, - но это приведет к большому дублированию данных (не рекомендуется)
См. Этот другой Вопрос Stackoverflow для временных баз данных в качестве другого входа, а также ознакомьтесь с этой статьей на Simple-Talk: Проектирование базы данных: архитектура на момент времени