問題
Universal Containers社は、顧客やサービスエージェントが注文を識別するために注文番号を使用する注文システムを使用しています。注文レコードはSalesforceにインポートされます。Salesforceで注文番号項目はどのように定義されるべきですか。
- 直接参照
- 外部IDおよびユニーク
- 参照
- 間接参照
正解
- 直接参照
- 外部IDおよびユニーク
- 参照
- 間接参照
解説
それぞれの選択肢の理由について説明します。
□ 直接参照
これは不正解です。「直接参照(参照関係)」は通常、Salesforce内のレコード間で関連付けを行う際に使用されます。注文番号の識別として使用するには適していません。
□ 外部IDおよびユニーク
これは正解です。注文番号は外部システムからインポートされたデータをSalesforce内で一意に識別し、既存のレコードとの関連付けを行うために「外部ID」および「ユニーク」として定義することが最適です。これにより、重複したレコードの作成を防ぎ、インポートされたデータが適切に関連付けられます。外部ID項目はカスタムテキスト、数値、またはメール項目として設定する必要があり、Salesforce内でのクエリや参照が迅速になります。
□ 参照
これは不正解です。「参照関係」は他のオブジェクトとの関連を作るために使われますが、今回の要件では注文番号そのものが一意の識別子として使用されるため、参照項目を使用するのは適切ではありません。
□ 間接参照
これは不正解です。「間接参照」は外部オブジェクトとSalesforce内の標準またはカスタムオブジェクトとの関係を作るために使われますが、今回のシナリオでは注文番号そのものを一意に識別する必要があるため、間接参照は適切ではありません。
参考:データローダで外部 ID を使用して関連レコードをインポートする、オブジェクトまたはエンティティあたりの外部 ID の最大数
コメント
コメント一覧 (2件)
以下の解説について質問です。
> □ ApexPages.StandardSetController controller = new Apexpages.StandardSetController([SELECT id FROM Account LIMIT 1]);
> これは不正解です。StandardSetControllerは一連のレコード(例えば、リストビュー)を表すために使用されますが、このコードブロックではSOQLクエリを直接StandardSetControllerのコンストラクタに渡しており、これは正しい使い方ではありません。StandardSetControllerはリストやDatabase.QueryLocatorオブジェクトを引数に取るべきです。
この選択肢の()の中身のSOQLも、自動的にList型となって渡されるので正解だと思っています。
※実際にこの内容でもコンパイルは通りますし
リストよりDatabase.QueryLocatorで返した方が良いということであれば、納得できるのですが、この選択肢が誤りな理由がしっくりきません。詳細の解説をいただけますと幸いです。。。
ましゅーさん
問題も古く、解説も正確でないので、問題を差し替えました。
リファレンスを確認しましたところ、クエリを直接埋め込んだ記載はありませんでしたが、リストを格納した変数してもクエリを直接埋め込んでも結果は同じですし、Database.QueryLocatorを使用する方法がベストプラクティスとして明記されていませんでした。また、私の環境でもエラーがでなかったので、紛らわしい問題は差し替えます。