google code-beautifer

星期二, 2月 24, 2009

用 Graphviz 畫資料庫設計圖

graphviz 的介紹見,用 Graphviz 畫工程科學說明圖

以一般設計資料庫流程,第一階段畫 ER/EER diagram,第二階段畫relation tables 跟 key constraints,要找免費的工具還真不簡單。大多數最多也只是提供免費試用而已,我也用過dia 跟 xfig 來畫過,總覺得少那麼一點。後來還是覺得用graphviz 來畫最方便。

以我實作EER model 的情況,除了weak entity 的total participation 雙線,跟subclass 的關聯線外。幾乎可以直接全部畫出來,其實可以自行加入向量圖形,不過我很懶。在時間有限前提下,用個近似的方法就交差了。要是有人能把這兩個向量圖加入graphviz ,會是功德無量。

下面用 18分大學的體系為例,用graphviz 來畫一個資料庫設計的EER diagram。既然是18分大學,訛誤在所難免。我故意搞了些手腳,好讓那些懶惰的老師或學生會踩到地雷,但懂的人一眼就看穿。好事者請不要公佈答案,不然就不好玩了。


除了EER model ,畫relation table 也沒啥大問題,唯一的地方是標示composite key 的部份。我是用套疊格子的技巧作出來。其實這些小地方不一定要這樣作,我是依據近年美國資料庫教科書首選Elmasri的fundamentals of Database Systems用的記號為依歸,算是遵循標準吧!這樣一般大學生不用我解釋就可以看得懂我的設計。

下面用海角n億洗錢的體系為例,用graphviz 來畫relation table 設計

我想面對犯罪可以為一己之私,可以用泛政治的理由拉一堆人來替自己洗錢掩護,檢警單位應要學學怎樣用自由軟體來彙整日益複雜的犯罪資料。

一般資料庫先畫ER diagram,正規化Schema後再寫SQL。不過有個java 工具sql2dot是可以把簡單 SQL 檔轉成 dot 語言,用法是
java -jar sql2dot.jar 我的sql檔名
我試了一下,語法解析不夠彈性,有些情況沒辦法解析出來。不過後來又看到一些其他的工具sql 轉dot的工具,等以後試了再來紀錄心得。

1 則留言:

Shawn the R0ck 提到...

graphiz的确强大,我只用过其中一个小工具dot画图