設計數據庫 ER 圖太麻煩?不妨試試這兩款工具,自動生成數據庫 ER 圖!!!

忙,真忙

點贊再看,養成習慣,微信搜索『程序通事』,關注就完事了!
點擊查看更多精彩的文章

這兩個星期真是巨忙,年前有個項目因為各種莫名原因,一直拖到這個月才開始真正測試。然後上周又接到新需求,馬不停蹄進入開發。

一邊開發着新需求,一邊改着舊項目的 Bug。再加上這個項目算是從別人那交給過來的,這部分新功能代碼並不是很熟,改 Bug 的時候又需要理清楚上下文邏輯,非常耗時間。

這不有一天狀態還不好,迷迷糊糊中改了一天 Bug,又寫了一天 Bug。

自產自銷,問題有點大,後面幾天一直填自己的挖的坑,那叫一個酸爽。

好了,不水了,不水了!

上面寫這麼多,本周沒啥時間寫技術文,那就寫點輕鬆的,分享一個日常比較實用的功能『自動生成數據庫 ER 圖

自動生成 ER 圖

平常做技術方案設計的時候,如果有涉及到表結構的變更,就需要在文檔中說明,還得將表結構信息寫到文檔中,類似如下:

如果是一個新項目,新增了多張表,手動將字段填到表格中,再畫個 ER 圖,很是費勁。

這不最近剛好發現了 IDEA Database 插件,可以自動生成 ER 圖。

假設現有兩張表 activityvisitor,表結構如下:

CREATE TABLE activity
(
    activity_id int          NOT NULL,
    title       varchar(256) NOT NULL,
    PRIMARY KEY (activity_id)

);


CREATE TABLE visitor
(
    id          int NOT NULL,
    activity_id int NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (activity_id) REFERENCES activity(activity_id)
);

在 IDEA Database 彈框中選中相應的表,右鍵菜單選擇 Diagrams-Show Visualisation,就可以生成 ER 圖。

ps: maven 包之間的層級關係也可以用這個功能展示

由於存在真實外鍵,IDEA Database 生成 ER 圖的時候將會自動生成外鍵的關係。

但是真實生產環境,我們很少會建立這種真實物理外鍵關係,僅僅只會在邏輯上生成一個虛擬的外鍵的關係。

具體原因可以參考阿里巴巴『Java 開發手冊

這種情況下,如果 IDEA 的版本低於 2019.3.2,那就別想了,直接用下節提到的工具。

IDEA 2019.3.2 新增了虛擬外鍵的功能,在 ER 圖增加生成虛擬外鍵的功能。

假設現有表結構如下:

CREATE TABLE activity
(
    activity_id int          NOT NULL,
    visitor_id      int NOT NULL,
    PRIMARY KEY (activity_id)

);


CREATE TABLE visitor
(
    id          int NOT NULL,
    first_name int NOT NULL,
    PRIMARY KEY (id)
);

系統生成 ER 圖中將會生成虛擬外鍵關係。

不過不要高興太早,IDEA 是根據一定規則生成虛擬外鍵關係的。

如果你的表中外鍵命名不符合規則,IDEA 是不會生成外鍵的。我們需要在 Setting | Editor | Code Completion 設置規則。

說白了就是設置正則表達式,設置完成之後,可以點擊 這個按鈕進行調試。

上面功能比較適合表結構比較規範的情況,但是真實場景可能比較複雜,外鍵命名也不是規範。為了生成這個外鍵關係,還要配置正則規則,學習成本過很大,也很難啊。

不過好在 IDEA 有另外一個功能,可以手動指定表之間的外鍵關係。

首先我們需要打開一個 IDEA Database console 窗口,在裏面輸入連表 sql,然後使用 Alt+Enter 快捷鍵選擇 Store table relation

這是 IDEA 會提醒你保存這個外鍵關係到 xml 文件中。

生成 XML 文件如下:

如果還需要生成外鍵關係,直接在這個配置文件中增加即可。

dbschema

IDEA Database 生成虛擬外鍵,這樣看起來還是比較繁瑣的,下面介紹一款軟件『dbschema』,可以圖形化生成虛擬外鍵。

下載地址://dbschema.com/

ps:收費軟件,免費 15 天

這款軟件專門簡化數據庫設計和管理,功能很強大,這裡僅僅介紹其虛擬外鍵這個小功能,其他功能感興趣同學可以自行研究一下。

首先我們新建一個 Layout,導入指定表。

image-20200427211102133

生成 ER 圖如下:

選擇相應的表,右鍵菜單選擇 Add Foreign Key

在新建窗口選擇相應的表以及字段。

這裡需要注意,我們是要生成虛擬的外鍵關係,所以一定要勾選下 Virtual,不然會生成真實物理外鍵。

最後 ER 圖如下:

image-20200427212309363

我們可以將這個 ER 圖以及表結構導出到 PDF 中。在 Layout 選擇 Export。

最後生成 PDF 如下圖所示:

image-20200427212355699

Reference

  1. //www.jetbrains.com/help/idea/foreign-keys.html
  2. //blog.jetbrains.com/datagrip/2020/01/22/datagrip-2019-3-2-virtual-foreign-keys-and-more/

最後(點個贊,不過分吧!)

嘿嘿,本以為這周這麼忙,可能會斷更。幸好靠這個又水了一篇文章,哈哈哈!!!

好了,溜啦溜啦,還有一堆 Bug 等着要改~

我是樓下小黑哥,咱們下篇文章再見~

歡迎關注我的公眾號:程序通事,獲得日常乾貨推送。如果您對我的專題內容感興趣,也可以關注我的博客:studyidea.cn