読書メモをNotion移行するためのER図をChatGPTで作る

当ページのリンクには広告が含まれています。
読書メモをNotion移行するためのER図をChatGPTで作る

読書メモをMac標準の表計算アプリ「Numbers」で管理しています。

Numbersの読書メモ

本タイトル・著者・出版社・ジャンル・個人的な評価項目にメモなど、一覧性が高く簡易的な情報整理ボードとしては悪くなかったのですが、3年近く使用し、冊数が増えるに従って不便なところが目立ってきました。

特に拡大の一途を辿るメモ欄はデータベース構造としては最悪です。
「概要・よかった点・悪かった点・発見やアイデア・引用」とフリーテキスト項目が5カラムに渡って展開し、セル内は Alt+Enter を多用したセル内改行まみれ。正規化も何もありません。

今後も本のデータが増え続けることを考え、もう少しマシなデータベースを作りたい。そう考えて、読書メモを「Notion」へ移行することにしました。

ですが、見切り発車で意向を進めると、データベースが「なんでも箱」化してグチャグチャになることは目に見えています。まずはどのような構造にすべきかを整理すべきでしょう。

私はデータベース構造については素人に毛が生えた程度の知識しかありませんが、ChatGPTを使いながら要件を詰め、ER図を作成してみました。

読書メモデータベースのER図
できあがったデータベース構造のER図
目次

この記事のレベル感

本記事で紹介する内容は「浅い知識しかない非エンジニアが、ChatGPTに頼りつつデータベースの枠組みを整理し、ER図に落とし込む」です。

私の知識レベルは以下のような感じです。

  • データ管理したい項目はリストアップできている
  • しかし、それらをどのように収集し、関連付ければいいかのイメージは曖昧
  • Notionデータベースで使えるプロパティを大まかに把握している
  • 正規化、データ型、ER図といったデータベース関連概念のさわりだけ知っている

とりあえず破綻なく運用できそうなデータベースを作るのが目標なので、データベース知識が豊富な人には冗長な割に不十分な可能性があります。

「詳しくはないが、ある程度構造化したデータベースを作りたい」「ChatGPTの活用法を探している」といった方の参考になれば幸いです。

使用ツール・環境など

データベース構造のブレスト

  • ChatGPT (GPT-4o)
  • ノートとペン

ER図描画用のMarmaid出力

  • ChatGPT (GPT-4o)

ER図の描画

Notion コードブロックは記述したコート下に画像が出力されるのに対し、Mermaid Live Editorはエディタと描画画面が左右分割されているので記述しながらの修正・追加がしやすかったです。

事前に勉強したこと

Notionアンバサダー円谷さんのYouTube動画
ゆるコンピュータ科学ラジオのデータベース回(Notion回)全4回
データベースの正規化についてのテキスト

今回の試みにあたり、上記のような内容を確認しました。
はじめて自分でデータベースを作る方には参考になるかと思います。

「ER図というものを書いてみよう」

いくつかの関連動画やサイトを見た結果、「ある程度正規化されたデータベースを作るとき、事前にER図というのを作成するといいらしい」ということを理解しました。

ER図とは、データベースに格納するもの(Entity)の関係性(Relationship)を整理した図。データ構造を俯瞰的に設計するためのビジュアルです。

ER図について参考にした記事
ER図の書き方ガイド! 記号のサンプル付きでわかりやすく解説
【Notion】MermaidでER図を書いてみる(作成手順も記載)

ただ、ER図の記法について調べても、実際に自分で書き始めると、エンティティの親子構造やら関係性やらがよくわかりませんでした。人の実例を参考にしようにも、教科書的なテンプレ例しか公開されていなかったり、ガチすぎて参考にできなかったり。

「教科書的なお作法にのっとりつつ、私のケースに近い例が欲しい」という思いから、Chat GPTを使ってみることにしました。

情報をどう整理するか?の事前イメージ

現在の「読書メモ」カラム構成
タイトル|著者|出版社|ジャンル|登録日|評価|形態|別紙メモの有無|書評記事の有無|概要|よかった点|悪かった点|アイデア|引用|関連情報

まず、上記のゴッチャゴチャの表を次のように整理したいと考えました。

  • テキストで何行も記入している「概要〜関連情報」はNotionのText機能で記入し、トグル見出しで整理
  • ジャンル|評価|形態はタグ機能で選択
  • 別紙メモ、書評記事の項目は今後別のデータベースを作って連携。今は省略する

GPTに投げてみる

User:「Notion」で読書記録データベースを作成します。
本の情報、著者情報、読了日、読書メモなどを管理する予定です。
正規化されたデータベースを作るため、まずはER図を作成しようと考えています。協力してください。

