JSON 轉 ERD — 資料庫關聯圖
貼上資料庫 schema 的 JSON,立即產生可互動的 ERD:表、欄位、主鍵外鍵與關聯線。全程在瀏覽器內完成,不上傳。
三個步驟產生 ERD
- 開啟「如何取得 JSON schema」,選擇你的資料庫,複製查詢。
- 在資料庫執行該查詢,複製
erd_json欄位的內容。 - 貼回編輯區,畫布會自動排版。
想先看效果,直接按「載入範例」。現成查詢附了 PostgreSQL、MySQL 與 SQL Server 三種, 其他資料庫只要輸出相同格式也能用。
圖上會畫出哪些資訊
- 每張表是一個節點,節點標題依序是 schema、表名與表備註。
- 每個欄位佔一列,依序是欄名、型別與欄位備註。
- 星號代表該欄位為
NOT NULL。 - 預設值要把滑鼠移到欄位上才顯示,因為它通常很長,常駐會擠掉欄名的寬度。
- 徽章 PK 代表主鍵,FK 代表外鍵,UQ 代表單欄唯一。
- 關聯線接在具體欄位上,線上標示 1:1 或 1:N。
1:1 與 1:N 的判定規則
- 外鍵蓋滿子表的整個主鍵時判定為 1:1。
- 外鍵本身是單欄唯一時判定為 1:1。
- 其餘情況一律判定為 1:N。
- 複合主鍵中的單一欄位不算唯一,所以不會被判成 1:1。
JSON 需要哪些欄位
- 必填的只有
tables[].table與columns[].name。 schema可以省略。- 常見別名都接受,例如
table_name、column_name、data_type與is_nullable: "NO"。
{
"tables": [
{
"schema": "public",
"table": "users",
"comment": null,
"columns": [
{ "name": "id", "type": "bigint", "nullable": false,
"is_primary_key": true, "is_unique": false, "comment": null }
]
}
],
"relations": [
{ "constraint_name": "orders_user_id_fkey",
"from_schema": "public", "from_table": "orders", "from_columns": ["user_id"],
"to_schema": "public", "to_table": "users", "to_columns": ["id"],
"on_delete": "CASCADE" }
]
}查詢會排除哪些物件
- 三份查詢都跳過檢視表、序列、索引與系統 schema,只留 ERD 上有意義的物件。
- PostgreSQL 的查詢會跳過分區子表、保留分區父表,因為一張分區表會展開成幾十個子表。
- PostgreSQL 的查詢也會跳過分區上被複製的外鍵,否則同一條關聯會重複畫 N 次。
- FDW 外部表有納入,但它們不能建主鍵與外鍵,所以只有欄位清單、沒有關聯線。
你貼上的 schema 會不會離開瀏覽器
不會。解析與排版都在你的瀏覽器裡完成,沒有任何請求會把 schema 送出去,存檔也只寫進localStorage。細節見隱私權政策。