Как можно использовать данные о транзакции после удаления продукта?

введите описание изображения здесь

У меня проблема с данными транзакций в отчетах о проданных продуктах. Ограничения, которые возникают, если продукт вошел в транзакцию / заказ, но рассматриваемый продукт был удален.

Как сделать так, чтобы отчет о транзакции еще можно было использовать с продуктом, который был удален ранее?

Благодарю.

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 В таблице, в которой есть или более записей позиций заказа, относящихся к этому продукту, попытка удаления будет неудачной.

Другие вопросы по тегам