見出し画像

リレーション先のロールアッププロパティの値を参照するには #Notionコラム

#Notionコラム は、Notionの応用的な使い方を検討・提案するマガジンです。

今回は、「リレーション先のロールアッププロパティの値を参照するには」というテーマで書いていきます。

#Notion #リレーション #ロールアッププロパティ #数値プロパティ #リレーションプロパティ #タイトルプロパティ #プロパティ #関数プロパティ #数式

参照できない!

題材

まず、以下のような数値プロパティを持つ「データベースC」があったとします。

「データベースC」

そして、「データベースB」は、「データベースC」とのリレーションプロパティと、数値の合計を計算するロールアッププロパティを持っているとします。

「データベースB」
「データベースB」とのリレーションが追加された「データベースC」

さらに、「データベースB」とのリレーションプロパティを持つ「データベースA」もあるとします。

「データベースA」
「データベースA」とのリレーションも追加された「データベースB」

つまり、「データベースA」↔「データベースB」と「リレーションB」↔「データベースC」の間でリレーションしていて、「データベースA」↔「データベースC」の間でリレーションしていない状況です。

ロールアッププロパティの参照

この時、「データベースB」には、「データベースB」というタイトルプロパティが1つと、「データべースA」「データベースC」というリレーションプロパティが2つと、「合計 < データベースC」というロールアッププロパティが存在します。

「データベースB」には、4つのプロパティがある

ここで、「データベースA」にロールアッププロパティを作成し、「データベースB」が持つプロパティを参照します。

「データベースA」から「データベースB」のプロパティを参照

すると、上の画像のように、「データベースA」「データベースB」「データベースC」の3つのプロパティしか選択できません。

つまり、「合計 < データベースC」というロールアッププロパティは、ロールアッププロパティから参照できないのです。

でも参照する!

では、リレーション先のロールアッププロパティの値を参照できないのかと言えば、やり方は一応存在します。

参照方法

まずは、「データベースB」に関数プロパティを追加し、ロールアッププロパティの値を取得するだけの数式を入力します。

「データベースB」に関数プロパティを追加

それから、再度「データベースA」にロールアッププロパティを作成し、「データベースB」が持つプロパティを参照してみると、関数プロパティが候補に増えていることが分かります。

関数プロパティが候補に増えている

つまり、ロールアッププロパティでロールアッププロパティを参照できなくても、関数プロパティならば参照できるので、ロールアッププロパティの値を関数プロパティに渡せば取得できるわけです。

リレーション先のロールアッププロパティの値を参照した例

参照すべきか?

とはいえ、データベースの設計が複雑になると、処理が重くなる恐れがありますし、ヒューマンエラーも起こりやすくなります。

そのため、リレーション先のロールアッププロパティの値の参照は、あくまで最終手段と考え、それをしなくて済むようなデータベースの設計を行うことが最善だとは思います。

ロールアッププロパティからロールアッププロパティを参照する機能が用意されていないのは、公式に推奨できないからなのかもしれませんし。

いいなと思ったら応援しよう!