森高千里データベースの再構築(5) : hkob の雑記録 (204)

はじめに

hkob の雑記録の第204回目は、年の情報を冠するための Years テーブルとその設定自動化のための仕組みである Map テーブルを追加します。

Years データベースの追加

Years データベースは独立したプロパティはタイトルのみです。これは新規に作ってしまってもよさそうです。/full でフルページデータベースを作成します。

フルページデータベースの作成

Map の作成

Years へのリレーションはこれまで手動で設定していましたが、ほとんどは日付が設定されれば自動的に設定できます。これを実現するための Map データベースを作成します。Map はページが一つしか存在しない Singleton データベースなので、単数系になっています。

Years と Map の ER 図

Map は all という一つのページだけが存在するので先に作成しておきます。

all を追加した Map データベース

Years へのリレーション追加

Years と Map のリレーションは 1 対多の接続になります。Map が Singleton なので、Years 側は1ページになります。

Years と Map のリレーション作成

Years 登録時に Map を設定

年度を更新するたびに Map の設定をするのは面倒なので、データベースオートメーションを設定してしまいます。Years にページを設定した際に、Map を all に設定するようにします。

Set 'all' to Map オートメーション

Years へのデータ登録

1987年から2025年までのページを作りたいですが、手でタイプするのは馬鹿らしいので、スクリプトを書いてしまいます。

ruby -e '(1987..2025).each { |y| print "#{y}\n" }' | pbcopy

先ほど作成した Years テーブルに貼り付けます。新規ページをクリックした後で、タイトルだけ入力後に空白にしています。ESC を押してページ選択状態にしています。この状態になったら、Cmd-v で貼り付けします。ちなみにページが作成されたので、Map にすでに all が設定されているのがわかります。便利ですね。

セル選択状態

貼り付けると以下のようになりました。全てのページに all が設定されていることがわかります。

Years ページ一括作成

おわりに

明日、Devices の設定をするときに、この Map が活躍します。それまでお待ちください。

hkob.notion.site