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

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