はじめに
以前、AIと一緒に楽曲リリース管理のデータベースをNotionで設計した話を書きました。その中で提案された「テーブルを分けてリレーションで繋ぐ」「ロールアップで自動集計する」という考え方は、実際に手を動かすまでピンと来ていませんでした。今回は、その中核となるrelation・rollup・viewという3つの機能について、基礎から整理してみます。
relation:テーブル同士を繋ぐ
relation(リレーション)は、あるデータベースの項目を、別のデータベースの項目と紐付ける機能です。例えば「楽曲」データベースの各レコードから、「リリース状況」データベースの対応するレコードを参照できるようにする、といった使い方をします。
relationを使わない場合、1つのデータベースの中に情報をすべて詰め込むことになり、同じ情報(曲名や制作者名など)を複数の行に重複して入力する必要が出てきます。relationで別のデータベースを参照する形にしておけば、情報は1箇所にだけ持たせておき、必要なところから参照する、という構成にできます。
これは普段業務でデータベース設計をする際の「正規化」の考え方と近いものですが、正直なところ、Notionで実際に手を動かして「あ、これが正規化しておく意味か」と腑に落ちた部分があります。知識として知っていることと、自分の管理したいものに当てはめて実感することの間には、思っていたより距離がありました。
rollup:関連先の情報を集約する
rollup(ロールアップ)は、relationで繋がった先のデータベースから、値を集計・参照してくる機能です。例えば「楽曲」データベースに対して、リレーション先の「リリース状況」データベースの中から「公開済みのプラットフォーム数」を数えて表示する、といった使い方ができます。
rollupを使うと、集計のたびに手作業で範囲を指定してSUMやCOUNTを取り直す必要がなくなり、関連先のデータが更新されれば表示も自動的に追従します。個人的には、このrollupこそが「テーブルを分けたことによる一番具体的なメリット」だと感じています。テーブルを分けるという設計上の判断は抽象的に聞こえますが、rollupで実際に自動集計が動くのを見ると、その判断が何のためだったのかが体感として分かりやすくなります。
view:同じデータを目的別に見せる
view(ビュー)は、同じデータベースに対して、異なる見せ方(表示形式やフィルタ・ソート条件)を複数用意できる機能です。代表的なビューの種類には以下のようなものがあります。
- テーブルビュー:スプレッドシートのように行と列で一覧表示する
- ボードビュー:ステータスや担当者などの項目でカード形式に分類して表示する
- カレンダービュー:日付項目を軸に、時系列で表示する
同じデータベースの中身は1つでも、見る目的に応じてビューを切り替えられるのがポイントです。例えば「今月中に公開予定の曲だけを見たい」ときはカレンダービューにフィルタをかけ、「曲ごとの全体像を一覧で見たい」ときはテーブルビューに切り替える、といった使い方ができます。
AIと一緒に触ってみて感じたこと
これらの機能は、Notionのヘルプページなどを読めば説明としては理解できます。ただ、自分が実際に管理したいもの(今回で言えば楽曲のリリース管理)に対してAIが具体的な設計案を出してくれたことで、「relationは何のために分けるのか」「rollupは何を楽にしてくれるのか」が、抽象的な機能説明ではなく、自分ごととして理解できるようになったと感じています。
機能の説明を読むだけでは「便利そうだけど自分の場合はどう使えばいいか分からない」となりがちなところを、AIに自分のやりたいことを伝えて具体的な設計に落としてもらうことで、機能と自分の課題がつながる、という体験の仕方は今後も活用していきたいと思っています。
まとめ
- relationはテーブル同士を繋ぎ、情報の重複を避けるための機能
- rollupは関連先のデータを自動的に集計し、手作業での集計を不要にする機能
- viewは同じデータを目的別の見せ方に切り替えるための機能
この3つを組み合わせることで、Notionのデータベースは単なる表以上の、集計・可視化まで含めた管理ツールとして機能します。機能そのものは知識として押さえつつ、自分が実際に管理したいものに当てはめて手を動かしてみることで、初めて実感を伴って理解できる部分が大きいと感じました。