點贊再看,養成習慣,微信搜索『程序通事』,關注就完事了!
點擊查看更多精彩的文章
這兩個星期真是巨忙,年前有個項目由於各類莫名緣由,一直拖到這個月纔開始真正測試。而後上週又接到新需求,快馬加鞭進入開發。html
一邊開發着新需求,一邊改着舊項目的 Bug。再加上這個項目算是從別人那交給過來的,這部分新功能代碼並非很熟,改 Bug 的時候又須要理清楚上下文邏輯,很是耗時間。正則表達式
這不有一天狀態還很差,迷迷糊糊中改了一天 Bug,又寫了一天 Bug。sql
自產自銷,問題有點大,後面幾天一直填本身的挖的坑,那叫一個酸爽。數據庫
好了,不水了,不水了!微信
上面寫這麼多,本週沒啥時間寫技術文,那就寫點輕鬆的,分享一個平常比較實用的功能『自動生成數據庫 ER 圖』數據庫設計
日常作技術方案設計的時候,若是有涉及到表結構的變動,就須要在文檔中說明,還得將表結構信息寫到文檔中,相似以下:maven
若是是一個新項目,新增了多張表,手動將字段填到表格中,再畫個 ER 圖,非常費勁。ide
這不最近恰好發現了 IDEA Database 插件,能夠自動生成 ER 圖。工具
假設現有兩張表 activity
與 visitor
,表結構以下:學習
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 文件以下:
若是還須要生成外鍵關係,直接在這個配置文件中增長便可。
IDEA Database 生成虛擬外鍵,這樣看起來仍是比較繁瑣的,下面介紹一款軟件『dbschema』,能夠圖形化生成虛擬外鍵。
ps:收費軟件,免費 15 天
這款軟件專門簡化數據庫設計和管理,功能很強大,這裏僅僅介紹其虛擬外鍵這個小功能,其餘功能感興趣同窗能夠自行研究一下。
首先咱們新建一個 Layout,導入指定表。
生成 ER 圖以下:
選擇相應的表,右鍵菜單選擇 Add Foreign Key
在新建窗口選擇相應的表以及字段。
這裏須要注意,咱們是要生成虛擬的外鍵關係,因此必定要勾選下 Virtual,否則會生成真實物理外鍵。
最後 ER 圖以下:
咱們能夠將這個 ER 圖以及表結構導出到 PDF 中。在 Layout 選擇 Export。
最後生成 PDF 以下圖所示:
嘿嘿,本覺得這周這麼忙,可能會斷更。幸虧靠這個又水了一篇文章,哈哈哈!!!
好了,溜啦溜啦,還有一堆 Bug 等着要改~
我是樓下小黑哥,我們下篇文章再見~
歡迎關注個人公衆號:程序通事,得到平常乾貨推送。若是您對個人專題內容感興趣,也能夠關注個人博客: studyidea.cn