2011-02-27 17 views
2

私たちはJPA 2.0を使って電子商取引アプリケーション用のデータベースを用意しています。データベース設計への最善のアプローチ

私たちは以下の3つのテーブルを持っています:製品(ID、コード、名前、説明、価格); soldproducts(id、quantity、product_id);注文(ID、日付、ステータス、コメント)。

これは私たちの問題です。製品テーブルから製品を削除すると、product_id列が製品を参照するため、sellproductsに制約があります。製品を削除したいが、製品の詳細にアクセスしたい。

可用性のような製品表に追加欄を追加して、製品が使用可能かどうかを示します。このアプローチでは、アプリケーションから製品を削除し、その製品が販売されていない製品から参照されていない場合、この追加の列を使用不可能に更新するだけです。削除しません。それ以外の場合は、テーブルから製品を削除します。しかし、これが最良のアプローチであるかどうかはわかりません。

あなたはどう思いますか?この状況に最適なデザインアプローチは何ですか?

答えて

5

最良の設計アプローチは、私の意見では削除済みとしてしかしマークそれに、製品の行を削除しないようにです。 deletedまたはactiveブール型列をテーブルに追加する必要があります。

これは、私が見た/作業したほとんどのシステムでこの状況で通常行われていることです。もちろん、activedeletedではなく)の商品で毎回productsのクエリをフィルタリングする必要があります。しかし、それは歴史的なデータ参照を緩和する唯一の方法です。

+2

が合意しました。また、この方法では、あなたのセールスレポートが乱されることはありません。 –

+1

は、追加の列(ACTIVE)を有し、フラグY/Nを有する行を報告のために考慮するか否かを決定する。 –

関連する問題