ソフト削除を回避するために、ごみ箱データベースを作成しています。メインデータベースはそれに接続します。これは2つの可能なジャンクションアプローチの例です、そして私はどちらがより効率的であるかについてのいくつかの入力を望んでいましたか?
Order
簡単にするために、2つのテーブルがあるとしましょうInvoice
(そして各請求書には1つの注文しかありません)。
Order
-----
OrderId
InvoiceId
Description
Date
NumberOfStuffOrdered
Invoice
-------
InvoiceId
Description
Price
Tax
Shipping
これらのテーブルをごみ箱に接続するために、どのアプローチを取るべきかわかりませんでした。
アプローチ1:
DeletedOrder
------------
DeletedOrderId
OrderId
RecycleBinId
Date
Reason
DeletedInvoice
--------------
DeletedInvoiceId
InvoiceId
RecycleBinId
Date
Reason
アプローチ2:
DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason
アプローチ1はデータベース内でより多くの表スペースを使用しますが、表あたりの行数が少なくなり、システムが成熟するにつれてクエリ時間が短縮されます。アプローチ2は、データベース内のテーブルごとに追加の削除済みテーブルを作成する必要があることを統合しますが、システムが成熟するにつれて、サイズが大きくなり、クエリが遅くなります。
どちらが全体的に効率的ですか、それともこれにアプローチするためのより良い方法がありますか?