Вопрос

У меня есть проблема, которую я ожидаю, очень распространен, но я не уверен, что искать, так как это можно объяснить во многих отношениях.

Я проектирую структуру базы данных для управления счетами, продуктами, ценами, валютами и т. Д.

Я могу управлять ценами и именами продуктов (ожидается, что они будут меняться сейчас, а затем).

на счетам, продукты добавляются по количеству, со скидкой, НДС, единорогами, белками и т. Д.

Теперь, когда цена обновляется в таблице продуктов, счет не должен меняться. Это должно оставаться прежним навсегда.

Когда я думаю об этом, мне кажется, что список продуктов представляет собой список объектов «класс типа», которые описывают, как выглядит продукт. Или мы могли бы назвать это «шаблон» или «базой» или «абстрактным», в зависимости от того, о какой абстракции мы думаем.

Продукты, которые добавляются к счету, являются «экземплярами», «реализациями», «дети», «версию записи» или что бы мы позволили им.

Как бы я структурировал это в базе данных? Я мог бы разделить их на две разные таблицы «абстрактныйПродукт» и «продукт», но они будут иметь большинство (возможно, все) их столбцов общего. В связи с этим было бы целесообразно держать их в одной таблице. Но тогда мне понадобится дополнительный столбец для обозначения того, является ли он «класс» или «экземпляр». Это тоже хорошо. Это также может быть инострудкой к классу, который он был создан из (или NULL для классов).

Я пробовал разные подходы, но все, кажется, надоедливые предостережения.

Это известный шаблон? Как это называется? Есть ли лучшие практики для решения этой проблемы?

Это было полезно?

Решение

Это хорошо известная картина.Если вы хотите обширную литературу по этой теме, найдите на «временную базу данных».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top