Power Apps モデル駆動型アプリで「ねこ管理アプリ」を作ってみる|第2回「テーブルの作成とリレーション」

練習がてらモデル駆動型アプリを使って「ねこ管理アプリ」を作ってみたシリーズ第2回。

今回は前回に引き続き、テーブルの作成とリレーションを作成していく。

前回の記事はこちら

スポンサーリンク

テーブルの作成続き


前回に引き続きモデル駆動型アプリで使用するテーブルを作成していく。

「ねこ」テーブルは前回の記事で作成したので、今回はそれ以外のテーブルを作成!

「体重履歴」テーブルの作成

まずは「体重履歴」テーブルから作成。

前回同様「新しいテーブル」を押してこんな感じで作成。プライマリ列はひとまず管理番号のような意味合いで「No」という名前にしておく。
テーブルの作成が完了したら、「体重」列と「日付」列をこんな感じで追加して、
ひとまずテーブルを保存。※どんな列を作ったか見やすくするため、カスタム列だけを表示するようフィルタしておく。
そしたらここで「ねこ」テーブルとリレーションを作成する。※↓の図の線のところ。
「体重履歴」テーブルの「リレーションシップ」タブを開いて、「リレーションシップの追加」を押下する。
そしたら「多対一」を選んで、
こんな感じで「ねこ」テーブルとN:1の関係を作成する。
「完了」を押すとこんな感じでリレーションが作成されているので、テーブルを一旦保存する。

そうすると、「体重履歴」テーブルの列に「ねこ」テーブルへの参照が追加されているはず。

「体重履歴」テーブルのデータには「どのねこの体重履歴か?」という情報は必須なので、この列を「必須」に変更する。
最初にテーブルを作成したときに設定したプライマリ列「No」の型を「オートナンバー」に変更し、今回のアプリではこの列は使わない予定なので、ひとまず「任意」に変更する。
最終的に「体重履歴」テーブルの列(自動で作成されるものを除く)は、こんな感じになる。

「キャットフード」テーブルの作成

続いて「キャットフード」テーブルを作成していく。

「新しいテーブル」からこんな感じで「キャットフード」テーブルを作成し、
まずは「タイプ」列(ウェットフードかドライフードか)を作成する。データ型で「選択肢」を選んで、「新しい選択」を押下。
新しい選択肢の名前を「フードタイプ」にして、「ウェット」と「ドライ」を選べるようにする。

※Dataverseでは「テーブル」だけでなく「選択肢」も使いまわすことができる。今回作った選択肢はあんまり再利用しないかもだけど、「承認」や「否認」といった選択肢とかはけっこう使いまわす機会が多いと思うので非常に便利。

最終的に「キャットフード」テーブルの「タイプ」列はこんな感じ。
続いて「カロリー」列を作成。

「カロリー」列のデータ型は「浮動小数点」にしたかったけど、後々「食事履歴」テーブルで計算列を作成するときに使用するため「整数」で作成する。
※データ型が「浮動小数点」の列は、計算列の計算には使用できないっぽい。

最終的に「キャットフード」テーブルはこんな感じ。
「キャットフード」テーブルの作成が完了したら、ついでにこんな感じでテストデータも入れてしまう。

入力したデータを見ると、felixやMiawMiawといった銘柄のデータを入れる「ブランド」テーブルみたいなものも作った方がよさそうだけど、今回はサンプルアプリなので省略。

※テストデータを入れるときは「データ」タブの「新しいデータ」で追加したり、Excelからインポートしたりできる。
「新しいデータ」からフォームを使ってデータを追加する場合は、前回の記事で「ねこ」のデータを入れたときのように、フォームをカスタムしてあげる必要がある。

「食事履歴」テーブル

最後に「食事履歴」テーブルを作成する。

「新しいテーブル」からこんな感じで値を設定。プライマリ列は今回は使用する予定がないので「体重履歴」のときと同様「No」という名前で作る。
まずは「日付」列と「給餌量」列をこんな感じで作成
そしたら「体重履歴」のときと同様に、「ねこ」テーブルと多対一のリレーションを作成。
「食事履歴」テーブルは「キャットフード」テーブルともリレーションが必要なので、こちらも多対一で作成。
あとは「体重履歴」のときと同様、「No」列を「任意」に、「ねこ」と「キャットフード」を「必須」へと変更する。

そしたら最後、「キャットフード」リレーションの情報と「給餌量」列の情報から自動でカロリーを計算する計算列「給餌カロリー」列を作成する。

この「給餌カロリー」列も本当はデータ型を浮動小数点にしたいけど、自動で計算する計算列にするためにデータ型を「整数」に設定し、「計算またはロールアップ」から「計算」を押下する。
すると計算式を入力するポップアップが開くので、こんな感じで 「[キャットフード]テーブルの[カロリー(/100g)]列」×「[給餌量(g)]列の値」 / 100という計算式を入れる。
計算式を保存したら、最終的に「食事履歴」テーブルはこんな感じになるはず。
実際に「食事履歴」テーブルにテストデータを入れてみると、こんな感じで無事動作しているようなので、一安心w

これで今回作成する「ねこ管理アプリ」で使用するテーブルとリレーションの作成は完了!

次回から実際にモデル駆動型アプリを作成し、これらのデータと紐づけていく!

コメント

  1. 老頭 より:

    テーブルリレーションの使い方を調べていて本サイトにたどり着きました。

    本記事最後のカロリー計算
    「[キャットフード]テーブルの[カロリー(/100g)]列」×「[給餌量(g)]列の値」 / 100
    の計算式記載ですが、
    “new_cat_food.cr1a4_calorie”のところは、 “new_cat_food.new_kcal_100g”ではないのでしょうか?

    テーブルリレーションの理解が不十分なため的外れの質問をしていたら申し訳ありません。

    • ふう より:

      コメントありがとうございます!

      ご指摘の通り「new_cat_food.cr1a4_calorie」のところは「new_cat_food.new_kcal_100g」ですね。。。
      記事を修正しました!ご指摘ありがとうございます!

タイトルとURLをコピーしました