2011-02-27 58 views
2

我們有一個電子商務應用程序的數據庫,我們正在使用JPA 2.0。我們有這三個表:產品(編號,編碼,名稱,描述,價格); soldproducts(id,quantity,product_id);訂單(編號,日期,狀態,評論)。我們的數據庫設計的最佳方法

這是我們的問題:當我們從產品表中刪除產品時,我們在已售產品中存在約束問題,因爲product_id列引用了產品。我們希望刪除該產品,但我們希望能夠訪問產品詳細信息。

我們希望向產品表添加一個附加列,例如可用性,它告訴我們產品是否可用。採用這種方法,如果我們從應用程序中刪除產品,並且產品未從已售產品中引用,我們只是將此額外列更新爲不可用,我們不會將其刪除。否則,我們從表中刪除該產品。但我們不確定這是否是最好的方法。

您認爲,對於這種情況,最佳設計方法是什麼?

回答

5

最好的設計方法,在我看來是不刪除該產品行標記它作爲刪除。您需要將deletedactive布爾列添加到您的表中。

這是在我看到/處理的大多數系統上通常在這種情況下完成的工作。當然,您將需要每次過濾products查詢active(而不是deleted)產品。但這是不失去歷史數據參考的唯一途徑。

+2

同意。也是這樣,你的銷售報告不會混亂。 –

+1

有一個額外的列(ACTIVE)具有標誌Y/N是否考慮報告行+1。 –

相關問題