Notion上で情報の再利用を行いたい場合に効果的なTableのRelationをやってみた

NotionのDataBaseは他のサービスだと余り馴染みがないため活用し難いのが正直なところです。そこで、Notionを活用する上では欠かせないTable同士のRelation機能に注目し、Notion独自の使い方の入り口に触れてみました。
2021.03.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Notionは、Markdownで書けることや、執筆した内容をWebページとしてそのまま公開できることが強みとして実感しやすいところです。

ですが、それ以外に使い込んでみないと分かりづらい機能も存在します。今回はそのうちのTable機能について書いてみることにします。

Table機能でお手軽レポート設計

左カラムから「+ Add a page」を選択してページを追加します。その後、「Press Enter to continue with…」にカーソルをあててクリック。/tableと入力して「Table - Inline」を選択します。

Untitledなテーブルが追加されました。NameTagと表示されている箇所をクリックしてタイトル概略等に変更します。

概略はテキスト欄にしておきたいため、クリックして「Property Type」をMulti-selectからTextに変更します。

空行について入力していきます。ここは適当で構いません。

タイトルにカーソルを当てて出てくる「OPEN」を選択しましょう。

すると項目を元にページが出来上がっています。この状態ではポップアップでのQuick Look的扱いとなるため、左上の「Open as page」で全体に広げます。

このページ上での編集は即Table側にも反映される仕組みです。尚、Table側には情報としての表示はないものの、ページ毎にアイコンやCoverも設定可能です。

Table間でのリレーション設計

Tableに入力した要素でそのままレポートページを作れてしまうというのも魅力的ですが、他のサービスで見られないとっておきはリレーション機能です。ただ、具体的なイメージが沸かないのも事実。

実際にどんな感じかをやってみます。今回は事前に適当な参照用テーブル「DataCenterList」を作っておきました。ServerのプロパティはTextにしています。

新規テーブルを作成しました。プロパティを順にCharactorDataCenterServerにしておきます。

DataCenterのProperty-TypeをRelationに変更します。

「Select a database」から「DataCenterList」を選択して「Create relation」を実行します。

Relation設定するレコードを設定して完了です。

これだけだと有用性が分かりづらいため、更に参照プロパティを増やしてみます。ServerのProperty-TypeをRollUpにします。

「Select an existing relation…」から「DataCenter」を選択し、「Select an exsiting property…」は「Server」を選択します。

これでDataCenterで選択したレコードのServerプロパティが反映されました。

ポイントとしては、

  • マスターデータとしての参照用DataBaseと、普段の作業用DataBaseの2種類にわける
  • 参照用DataBaseを紐付けたい場合、最低でも作業用DataBaseには1Relationと1以上のRollUpの、計2プロパティ以上の組み合わせが必要になる
    • RollUpとして表示させたい情報を持つテーブルとRelationを作成する(SQLでのJOIN)
    • RelationをHide設定にしてRollUpのみ見せる事も可能
  • 参照用DataBaseのデータは作業用DataBase上ではReadOnlyで表示される
    • 参照用DataBaseでProperty-TypeにSelectを選ぶと、データ参照用DataBaseで選択済みの値が作業用DataBaseに反映される
    • 参照用DataBaseでMulti-Selectを選択すると、参照用DataBaseのプロパティに収まっていた複数の値が作業用DataBaseに反映される
    • 作業用DataBase上からはCheckboxにはチェックが入れられない
  • Formulaで関数を使うことで表示のカスタマイズが可能
  • 基本的には参照用DataBaseで事前にケース毎のレコードを作成しておく必要がある

扱いとしては参照権限のみあるDBのTableを読み書きできるDBでJoinすることと似たような仕組みです。

考えられる使い方

通常のページを作る場合には活用し難いのですが、DataBaseのTable、Board、List、Calendar、Gallery、TimeLineを作る場合には非常に効果があります。

すべてのデータはTableへ追加する手続きにした上で、Board、List、Calendar、Gallery、TimeLineで設定するPropertyを全てTable参照にすると、複雑な仕組みを作らずとも色々なデータを組み合わせた表示を作ることが可能になります。

具体的な例としてはTemplateをみるとわかりやすいでしょう。

「外部のDBから直接取り込みはできないものか」と思いましたが、それはできませんでした。

あとがき

通常のページのみを使っている分には理解し難いかもしれませんが、DataBase機能の利用を検討する際にはとても役に立ちます。

  • 外部APIの直接呼び出しはできない
  • 一部のサービスとの連携はある
  • Notion自体のAPIは未公開

の3点から、独自に作り込みたいという場合には物足りないかもしれません。

仕組みの作り込みなしに、ドキュメント上の情報を手軽に効率よく扱いたい場合には特にお薦めです。