GPT: 以下は、読書記録に必要なデータを正規化して整理するための基本的なER図の提案です。

エンティティ
1.Book(本)
 ・BookID(本ID):主キー
 ・Title(タイトル)
 ・Author(著者)
 ・Publisher(出版社)
 ・Genre(ジャンル)
 ・PublishedDate(出版日)
2.ReadingRecord(読書記録)
 ・RecordID(記録ID):主キー
 ・BookID(本ID):外部キー
 ・StartDate(読書開始日)
 ・EndDate(読書終了日)
 ・Notes(読書メモ)
3.User(ユーザー)
 ・UserID(ユーザーID):主キー
 ・UserName(ユーザー名)

リレーション
User-ReadingRecord**: 1対多| 一人のユーザーが複数の読書記録を持つ。
*Book-ReadingRecord*: 1対多| 一冊の本に対して複数の読書記録が存在する可能性がある。

ChatGPTが出力したER図(プレーンテキスト)

(以下、エンティティについての詳細な説明)

まず驚いたのが、「本」「読書記録」の2つのデータベース登場したこと。確かに、元のカラムを整理すると2つの表に分割できます(第二正規形?)。

読書メモデータベースの正規化
元データベースの情報を整理したところ

思ったよりしっかりした叩き台ができているようです。
プレーンテキストで作図もしてくれるので、各要素の関係性がわかりやすいですね。

いくつか不要な内容や、追加したい内容をやりとりして精緻化していきます。

変更点

  • ユーザーは私一人で、誰かに共有する予定はない。
    →Userエンティティは削除。
  • 著者情報をデータベースで別管理しもいいかも?
    →著者情報DBを追加してみる。
  • いずれ、ReadingRecordを含む複数のデータベースを年別・月別で管理したい。
    →Year_monthデータベースを追加。

精緻化したER図をMarmaid形式で出力する

GPTとのやり取りで形になったデータベース構造のアイデアを、画像として出力します。使用するのは「Marmaid」という記法。フローチャートやシーケンス図、クラス図など、エンジニアがよく使う図を生成するのマークダウン構文です。

参考記事|グラフを生成可能なマークダウン構文「Mermaid」がNotionで利用出来るようになりました #notion | DevelopersIO

Mermaidでの記述もGPTを使って生成してみます。

User: 今回出来上がったER図を、Mermaid形式で出力できますか?

GPT:もちろんです。以下は、Mermaid形式でER図を記述したものです。

(クリックでコードを見る)

NotionのMermaidコードブロックを使って描画すると、以下のような図が表示されました。

読書メモデータベースのER図(草案)

いくつか不十分なところがありそうなので修正していきます。

修正点

Notionの機能にあわせる

  • データ型をNotionのプロパティ型に修正
  • rollup、relation関係を反映
  • Notionデータベースでは不要な項目「データベースID」を削除。
    (Notionが自動管理しているIDが存在するので、ユーザー側がIDをつける必要はない)

自分の運用方法に最適化

  • 著者データベースはない方が管理しやすそう
  • 読書期間を記録する必要性は感じないので「StartDate」「EndDate」は削除
  • 代わりに「メモ作成日時(仮の読了日)」を記録
  • 作品ジャンル・キーワードのタグは他データベースでも分類に使用したい
    →別データベースに分ける

最終的に出来上がったER図がこちら。

Mermaidコード(クリックで表示)
読書データベースのER図
右側のメモはFuture Plan。

最終的に出来上がったのは「タグ」「年・月」「本」「読書メモ」の4つのデータベースからなる構造。

そのうちブログ記事を管理するデータベースなども作って連携していく予定ですが、ひとまず読書メモを管理するデータベースはざっくりと作成できそうです。

Notionデータベースは修正しやすいらしいので、まずはこれで初めてみることにします。

さいごに

ChatGPTを使ってNotionデータベースの構造を考えてみました。

初心者が技術的な課題を解決したいとき、とりあえずの相談役としてChatGPTは非常に便利ですね。
わからない単語は気軽に解説してもらえるし、その分野で使用される用語・略語も理解できるので、自分で検索する時のワードチョイスにも活かせました。

「実際に使用する最終形を作らせる」には不十分ですが、「ひとまず動かしてみるための叩き台を作る」目的なら安定したクオリティで出力できている印象です。

GPT3が出始めたくらいの頃は「それっぽい体裁だけどマトモに動かないコード」「構造が破綻した表」なども平気で出力されていたことを思うと、桁違いに有能になっていて目を見張ります。

今回作成したER図を参考に、Notionデータベースへの移行を進めようと思います。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次