リレーションとロールアップ

2つのデータベースの情報を一度に見たいこともありますよね。Notionデータベースのリレーション形式のプロパティを活用すれば、複数のデータベースからの情報を関連付けて様々な表現をすることができます 🛠
例えば、あなたが2つのデータベースを仕事で使っていたとしましょう。😉
顧客一覧
購入アイテム一覧
誰がどのアイテムを買ったのかも知りたいし、どのアイテムが誰に購入されたのかも確認したいですよね。そこでリレーションの登場です!
以下の2つのテーブルで、
↗アイテム
と↗顧客
がリレーション形式のプロパティとなっています。リレーション形式のプロパティは、他のプロパティ形式と同様の方法で追加することが可能です。顧客データベースで購入アイテムを入力すると、アイテムデータベースの
↗顧客
列に購入者名が自動的に反映されます。
活用事例
飲食店一覧とエリア一覧をリレーションで関連付ければ、どのエリアにどんな飲食店があるのかが一目でわかるようになります。
議事録データベースと顧客一覧を関連付ければ、各顧客に関連する議事録に簡単にアクセスできるようになります。
タスク一覧とプロジェクト一覧を関連付ければ、プロジェクトとタスクの相関関係がクリアになります。
候補者一覧と面接官一覧を関連づけておけば、誰が誰の面接を行ったのかのログを残すのに便利です。
2つのデータベースをリレーションで関連付けるには、まずデータベースを2つ作る必要があります。そこでまず、上記の例で登場した顧客とアイテムという名称の2つのデータベースを作成したと仮定してリレーションの作成方法をご説明します。
顧客データベースに新しい列/プロパティを追加します。
表示される入力欄に
購入アイテム
といった名前をつけます。プロパティの種類
メニューからリレーション
を選択します。
リレーション設定用のウィンドウが立ち上がるので、そこのドロップダウンからリレーションを設定したいデータベースの名前を検索、選択します。
青色の
リレーションを作成
ボタンをクリックします。リレーションで関連付けられた先のデータベースに新しい列が自動で作成され、データベースが双方向に関連付けられた状態となります。これで、一方のリレーション列に入力したデータが他方のリレーション列にも反映されるようになりました。
自動で作成されたリレーション列は、列名をクリックすれば名称を変更できます。
リレーション列のセルをクリックすると、関連付けられた先のデータベースの値を選択できるメニューがポップアップします。
以下の例では、誰がどのアイテムを購入したかを入力する様子を示しています。
顧客データベースで購入アイテムを入力すると、アイテムデータベースの方に購入者の氏名が自動的に反映されていく様子が分かります。
複数の項目を一度に入力したい場合は、アイテムの左側にある青い
+
を使って対象アイテムを選択します。削除したい場合はX
をクリックします。
編集した内容は相互に同期されますので、アイテムデータベースのリレーション列を編集すれば、顧客データベースにも編集内容が反映されます。
ヒント: 関連付けるデータベースを変更したい場合、対象のリレーション列で再度プロパティ種別からリレーション
を選択し、関連付けるデータベースを選択する画面から新しいデータベースを選択します。
リレーション列に入力される値は他のNotionデータベースのアイテムですので、ページとして開くことができます。開いたページは通常のNotionページ同様に編集することが可能です。
リレーション列に入力された値をクリックすると、リレーション項目選択のメニューが開くので、そこで項目名をクリックするとアイテムがページとして開きます。
赤い
X
をクリックすると項目をセルから削除できます。
編集中のデータベース自身を参照させるようなリレーションも作成できます。例えば、タスク一覧で関連するタスクの列を持たせるようなイメージです。紐付けの方法は2種類あります。
関連タスクとして紐付ける
サブタスク・親タスクとして紐付ける
いずれのケースも、まずはリレーション列を作成して現在編集中のデータベースとのリレーションを作成するころから始めましょう。
関連タスクとして紐付ける場合
同時に実施したいタスクをまとめたり、同様のタスクのグルーピングをする場合など、単にアイテムを他のアイテムと紐付けたいだけの場合、一方向にのみ同期されるリレーションを設定することができます。
「水槽を買う」というタスクと、「水槽のフィルターを買う」というタスクがあったとしましょう。この2つは同時に購入するのが楽なので、紐付けを設定したいとします。
リレーションでデータベースを自己参照させ、
同じプロパティを使用する
を選択してリレーションを作成します。こうすると一方向にのみ同期される設定となるため、「水槽を買う」に「水槽のフィルターを買う」を紐付けても、「水槽のフィルターを買う」の方のリレーション列には「水槽を買う」は自動反映されません。
親タスク・子タスクとして紐付ける場合
タスクの親子関係を定義したい場合は、双方向同期する形のリレーションを設定します。リレーションで関連付けた結果が、各タスクのサブタスクと親タスクとしてデータベース上に表示されるようになります。
製品仕様を書いていて(親タスク)、その過程でユーザインタビュー(サブタスク)とモックアップの作成(サブタスク)が必要だとしましょう。
リレーションでデータベースを自己参照させて
新しいプロパティを作成
を選択すると、双方向同期する2つの列が作成されます。
ロールアップ機能を使えば、リレーションに基づきデータの集計をすることが可能です。もういちど顧客とアイテムのデータベースの例を使い、各顧客の支払い金額を集計したいとしましょう。
まず、誰が何を購入したのかが分かるようリレーションを形成します。
次に、新しい列/プロパティを追加して
プロパティの種類
メニューからロールアップ
を選択し、列に名前をつけます。
ロールアップ列のセルをクリックすると、以下を選択するメニューが表示されます。
参照させたいリレーション列
リレーション先から値を取得したいプロパティ
リレーション先から取得した値をどのように集計したいか
この例でいうと、ロールアップ列
合計金額
から リレーション列購入アイテム
を参照させ、そこからアイテムテーブルの価格
プロパティの値を取得し、合計
の計算で購入物の合計金額を算出させる設定をしています。これで顧客名に関連付けられたアイテムの金額の合計値が算出されるため、顧客ごとの合計支払額がロールアップ列に表示されるようになります。
ロールアップの種類
ロールアップ列に適用できる計算方法は17種類あります。
オリジナルを表示する
:関連付けられたアイテムがセルに列挙されます。リレーション列と同様の使用感です。一意の値を表示する
:関連付けられたアイテムのうち、一意の値を表示します。すべてカウント
:関連付けられたアイテムの値の個数が表示されます。一意の値の数をカウント
:関連付けられたアイテムの値のうち、一意の値の個数が表示されます。未入力をカウント
:関連付けられたアイテムが空欄になっている数が表示されます。例えば、金額が設定されていないアイテムを1つ購入した顧客がいた場合、ロールアップ列には「1」が表示されることになります。未入力以外をカウント
:関連付けられたアイテムが空欄ではない数が表示されます。未入力の割合
:関連付けられたアイテムが空欄になっている割合が表示されます。未入力以外の割合
:関連付けられたアイテムが空欄ではない割合が表示されます。
以下のロールアップの計算は数値
形式のプロパティのみで利用可能です。
合計
:上記の例のように、関連付けられたアイテムの数値の合算値が表示されます。平均
:関連付けられたアイテムの数値の平均が表示されます。中央値
:関連付けられたアイテムの数値の中央値が表示されます。最小
:関連付けられたアイテムの数値のうち最小値が表示されます。最大
:関連付けられたアイテムの数値のうち最大値が表示されます。範囲
:関連付けられたアイテムの数値の最小値と最第値の差分が表示されます。(最大
から最小
を引いた数値)
以下のロールアップの計算は日付
形式のプロパティのみで利用可能です。
最も古い日付
:関連付けられたアイテムのうち最も古い日時が表示されます。最も新しい日付
:関連付けられたアイテムのうち最も新しい日時が表示されます。日付範囲
:関連付けられたアイテムの最も古い日時と最も新しい日時の差分が表示されます。
ロールアップ結果の集計
テーブルでもボードでも、ロールアップに対してデータベース全体での合計、範囲、平均等の集計をさせることができます。
全顧客の購入金額の合計値を算出したいとしましょう。
顧客テーブルでロールアップ列の最下部にポインタを合わせ、
計算
をクリックします。合計
を選択すれば、ロールアップ列に表示されているすべての数値を合計した値が表示されます。
ボードの場合も、テーブルと同様にリレーション
プロパティを追加して関連付けを形成することができます。
以下の例では、すでにリレーションで関連付け(カード内にページとしてアイテムが表示されています)がされており、ロールアップで顧客ごとの購入金額合計が表示された状態になっています。
全顧客の支払い金額総計を算出させる方法は以下の通りです。
よくあるご質問(FAQ)
- リレーションをエクスポートやインポートできますか?
リレーションを含むデータベースをCSVファイルとしてエクスポートすると、リレーションプロパティは、プレーンテキストでURLとしてエクスポートされます。現時点では、そのCSVをNotionに再インポートすることで他のデータベースとのリレーションを再構築することはできません。
- リレーションを持つデータベースを複製できますか?
可能ですが、やや複雑な挙動となります。
上記の例でいうと、顧客データベースを複製すると、そこに含まれるアイテムデータベースへのリレーションも同時に複製されます。
これはNotionのリレーションが双方向同期される仕組みになっているためです。そのため、データベースが複製されると、リレーション自体も複製される仕組みになっています。そのうちコツがつかめます!💪
- ロールアップをロールアップできますか?
残念ながら、意図せぬ循環参照が生じる可能性があるため、ロールアップのロールアップはできません。別のプロパティをロールアップすることをお勧めします 😊