技術情報ブログ
Dataverse
2026.03.03

Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない

Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない
伊礼圭吾

こんにちは。アーティサン株式会社の伊礼(いれい)です。

全6回でお届けしているDataverseテーブル作成の入門シリーズ。
第4回は、データの整合性を保つために欠かせない「キー(Key)」設定についての解説となります。

皆さんはExcelやDataverse、その他のデータベースで「同じ商品コードの商品が2つ登録されてしまった!」みたいな経験はありませんか?

こういった事態を防ぐためにSharePointリストであれば、列ごとの設定で「一意の値を適用」にチェックを入れる形になると思います。
ですがこれまで紹介したように、Dataverseでは列の設定として重複の許可に関する項目はありませんでした。

それでは、Dataverseではどのようにして重複チェックの設定をするのでしょうか?

今回は、第1回・第2回で作成したテーブルを使って、重複登録できないように「キー(代替キー)」の設定をしてみましょう。


弊社はPower Platform(Power Apps・Power Automate)に関するアプリ開発や、
皆様が内製化を行う際の支援サービスを提供しておりますので、
Power Platformに関する内容でお悩みがある場合は、以下からぜひお問い合わせください。



 

GUIDと業務キーの違い

まず前提としてDataverseの各レコードには、システムが自動的に割り振るGUID(Globally Unique Identifier)という一意のIDがあります。
これは 550e8400-e29b-41d4-a716-446655440000 のような長い文字列で、世界中で重複しないことが保証されています。

しかし普段の業務で商品や顧客を特定する時に、こんなに長くてランダムなIDは人間にとって扱いづらく、負担になってしまいます。
多くの場面では、「商品コード:A-001」や「社員番号:12345」といった、人間が扱いやすいID(業務キー)を割り当てて利用されているでしょう。

そこでDataverseでは、「キー(代替キー)」という機能を使用することで、GUIDの代替として業務キーをDataverseテーブル上で重複しない識別子として扱うことができるようになります。

 

ハンズオン:代替キーを設定しよう

それでは、「商品」テーブルの「商品コード」をキーとして設定してみましょう。

 

1. 商品コード列の確認

キーとなる列は、第2回ですでに作成している「商品コード」列を使用します。
第2回では以下のように商品コード列を設定しましたね。

Dataverse_29
  • 表示名: 商品コード

  • データ型: テキスト(1行テキスト)

  • スキーマ名: ProductCode

  • 必須: 必須(キーにする列は必須にしておくことを推奨します)

 

2. キーの作成

列の確認ができたら、テーブルの設定画面より「スキーマ」→「キー」をクリックします。

Dataverse_30

すると、テーブルのキーの一覧画面が表示されます。
そうしたら、画面左上の「+新しいキー」からキーを作成します!

Dataverse_31

キーの作成メニューが開かれるので、以下のように設定します!

Dataverse_32
  • 表示名: 商品コードキー

  • 名前: ProductCodeKey(列の設定におけるスキーマ名に相当します)

  • : 商品コード(先ほど確認した列を選択)


これで保存すれば、キーの設定は完了です!
非常に簡単ですね!

注意点として、キーを作成するとバックグラウンドで実際のレコードにキーを適用する処理が走ります。
キー一覧の「状態」を見ると、保留というステータスになっているのが確認できると思います。

Dataverse_33

データ量にもよりますが、処理には数秒〜数分程度かかり、完了するとキーが有効(アクティブ)になります。

Dataverse_34

 

3. 効果を確認しよう

キーが有効になったら、実際にデータを登録して試してみましょう!

テーブルの設定画面より「編集」をクリックして編集画面に移動することで、データを登録することが可能です。

Dataverse_35

まずは1件目の商品データを登録してみます。

  • 商品名: テスト商品A

  • 商品コード: P-001

  • 価格: 10,000

  • カテゴリ: 家電

  • 在庫数: 10


必須項目を入力して保存成功すると以下のように保存され、商品列には自動でGUIDが付与されます。

Dataverse_36

続いて、2件目の商品データを登録してみます。

  • 商品名: テスト商品B

  • 商品コード: P-001(あえて同じコードを入力)

  • 価格: 1,200

  • カテゴリ: 書籍

  • 在庫数: 100

Dataverse_37

するとエラーが発生し、「1行は未保存です」というエラーメッセージが表示されます。

詳細なエラーメッセージを確認してみると、
Entity Key 商品コードキー violated. A record with the same value for 商品コード already exists. A duplicate record cannot be created. Select one or more unique values and try again.」とあります。

Dataverse_38

