2017-01-23 28 views
0

我正在爲電子商務系統設計一個數據庫,而我只是隨情況一起提供了一個方案。我在想,如果站點管理員從後端刪除產品,那麼與該產品相關的所有訂單也將被刪除。如果產品被刪除,防止發生這種情況的最好方法是什麼,那麼它不應該干擾以前的訂單,因爲我們必須在訂單中顯示產品詳細信息,以及從產品表中提取產品詳細信息。MySQL中的產品和訂單表結構

這些是目前我擁有的三張表,也建立了外鍵關係。

Products 

| product_id | name  | 
| 1   | iphone 5s | 
| 2   | Samsung S3 | 
| 3   | iphone 6s | 

Orders 

| order_id | customer_id | datetime | 
| 1   | 12   | 2015-08-15 | 

Order_Product 

| order_product_id | order_id | product_id | qty | price | 
| 10     | 1   | 2   | 1 | 300.00 | 

感謝

回答

0

幾個選項..

1>產品刪除不應該真正刪除行,但爲刪除只是標誌的產品。 - 首選選項


2>您可以在產品表中使用代理鍵作爲訂單表引用的主鍵/唯一鍵。當產品行被刪除時(如果是強制性的),然後使用選項「on delete set null」作爲外鍵。這裏使用代理鍵只是爲了防止訂單表中的任何關鍵信息丟失。