[Dynamics365]プライマリーキーとインポートキーの使い分け

スポンサーリンク

プライマリーキーとは?

エンティティが必ず持つ、レコードの特定のために使われる表示名です。
エンティティを定義する際に必ずもつ値となります。

エンティティのプライマリフィールドタブから設定する項目となります。
プライマリーキーの設定
プライマリーキーは一度設定すると、変更がきかないので、設計時に検討しておく必要があります
ここミスると、下手するとエンティティ作り直しになってしまうので、注意しましょう。

プライマリーキーはレコードを開いた時に、上部に表示される内容です。
プライマリーキーはレコードタイトルとして表示

他エンティティから検索フィールドにて参照する場合も、プライマリーキーが表示されます。
検索フィールドにもプライマリーキーが表示される

このように、プライマリーキーは会社名などレコードがパッと見特定できる内容にしておきます。

プライマリーキーの弱点

このようにレコードを特定するために使用されるプライマリーキーですが、1つ弱点があります。

それは、重複データがあった時、検索フィールドの参照が正確にできなくなります
検索フィールドはあくまで、参照するエンティティのプライマリーキーを紐付けの項目とするため、プライマリーキーの重複があるとどちらに対しての紐付けなのかがわからなくなります。

解決策としてインポートキーを作成する

上記解決策には、プライマリーキーとは別にインポート用のキーとなる項目を作成します。
インポート用キーの採番ルールについて特に指定はありませんが、レコードが特定できるように必ず一意となるような採番ルールにしてください。
会社情報であれば、帝国企業コードなどがよく使われます。

まずは、取引先担当者にインポートキー作成。
インポートキーの作成

ひとまず手入力必須項目にしておきます。
実際はワークフローなどで重複しない採番ロジックを設定するのがベターです。

取引先企業はこんな感じで作成

No 会社名 インポートキー
1 hoge AAA
2 hoge BBB

この取引先企業に対し、取引先担当者を作成します。
以下のデータをExcelインポートで投入します。
会社担当者インポートデータ

営業太郎さんはNo1の取引先企業、人事花子さんはNo1の取引先企業の社員となるように関連付けをしたいところですが、普通にインポートすると、
インポートの部分的な失敗

このように部分的な失敗になります
どこが失敗かというと、取引先企業への参照先hogeが重複するため、どちらに紐付けるべきかが分からず、このように会社名が空の状態になります
部分的な失敗だと会社名が関連付けされない

絵にすると、こういう状態です。
会社名重複により会社担当者の関連付けができない

そこで、インポートするデータに1列追加します。
このように、取引先企業のインポートキーとマッチさせるインポートキー列を追加します。
取引先担当者インポートデータ改良版

このデータでインポートをする訳なんですが、その前に一手間設定が必要です。
マッピングの確認で、先ほど追加したインポートキーが会社名ルックアップと対応するようにしましょう。

インポートの際に、「マッピングの確認」から。
インポートをする前にマッピング確認

画面のようにキーを指定して設定します。
マッピングにインポートキーを関連づける

これで、会社を指し示す住所となるインポートキーが指定されたので、迷うことなく取引先企業と紐づくことができた訳です。
インポートされた後の会社名が紐付けされた取引先担当者

もちろん、取引先企業の方には、1人のみが表示されています。
取引先企業の取引先担当者サブグリッド

絵にするとこんな感じ。
一意のインポートキーを指定することで紐付け可能

このように、重複しない一意の項目をキー項目としてインポートをかけることでデータの整合性を保つことができます。

まとめ

  • プライマリーキーは重複がありえる
  • インポートキーは一意になるような採番ルールとする
  • インポートはプライマリーキー、インポートキーのどちらからでもキー項目にすることができる
  • プライマリーキーに重複がある場合は、インポートキーをキー項目とし、マッピング設定をする
Dynamics
スポンサーリンク

コメント