日本語に直すと、
既に同じ商品コードの値を持つレコードが存在しているため、商品コードキーの設定に違反しています。重複するレコードは作成できないので、一意の値に変更してください。」といったエラーにより登録できていない状態となります。

それでは指示の通りに、商品コード列を一意の値、つまり「P-001」以外の値に変更して登録してみましょう!

Dataverse_39

そうすると無事に保存することができました!

作成した商品コードキーが期待通りに動作してくれています!

 

ハンズオン:複合キーを作成する

ここまでは商品コードという1つの列が重複しないように「キー」を作成しましたが、例として、次のようなケースも考えられないでしょうか?

  • 顧客テーブルにおいて同じ社名は許容するが、同じ社名かつ住所が同じデータは登録できないようにしたい。


社名や住所、それぞれであれば重複することも考えられるかもしれないけど、同時に重複する場合は登録を防ぎたい、というケースですね。

こういったケースには複数の列を対象にして作成する、「複合キー」という設定が有効になります!

 

1. 顧客テーブルに住所列を追加する

まずは、顧客テーブルに住所列を追加します!

Dataverse_40
  • 表示名: 住所

  • データの種類: 1行テキスト

    • 書式: テキスト

    • 最大文字数: 100

  • 必須: 必須項目

  • スキーマ名: CustomerAddress

 

2. 複合キーの作成

先ほどと同じようにキーの作成メニューを開き、今回は以下のように設定します。

Dataverse_41
  • 表示名: 顧客キー

  • 名前: CustomerKey

  • : 顧客名住所


先ほどとの違いは、キーの対象列として「顧客名」と「住所」の2つの列を対象にしている部分です!

 

3. 効果の確認

さっそく効果を確認してみましょう!

Dataverse_42

このように、顧客名住所が個別に重複している場合は問題なく登録できます!

が、顧客名住所が同時に重複すると…

Dataverse_43

先ほどと同じくキーの重複エラーが表示されて、登録ができません!

このように複数の列を対象として設定することで、より複雑な重複チェックを行うことが可能になる、ということですね!

 

おわりに

以上がDataverseにおける「キー設定」による重複レコードのチェック機能でした!

キー設定はこれまで紹介したリレーションや列の設定などと違い、設定しなくてもとりあえずテーブルとしては利用できるので、見逃されがちなポイントです。

ですが、Dataverseテーブル内に置けるデータの品質を保つためには必須の機能です。
Dataverseテーブルを設計するときは、必ず「どの列がキーになるのか?」を考えるようにしておくと、
後々にPower Appsで更新処理を実装するときのロジックなどもイメージしやすくなりますので、ぜひ意識していただければと思います!

次回は第5回、「モデル駆動型アプリの作り方」についてになります!
これまでに作ってきたDataverseテーブルを使って、いよいよ注文管理アプリを作っていきます!
モデル駆動型アプリのメリットや、キャンバスアプリの違いについても解説していきますのでぜひご覧ください!

それでは!

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:伊礼 圭吾

伊礼 圭吾

🖊伊礼圭吾さんのブログ一覧はこちら

音楽と料理が生きがいです Power Platform関連を中心に、ローコードノーコード関連とかで学んだことをアウトプットしていきます。

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2026.03.03

Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?

2026.03.03

Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない

2026.02.25

Dataverse:Dataverse入門(3)!リレーションでデータを構造化する-テーブル間の連携とは?

2026.02.18

Dataverse:Dataverse入門(2)!テーブルに列を追加してみる-列の型の決め方

2026.02.11

Dataverse:Dataverse入門(1)!注文管理アプリを作ってみる-Dataverseテーブルの作り方

SharePointEF CoreMarker Clusterer中級者DXカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約ExcelマイグレーションRANK()関数キャンバスアプリノウハウcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムMicrosoft DataversePower AutomateFramework CoreDynamics 365 SalesDatePicker情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いフォーム設定C#Attribute directivesMicrosoft TranslatorDropdownメッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入ビュー設定attributeO/Rマッパーマーカークラスタリングライブラリviewメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較Power Apps モデル駆動型validationazure sql databasetailwindcssビューfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とは注文管理アプリローコードCase式マルチテナントアクセス制限nest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築サイトマップAngularHTTP Requestドロップダウンメニューノーコード入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate KeyサブグリッドAccessCSSBreakpointObserver承認動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キー業務アプリ開発InfoPathxUnitメディアクエリリマインドcollectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェックDataverse テーブルMatTable.Net Core 3.1スマホSetコレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDAngular MaterialVSCodePCForAll複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キーデータ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キーモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップform差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Power AppsTypeScriptitem関数入門技術エクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計Power PlatformHTMLGoogle Maps初心者Itインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキー
PageTop
ページトップに戻る