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

はじめに

hkob の雑記録の第206回目は、バンド (Bands)・コンサート (Concerts) のデータベースを追加します。

ER図

前回、Devices の時に ER 図を紹介するのを忘れました。今回追加する 3 つのデータベースを加えた ER 図を示しておきます。Devices の Artists は多対多だったので、複数形に変更しています。

現状の ER 図

とりあえず、ここまで Map のリレーションを記述していますが、これはオートメーションのためのリレーションなので、本質的なものではありません。今後はこのリレーションは省略して記載します。

Bands のエクスポートとインポート

Bands の独立した属性は Name だけです。さっとエクスポート & インポートしてしまいます。

オリジナルの Bands

無事にインポートが終わりました。

インポート後の Bands

このバンドから People へのリレーションとして BandMembers というリレーションがあるはずなのですが、こちらは Rails からインポートされていませんでした。以下のようにリレーションだけ作っておいて、後で Rails からデータを移行しておきます。

BandMembers relation を追加

Concerts のエクスポート

Concerts のプロパティは以下のように整理しました。今回、Year は Devices と同様に Performance date から自動生成するので、エクスポートしないことにしました。

Concerts のプロパティ

前回と同様に CSV に書き出し後、リレーションの URL 削除と日付の ISO8601 変換をしてしまいます。

sed 's/ (https:\/\/www.notion.so[^)]*)//g' Concerts\ 5c465ac0e41145908a7430499c3126bf.csv | sed 's/\([0-9][0-9]*\)\/\([0-9][0-9]*\)\/\([0-9][0-9]*\)/\1-\2-\3/g' > Concerts.csv

変換結果は以下のようになります。

Name,Tags,Performance date,Bands,Comments
渋谷ライブイン ファーストライブ,ライブ,1987-09-07,,
"「OVERHEAT. NIGHT」, 「GET SMILE」",ライブ,1987-12-11 → 1988-03-11,M's BAND,
「GET SMILE」ツアー,コンサートツアー,1988-03-28 → 1988-04-14,,
"「ザ・ミーハー」, その他",ライブ,1988-05-23 → 1988-08-12,,

Concerts の作成 & インポート

森高千里DBの下に作成したいので、また Cmd-Opt-9 で新規ページを作成します。この新規ページを開き、インポートを実施しました。ISO8601形式の日付に変換できていれば、日付範囲もインポートできるように見えます。

インポート確認画面

インポートを実行しましたが、日付範囲は正しく入らないようです。一度全部ページを消して、インポートし直してみます。

インポート後 (日付範囲不可)

→ を / に変換してみましたが、これでもダメなようです。

sed 's/ (https:\/\/www.notion.so[^)]*)//g' Concerts\ 5c465ac0e41145908a7430499c3126bf.csv | sed 's/\([0-9][0-9]*\)\/\([0-9][0-9]*\)\/\([0-9][0-9]*\)/\1-\2-\3/g' | sed 's/ → /\//g' > Concerts.csv

対応するのは大変そうなので、開始日と終了日を分けてみました。

Name,Tags,Performance date,end date,Bands,Comments
渋谷ライブイン ファーストライブ,ライブ,1987-09-07,1987-09-07,,
"「OVERHEAT. NIGHT」, 「GET SMILE」",ライブ,1987-12-11,1988-03-11,M's BAND,
「GET SMILE」ツアー,コンサートツアー,1988-03-28,1988-04-14,,
"「ザ・ミーハー」, その他",ライブ,1988-05-23,1988-08-12,,

Performance date とend date が別のプロパティになりました。

end date を分割

二つの日付が存在するので、DateRange で合成します。

Formula で日付範囲作成

数式で範囲に変換できたので、この結果を Performance date にコピーします。

数式の結果をコピー

無事コピーできたので、数式と end date プロパティは消してしまいます。

リレーションの作成

Bands を BandsStr に変更し、Bands リレーションを追加します。

Bands relation を追加

Year は Years へのリレーションになります。こちらも1対多の接続になります。

Year relation を追加

また、Map も Devices と同様に 1 対多で双方向リレーションなしで設定します。

Map relation を追加

Map はこれまでと同様に全てのページに all を設定します。

Map 内の all ページをリレーション先として登録

今後、新しい Concerts を登録したときに all に接続することを忘れそうなので、Years と同様にページ追加時に all を設定するようにしてしまいます。

Set 'all' to Concerts

ここまでできれば、Map を経由して Release date の年に対応する Years 内のページを選択して設定するだけです。

Set 'Year' to Concerts

設定した値は以下のような数式になります。

設定した値の数式

また、Bands の対応項目は少ないので、手動で設定してしまいました。

Bands の値を設定

おわりに

これで Concerts についても取り込みが終わりました。次は Prefectures, Hall あたりのインポートになるかと思います。

hkob.notion.site