プライマリーキーとは?
エンティティが必ず持つ、レコードの特定のために使われる表示名です。
エンティティを定義する際に必ずもつ値となります。
エンティティのプライマリフィールドタブから設定する項目となります。
プライマリーキーは一度設定すると、変更がきかないので、設計時に検討しておく必要があります。
ここミスると、下手するとエンティティ作り直しになってしまうので、注意しましょう。
プライマリーキーはレコードを開いた時に、上部に表示される内容です。
他エンティティから検索フィールドにて参照する場合も、プライマリーキーが表示されます。
このように、プライマリーキーは会社名などレコードがパッと見特定できる内容にしておきます。
プライマリーキーの弱点
このようにレコードを特定するために使用されるプライマリーキーですが、1つ弱点があります。
それは、重複データがあった時、検索フィールドの参照が正確にできなくなります。
検索フィールドはあくまで、参照するエンティティのプライマリーキーを紐付けの項目とするため、プライマリーキーの重複があるとどちらに対しての紐付けなのかがわからなくなります。
解決策としてインポートキーを作成する
上記解決策には、プライマリーキーとは別にインポート用のキーとなる項目を作成します。
インポート用キーの採番ルールについて特に指定はありませんが、レコードが特定できるように必ず一意となるような採番ルールにしてください。
会社情報であれば、帝国企業コードなどがよく使われます。
まずは、取引先担当者にインポートキー作成。
ひとまず手入力必須項目にしておきます。
実際はワークフローなどで重複しない採番ロジックを設定するのがベターです。
取引先企業はこんな感じで作成
No | 会社名 | インポートキー |
---|---|---|
1 | hoge | AAA |
2 | hoge | BBB |
この取引先企業に対し、取引先担当者を作成します。
以下のデータをExcelインポートで投入します。
営業太郎さんはNo1の取引先企業、人事花子さんはNo1の取引先企業の社員となるように関連付けをしたいところですが、普通にインポートすると、
このように部分的な失敗になります。
どこが失敗かというと、取引先企業への参照先hogeが重複するため、どちらに紐付けるべきかが分からず、このように会社名が空の状態になります。
絵にすると、こういう状態です。
そこで、インポートするデータに1列追加します。
このように、取引先企業のインポートキーとマッチさせるインポートキー列を追加します。
このデータでインポートをする訳なんですが、その前に一手間設定が必要です。
マッピングの確認で、先ほど追加したインポートキーが会社名ルックアップと対応するようにしましょう。
インポートの際に、「マッピングの確認」から。
画面のようにキーを指定して設定します。
これで、会社を指し示す住所となるインポートキーが指定されたので、迷うことなく取引先企業と紐づくことができた訳です。
もちろん、取引先企業の方には、1人のみが表示されています。
絵にするとこんな感じ。
このように、重複しない一意の項目をキー項目としてインポートをかけることでデータの整合性を保つことができます。
まとめ
- プライマリーキーは重複がありえる
- インポートキーは一意になるような採番ルールとする
- インポートはプライマリーキー、インポートキーのどちらからでもキー項目にすることができる
- プライマリーキーに重複がある場合は、インポートキーをキー項目とし、マッピング設定をする
コメント