私はあなたの問題を理解していますが、その一部について質問があるので、もう少し一般的になります.
- 可能であれば、倉庫/バックアップ倉庫のデータを在庫データと一緒に保存します (倉庫を直接吊るすか、在庫テーブルから製品固有のものかのいずれか)。
- ビジネス ロジックを介してセットアップを計算する必要がある場合、レコードは order/order_item テーブルにぶら下がる必要があります
SQL で構造を実装する方法に関しては、すべての注文が 1 つの倉庫から発送され、発送は注文テーブルに掛けられる必要があると仮定します (ただし、アイデアは他の場所にも適用できるはずです):
- <リ>
0/1 のバックアップ倉庫を強制する古い方法は、Orders テーブルの Warehouse_Source レコードをハングアップし、"IsPrimary" フィールドまたは "ShippingPriority" を含めてから、OrderID と IsPrimary/ShippingPriority を含む複合一意インデックスを含めることです。
<リ>バックアップ倉庫が 1 つしかない場合は、ShippingSource_WareHouseID フィールドと ShippingSource_Backup_WareHouseID フィールドを注文に追加できます。ただし、これは私が行くルートではありません。
SQL 2008 以降では、フィルター処理されたインデックス が追加されました。 .これらにより、インデックスに WHERE 句を追加できるようになり、インデックスがよりコンパクトになります。また、これまではトリガーを介してしか実行できなかったいくつかのことを実行できるという追加の利点もあります。
- OrderID と IsPrimary/ShippingPriority (WHERE IsPrimary =0) に一意のフィルター処理されたインデックスを配置できます。
さらに説明が必要な場合は、コメントなどを追加してください。