對于一個項目來說,數(shù)據(jù)庫表結(jié)構(gòu)的設計是比較重要的一環(huán)。從程序開發(fā)的流程上來說,應該先設計表再著手進行開發(fā)。不過隨著技術(shù)的發(fā)展,很多后端語言都有表結(jié)構(gòu)的映射了。因此,對于表結(jié)構(gòu)的設計就轉(zhuǎn)變成了類結(jié)構(gòu)的設計了。這么做無疑是節(jié)省了人工成本,但帶來的負面影響是沒有以前設計流程中的表結(jié)構(gòu)的文檔了。
在最近的一個項目中,恰好就遇見了需要表結(jié)構(gòu)文檔的情況。雖說可以直接看類定義,但是這樣畢竟不是最直觀的。不過要對著類定義來做文檔,又很花費精力,同時文檔與代碼的同步性也是一個很嚴重的問題。在上家公司由于文檔往往都是有延遲或者間隔的,導致一旦發(fā)生什么,就只能對著源碼來工作。
所以對應著這樣的需求,自然就有了制作相關小工具的想法了。主要的需求就是——生成比較容易閱讀的表結(jié)構(gòu)文檔。
作為一個堅定的JS愛好者,二話不說就拿著Node上了。因為后端在做映射的時候肯定會生成建表的SQL,那么我只要對這SQL進行解析的就完事了嘛~但是轉(zhuǎn)念一想,解析SQL文件根本就沒必要??!既然是拿表的結(jié)構(gòu),那么直接從數(shù)據(jù)庫里面拿不就好了嘛!
整體的流程大致如下:
- 連接MySQL,執(zhí)行相關SQL語句
- 把SQL獲取到的結(jié)果按照對應的格式輸出成文檔(表結(jié)構(gòu)與索引相關信息)
為此我們需要下面幾個庫來幫我們
邏輯并不是很復雜,而且這些庫相信很多同學也都用過,所以也就不在這里展開了。
還是老樣子,先來看看整體的實現(xiàn)效果。

執(zhí)行npm run start就會生成出含有表結(jié)構(gòu)以及索引相關信息的Excel文檔了。
- 沒有樣式是因為
xlsx沒法對Excel的單元格進行編輯。不過相比起手工做表結(jié)構(gòu),添加一點樣式的工作量應該是少很多了。
目前生成出的字段都是我根據(jù)自己目前項目需要所抽取的,各位也可以根據(jù)自己的需要來進行設置。
設置的方法可以查看項目的Readme。
項目地址在這里:mysql-doc
有不足和需要改進的地方也請各位多多指點,如果正好有幫上各位的忙也請不要吝嗇點個贊唄~