現在はNavicatでテーブルを作成してます。
InnoDBでForeign Keysを設定し、DBIx::Class::Schema::Loaderで動的に読み込み
DBIx::Class::Schema::Loader::RelBuilderでリレーションを自動生成します。
ただ、これが最適だとはちっとも思っていません。
どうしよっかな。
候補は・・・
- Navicat + DBIx::Class::Schema::Loader (現状)
- DBIx::Class::Schema + SQL::Translator::Parser::DBIx::Class
- DBDesigner4 + FabForce::DBDesigner4
結論は2に決定。
1は、バージョンアップが大変。
なので、初期立ち上げまではよいが、ブランチを切るときに面倒。
また、might_haveやhas_oneはRelBuilderでは作れないので
別に書かなくてはならない。
よって、DBのテーブルとDBIxのSchemaクラス両方にORMの情報が分散してしまう。
2は特に弱点なしか。
ORMの情報はDBIxのSchemaクラスのみに集約される。
バージョンアップも
sqlt-diff --to MySQL Schema1=MySQL Schema2=MySQL > SchemaUpdate.mysql.sql
のようにできるので、事の面倒さ相応の対応で済みそう。
リレーションの図式的な把握も、sqlt-graph(SQL::Translator::Producer::GraphViz)があるのでなんとかなる。
ただ、やってみたが、出来たpngは白黒でとても簡素だ・・・
3もORMの情報が分散されてしまう。