Я занимаюсь разработкой системы интернет-магазинов, у меня есть таблицы items и item_options.
Каждый элемент может иметь 1 или более параметров, см. Ниже.
таблица элементов
- item_id (PK)
- item_name
- item_description
Примечание: цены на товары указаны в таблицах item_options
таблица item_options
- option_id (PK)
- item_id (FK)
- option_name
- option_price
Когда клиент разместит заказ, данные будут добавлены в таблицу order_items.
таблица заказов
- orders_id (PK)
- customer_id (FK)
- address_address_id (FK)
- date_purchased
- orders_status
- orders_date_finished
таблица order_items
- orders_items_id (PK)
- orders_id (FK)
- item_id (FK)
- item_option_id (FK)
Существует проблема, если сотрудники изменят цену, название товара или удалят товар .. счета клиента будутпострадавших, потому чтоFK из order_items больше не будет существовать в таблице предметов.Какое решение для этого?
Как насчет этого решения: добавить активное поле в таблицы items
и item_options
.Когда сотрудники хотят изменить цену или название товара - просто установите текущую активную запись на 0 (items.active
), а затем вставьте новую запись с новой информацией, и активным станет 1. Старые заказы по-прежнему указывают правильный идентификаторзаписи, которая не активна.Это хороший способ сделать это?
Когда новая информация была вставлена в таблицу элементов, означает ли это, что я должен обновить / изменить новый идентификатор PK в таблице item_id.item_options
?