Я занимаюсь разработкой приложения для заказа товаров через Интернет. Сначала я представлю вам часть схемы ER, а затем объясню.
Здесь " products " - это продукты питания. и они будут go внутри fresh_products
таблицы. Как видите, fresh_product
состоит из product species
, category
, type
, size
и product grade
.
Затем, когда я размещу заказ, order id
и order_status
будут сохранены в таблице order
. Все заказанные товары будут сохранены в таблице order_item
. В таблице order_item
вы можете видеть, что у меня прямое соединение с fresh_products
.
. В определенные моменты руководство принимает решение об изменении существующего fresh_products
. Например, давайте возьмем такие продукты sh, как Тунец . Этот элемент fi sh имеет категорию под названием Loin (выловлена с помощью Loin), после того, как руководство решит удалить его или переименовать, потому что они больше не fi sh с Loin.
Теперь мой дизайн будет затронут из-за вышеуказанных изменений. Почему? Когда вы вносите изменения в любое из полей fresh_product
, это напрямую влияет на order_item
, в котором хранится информация о уже заказанных товарах. Поэтому, если вы переименуете Loin
, все order_item
с Loin
теперь будут связаны с новым именем, которое неверно. Если вы решите удалить fresh_product
, вы также не сможете этого сделать, поскольку к этому существует привязка существующей истории заказов fresh_product
.
Мое предложение
В качестве решения этой проблемы я имею в виду удаление отношения fresh_products
из order_item
. Затем я добавлю String
поля в order_item
, представляющие все поля fresh_products
, например productType
, prodyctCategory
и т. Д.
Теперь у меня нет прямого соединения с fresh_products
, но есть вся необходимая информация. В то же время любой элемент fresh_product
может вносить любые изменения, не затрагивая уже приобретенные элементы по адресу order_item
.
Мой вопрос: является ли мое предложение лучшим способом решения этой проблемы? Если у вас есть лучшие решения, я открыт.