
リレーション先のロールアッププロパティの値を参照するには #Notionコラム
#Notionコラム は、Notionの応用的な使い方を検討・提案するマガジンです。
今回は、「リレーション先のロールアッププロパティの値を参照するには」というテーマで書いていきます。
#Notion #リレーション #ロールアッププロパティ #数値プロパティ #リレーションプロパティ #タイトルプロパティ #プロパティ #関数プロパティ #数式
参照できない!
題材
まず、以下のような数値プロパティを持つ「データベースC」があったとします。

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


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


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

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

すると、上の画像のように、「データベースA」「データベースB」「データベースC」の3つのプロパティしか選択できません。
つまり、「合計 < データベースC」というロールアッププロパティは、ロールアッププロパティから参照できないのです。
でも参照する!
では、リレーション先のロールアッププロパティの値を参照できないのかと言えば、やり方は一応存在します。
参照方法
まずは、「データベースB」に関数プロパティを追加し、ロールアッププロパティの値を取得するだけの数式を入力します。

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

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

参照すべきか?
とはいえ、データベースの設計が複雑になると、処理が重くなる恐れがありますし、ヒューマンエラーも起こりやすくなります。
そのため、リレーション先のロールアッププロパティの値の参照は、あくまで最終手段と考え、それをしなくて済むようなデータベースの設計を行うことが最善だとは思います。
ロールアッププロパティからロールアッププロパティを参照する機能が用意されていないのは、公式に推奨できないからなのかもしれませんし。