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

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