Как можно использовать данные о транзакции после удаления продукта?
введите описание изображения здесь
У меня проблема с данными транзакций в отчетах о проданных продуктах. Ограничения, которые возникают, если продукт вошел в транзакцию / заказ, но рассматриваемый продукт был удален.
Как сделать так, чтобы отчет о транзакции еще можно было использовать с продуктом, который был удален ранее?
Благодарю.
2 ответа
Если строка в Products
Таблица используется для двух вещей, а именно для покупки продукта и для отчетности по исторической транзакции, тогда вы никогда не сможете удалить строку.
Вы можете пометить его различными способами: "available_for_purchase", "инвентарь = 0", "no_longer_produced" и т. Д.
Возможно, лучший способ справиться с этой возможностью - добавить ограничения к задействованным таблицам, что сделает невозможным удаление строки продукта, если существует существующий заказ, использующий этот продукт. Вот то, что определения таблицы для Products
а также Order_Items
может выглядеть так:
CREATE TABLE Order_Items (
order_item_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
...
FOREIGN KEY fk_prod (product_id) REFERENCES Products (product_id)
)
CREATE TABLE Products (
product_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
...
)
С этим дизайном, если кто-то попытается удалить запись продукта из Products
В таблице, в которой есть или более записей позиций заказа, относящихся к этому продукту, попытка удаления будет неудачной.