注:この質問は、同じシナリオを使用する一連の質問の一部です。あなたの便宜のために、シナリオは各質問で繰り返されます。各質問は異なる目標と答えの選択を提示しますが、シナリオのテキストはこのシリーズの各質問でまったく同じです。
BlogCategory、BlogEntry、ProductReview、Product、およびSalesPersonの各テーブルを含むデータベースがあります。テーブルは、次のTransact SQLステートメントを使用して作成されました。

以下の要件を満たすようにProductReviewテーブルを変更する必要があります。
* テーブルはProductテーブルのProductID列を参照する必要があります
* ProductReviewテーブル内の既存のレコードは、Productテーブルで検証してはいけません。
* レコードがProductReviewテーブルによって参照されている場合は、Productテーブルのレコードを削除してはいけません。
* Productテーブルのレコードへの変更はProductReviewテーブルに伝播する必要があります。
次のデータベーステーブルもあります:Order、ProductTypes、およびSalesHistory、これらのテーブルのtransaction-SQLステートメントは使用できません。
以下の要件を満たすようにOrdersテーブルを変更する必要があります。
* テーブルにINSERT権限を付与せずにテーブルに新しい行を作成します。
* 注文が完了したかどうかを注文を出した販売員に通知してください。
SalesHistoryテーブルに次の制約を追加する必要があります。
* フィールドをレコードIDとして使用できるようにするSaleID列の制約
* ProductTypesテーブルのProduct列を参照するためにProductID列を使用する定数
* 列にNULL値を持つ1行を許可するCategoryID列に対する制約
* SalesPrice列を4人以上の財務部門のユーザーの値に制限する制約は、SalesYTD列の値が特定のしきい値を超える営業担当者のSalesHistoryテーブルからデータを取得できる必要があります。
SalesOrderという名前のメモリ最適化テーブルを作成する予定です。テーブルは以下の要件を満たす必要があります。
* テーブルには1000万のユニークな受注がなければなりません。
* テーブルは、入出力操作を最小限に抑えるためにチェックポイントを使用しなければならず、トランザクションロギングを使用してはいけません。
* データ損失は許容範囲内です。
完全等価操作を使用してWhere句を使用するSalesOrderテーブルに対するクエリのパフォーマンスを最適化する必要があります。
Ordersテーブルのデザインを変更する必要があります。
何を作るべきですか?