はてなブログDBを作る
SQLite3で。
成果物
Hatena.Blog.API.Database.Create.Blogs.201703011124
開発環境
- Linux Mint 17.3 MATE 32bit
- SQLite 3.8.2
はてなブログAtomPub - Hatena Developer Center
前回まで
http://ytyaru.hatenablog.com/entry/2017/06/26
http://ytyaru.hatenablog.com/entry/2017/06/29
データベース
SQLite3で管理する。以下のファイルとして作成する。
- Hatena.Blogs.sqlite3
テーブル
Blogs
create table Blogs( Id integer primary key, AccountId text not null, BlogId text unique not null, HatenaBlogId text unique not null, Title text, Description text, Created text );
- BlogIdはURLのドメイン名。はてなブログAPIではそれをブログIDという
- HatenaBlogIdはAPIで取得した結果の
のこと。はてな上で管理しているブログの識別子と思われる - AccountIdは外部キー制約したいが相手が別ファイルのテーブルなので指定できない
悩んだこと
いっそHatena.Accounts.sqlite3
に含めてしまおうかと悩んだが、公開/非公開データを区別したいため分離した。
- AccountsDBファイルに含めてしまうと公開/非公開の区別がしづらくなる
- EntriesDBファイルに含めてしまうとファイルサイズの問題で扱いづらくなる
別DBに分けせいて手続きが面倒になるのが微妙。
外部キー制約
別DBにするせいで外部キー制約できないのが不満。整合性が取れなくなる可能性がある。SQLite3を使うかぎり諦めるしかない。
だからといって本格的なRDBMSを使うのは大げさ。SQLite3を使い、別DBにするのが最善か。
レコード数が少ない
Hatena.Blogs.{HatenaId}.sqlite3
としないのは1無料アカウントだと3ブログまでしか作れないから。わざわざ3レコードのためにDBファイルを作成したくない。はてなサービスの仕様では1ユーザ(IP?)あたり4つのサブアカウントを作れる。5無料アカウントで15ブログ。5有料アカウントで50ブログ。つまり、最大50レコードにしかならない。
所感
気になる点はあるが、「こうする」と決めないと進まない。後での修正が大変だとわかっていても、進めてみなければわからないことも多い。やってみるしかない。