2017-06-26 3 views
0

私は学習プロジェクトのためのオンライン市場を作ります。私はダイアグラムを持っていないために私を許してください。リレーショナルデータベース設計:販売領収書の処理

私はテーブルSellerProductを持っており、それぞれ売り手と商品に関するデータが入っています。売り手は複数の商品を持つことができます。また、顧客が行った購入に関する情報を格納するReceiptテーブルもあります。これは重要な記録であり、持続しなければなりません。領収書には、購入した商品に関する情報が記載されている必要があります。

ただし、製品が動的であるため、製品を追加したり削除したりすることがあります。しかし、領収書は製品を参照する必要があるため、たとえそれがもはや販売されていなくても、商品行を削除すべきではありません。

これは正しい方法ですか?私が使用できるデザインパターンはありますか?

+2

あなたは "ゆっくり寸法タイプ2を変更" について読みたいかもしれません。基本的に、各商品レコードには有効期間の日付範囲(from-to)も必要です。製品レコードは決して削除されませんが、製品が廃止されるたびに終了日を更新する必要があります。 –

+1

"Deleted"または "Active"または "Inactive"を製品テーブルに追加するのが一般的です。 –

+0

ありがとう!彼らは本当に役に立ちます。私はそれらを調べます。 –

答えて

1

はい、そうするのが正しい方法です。参照保全権を設定した場合、領収書があれば、製品または販売者を削除することはできません。次に行うべきことは、製品または売り手を削除またはアーカイブとしてマークするためにフラグを使用することです。これは、ブール値か、または非アクティブになったときを示す日付のいずれかになります。 Hellmar Beckerの示唆しているように、有効期限を示す「From」および「To」日付を使用することは非常に強力ですが、新しいワームの缶が開きます。有効期間が複数あることができます。主キーを拡張する。 HANA(SAP)のような現代のデータベースは、これ以上削除を許可せず、削除されたフラグを組み込みます。

+0

私は彼の提案について読んで、それは確かに強力です。 「主キーを拡張する」とはどういう意味ですか?商品期間は「更新」される可能性があります –

+0

通常、ProductIdは一意のキーになりますが、 'from'と 'to'の日付を追加すると、同じProductIdを持つ複数のレコードを持つことができます。期間。 ProductIdはもはやユニークではなく、主キーには不十分です。 –

0

これは適切な答えではありません。あなたが持っていないので、ダイアグラムの贈り物をしたいだけです! :) QuickDatabaseDiagram

(免責事項:QuickDatabaseDiagramsは私のプロジェクトである)