tblsは外部キー制約を見てテーブル間のリレーションを判断します。
上記のER図のテーブルを結ぶ線がリレーション
ただ、データベースによっては、ORMにリレーション設定を任せていて外部キー制約を設定していなかったり、その他様々な理由で外部キーを張ることができないことがあると思います。
tblsでは、テーブル間のリレーションをER図やテーブル情報に補完してドキュメントを生成できます。
さらにテーブルのコメント情報なども補完できます。
これは、
- すでに大規模運用していて安易にALTERできないテーブルへのコメント追加
- VIEWテーブルへのコメント追加
- コメントサポートしていないデータベースへのコメント追加
などが可能になるため便利です。
リレーション
リレーション情報を補完する場合、 .tbls.yml に以下のように記述していきます
---
dsn: mysql://dbuser:dbpass@localhost:3306/dbname
docPath: doc/schema
relations:
- # logsテーブルにおける FOREIGN KEY(user_id) REFERENCES users(id) と同様
table: logs
columns:
- user_id
parentTable: users
parentColumns:
- id
def: logs->users
- # logsテーブルにおける FOREIGN KEY(post_id) REFERENCES posts(id) と同様
table: logs
columns:
- post_id
parentTable: posts
parentColumns:
- id
コメント
コメント情報を補完する場合は、以下のよう記述していきます。
comments:
-
table: post_comments
comment: 各投稿についたコメントの詳細確認用VIEWテーブル
columnComments:
post_user: 投稿したユーザ名
comment_user: コメントしたユーザ名
このように、例えばキーレスエントリなデータベースでも、コメントが十分でないデータベースでも、「使える」データベースドキュメントが生成できます。
次はtblsをCIに組み込む方法を紹介します。