はじめに
こんばんは。
久々のブログです。
前回tblsの記事をあげたところ、開発者の方からこんな意見をもらいました。
おお!お試しいただきありがとうございますー!
— k1LoW (@k1LoW) 2019年7月15日
コメントやリレーションなどは .tbls.yml側で論理的に追加もできますので是非ー https://t.co/zEWAsb3DXC https://t.co/suFk2XigSP
ちなみに以前の記事はこちら
早速やってみます。
本題
1. サンプルテーブル群作成
サンプルで使用するテーブル群は前回と同様ですが、リレーションやらコメントやらをすべて取っ払ったテーブル設計にしてみました。
CREATE TABLE `master_categories` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(256) NOT NULL DEFAULT '', `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `master_items` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `category_id` int(11) unsigned NOT NULL, `name` varchar(256) NOT NULL DEFAULT '', `price` int(11) unsigned NOT NULL DEFAULT 0, `delivery_cost` int(11) unsigned NOT NULL DEFAULT 0, `stock` int(11) unsigned NOT NULL DEFAULT 0, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `userId` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `master_tags` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `short_name` varchar(64) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `master_tag_relations` ( `tag_id` int(11) unsigned NOT NULL, `item_id` int(11) unsigned NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`tag_id`,`item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
このテーブル群を、論理値設定で前回のテーブル設計と同じ情報を作り出したいと思います。
2. .tbls.ymlの設定
今回の .tbls.yml
の設定は以下。
dsn: mysql://local_user:1qazxcvb@127.0.0.1:3306/local_test_db docPath: schema comments: - table: master_categories tableComment: カテゴリ管理テーブル columnComments: id: PrimaryKey name: カテゴリ名 created: 登録日 modified: 更新日 - table: master_items tableComment: アイテム管理テーブル columnComments: id: PrimaryKey category_id: カテゴリID name: アイテム名 price: 価格 delivery_cost: 配送料 stock: 在庫 created: 登録日 modified: 更新日 - table: master_tags tableComment: タグ管理テーブル columnComments: id: PrimaryKey name: タグ名 short_name: ふりがな created: 登録日 modified: 更新日 - table: master_tag_relations tableComment: タグ中間テーブル columnComments: tag_id: タグID item_id: アイテムID created: 登録日 relations: - table: master_items columns: - category_id parentTable: master_categories parentColumns: - id def: master_items->master_categories - table: master_tag_relations columns: - tag_id parentTable: master_tags parentColumns: - id def: master_tag_relations->master_tags - table: master_tag_relations columns: - item_id parentTable: master_items parentColumns: - id def: master_tag_relations->master_items
3. 結果確認
実行してみます。
$ tbls doc schema/schema.png schema/master_categories.png schema/master_items.png schema/master_tag_relations.png schema/master_tags.png schema/README.md schema/master_categories.md schema/master_items.md schema/master_tag_relations.md schema/master_tags.md
問題なく作成されています!
実際の情報を確認してみます。
リレーションは問題なさそうです。
コメントも問題なさそうです!
終わりに
実際に試してみましたが、設定も簡単でとても使いやすかったです。
ymlでテーブルごとに設定できるので、設計的に足りてないものだけ論理値設定してあげるなど柔軟なこともできると思います。
PlantUMLでもoutput出来るようなので試してみました。
問題なく作成されました。が、情報量的にやはり markdown
で出力したほうが良さそうかな?と思いました。
現場からは以上です。