CREATE TABLE から ER 図
CREATE TABLE を貼ると、ER 図の記法ができあがる。
CREATE TABLE 文を貼り付けると、表・列・主キー・外部キー・UNIQUE を読み取り、Mermaid の erDiagram 記法のテキストを作ります。REFERENCES から表どうしの関係(1 対多・1 対 1)を引きます。入力はブラウザの外へ送信しません。
CREATE TABLE から ER 図の記法を作る
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
指摘はありません。
| 表 | 2 個 |
|---|---|
| 列 | 4 個 |
| 関係 | 1 本 |
Mermaid の erDiagram
erDiagram
users {
integer id PK
text email UK
}
orders {
integer id PK
integer user_id FK
}
users ||..o{ orders : "user_id"
初期表示は入力例「会員と注文の 1 対多」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 出力は設計の確認用の図の元データです。実際のデータベースの定義と食い違いがないか、本番の変更前に確認してください。
- SQL の方言によっては CREATE TABLE の書き方が異なります。PostgreSQL 以外の SQL は正しく読めない場合があります。
使い方
- ER 図にしたい表の CREATE TABLE 文を、すべてテキスト欄に貼り付けます(関係を描くには参照先の表も含めます)。
- 出力された erDiagram のテキストをコピーし、Mermaid に対応したエディターや文書(README など)の mermaid のコードブロックに貼り付けます。
- 警告(参照先の表がない・読めなかった書き方)を確認し、足りない部分は CREATE TABLE を追加して作り直します。
- 関係の線の種類(実線と破線)と、両端の記号の意味は「仕様と根拠」で確認できます。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| 会員と注文の 1 対多 | エラー 0 件・警告 0 件・情報 0 件 |
| 複合主キーの一部が外部キーの明細表 | エラー 0 件・警告 0 件・情報 0 件 |
| 主キーが外部キーを兼ねる 1 対 1 | エラー 0 件・警告 0 件・情報 0 件 |
| 参照先の表が入力にない | エラー 0 件・警告 1 件・情報 0 件 |
| 閉じていない文字列 | エラー 1 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- 完全な SQL の構文解析はしません。CREATE TABLE の ( ) の中の列の並びだけを読み、CREATE TABLE AS SELECT・PARTITION OF・継承などは判定不能と示します。
- ALTER TABLE で後から追加した主キーや外部キーは読みません。CREATE TABLE の中に書いた形で貼り付けてください。
- スキーマ名は図で省略するため、別のスキーマの同名の表は区別できません。複数列の UNIQUE には UK の印を付けません。
- 日本語など英数字以外の表名・列名は、Mermaid の描画側での扱いまでは確認していません。描画できない場合は英数字の名前に置き換えてください。
よくある質問
Mermaid の図はどこで表示できますか?
Mermaid に対応したエディター、Markdown のプレビュー、Mermaid の公式ライブエディターなどで表示できます。出力を mermaid のコードブロックに貼り付けてください。このツール自体は図を描画しません。
型の "numeric(10,2)" が numeric(10_2) になるのはなぜですか?
Mermaid の属性の型には文字・数字・ハイフン・下線・丸括弧・角括弧しか使えず、空白とカンマは使えません。そのため空白とカンマを下線に置き換えています。図の表示用の名前で、定義そのものではありません。
貼り付けたテーブル定義は送信されますか?
いいえ。記法を作る処理はお使いのブラウザの中だけで行い、SQL をサーバーや第三者へ送信・保存しません。ページは通信を禁止する設定で配信しています。