題:
免費軟件可對SQL Server 2008+中的現有復雜數據庫圖進行反向工程
Jeroen
2014-02-27 04:31:18 UTC
view on stackexchange narkive permalink

直到幾年前,我都使用Microsoft Visio將現有數據庫反向工程為圖表。 該功能已被棄用已有一段時間了,我寧願堅持尋找替代方法。

要求

這個新的SE網站的常見問題解答會告訴我要求的精確性,所以我會盡力而為。這些需求大多數都在Visio中,儘管不是全部。我猜想找到一個擁有全部 的軟件是不可行的,但我想靠近一下。

重要提示:

  • SQL Server 2012 數據庫;

  • 反向工程表,其中包含所有列和主/外鍵指示;

  • 反向工程外鍵作為表之間的連接器;

  • 框和連接器的手動佈局(我想在視覺上對東西進行分組);

  • 基本主題:選擇背景顏色表;

  • 能夠處理複雜的模型,例如 100多個表格

  • 能夠選擇要顯示或不顯示哪些項目(例如,省略某些表格等);

  • 至少有免費試用版

  • 導出用於分發和打印目的的格式,最優選的是PDF,我猜也是PNG;

  • 所見即所得

主要要點:

  • 在Windows 8上運行(儘管我會安裝Linux用於軟件的VM滿足所有重要要求)

  • 自動佈局和連接器路由以最大程度地減少重疊;

  • 能夠執行 SQL Server 2008和2008R2 ;

  • 能夠進行反向工程視圖;

  • 免費(或免費的版本);

  • 增量更新,例如再次進行反向工程,並添加/刪除表等,同時保留主題,現有佈局等。

  • Pretty 圖(現代外觀) ,抗鋸齒,字體,顏色,漸變,陰影,主題等選擇);

  • 友好的學習曲線(我可以處理很多複雜的功能,只要可以輕鬆快速完成基礎操作即可);

必須具備:

  • 安裝程序不會在瀏覽器中秘密安裝工具欄,也不會更改我的主頁! ;-)

我的研究

當然,即使在姐妹網站上,這個問題也曾被問過(即使他們不在此列,也取得了一些成功)。這裡有一些:

與DBA.SE有點相似:

此外,Wikipedia的表格還比較了用於“逆向工程”功能的幾個軟件包:

嘗試

這些是我嘗試傳遞的內容:

  • Visio 2003 (這是我以前使用的語言)。它不是免費的,過時的,但是在其他方面,它卻適合大多數人。不再是一種選擇。

  • Visio 2010和2013 (這是我目前擁有的)。不再支持反向工程。我曾考慮編寫插件或使用VBA一起破解。不知道那會是多麼艱難。它不是免費的(除非我想我個人已經擁有了它),但它在很多其他方面都符合要求。

  • Graphviz 。相當早以前就進行了此嘗試,據我所知,它的學習曲線有點陡峭,我無法完全手動確定最終的佈局。

  • SSMS 圖。這適用於小情況,但對於大情況可能會很麻煩。

  • Visual Studio 2012 。ADO.NET實體數據模型。連接器的手動佈局是有限的,主題根本不存在,它實際上是針對文檔之外的目標,並且會顯示出來(例如,默認情況下您會獲得“導航屬性”等),並且不適用於100+表。這可能對較小的場景有用,但不適合我。

我認為我可能已經嘗試了SO線程的一些建議,儘管我可以

所以:您會推薦什麼?

七 答案:
#1
+10
Jeroen
2014-04-04 14:43:10 UTC
view on stackexchange narkive permalink

這是我最終使用的建議(經過大量研究並嘗試了許多不同的選擇):

為此使用普通Visio。

這就是為什麼。

這種方法的解釋:

沒有一種工具可以方便地滿足所有上述要求,甚至沒有一種工具可以滿足主要要求。 Visual Studio 2012即將發布,但缺少主題支持,並且不能用於大量表。

以下過程對我有用:

  1. 創建一個空白的Visio流程圖 1 sup>模板。選擇您喜歡的設計。將頁面和打印尺寸設置為所需的尺寸(我選擇了橫向A3格式和“線性”主題)。

  2. 在中打開查詢 2 sup>旁邊的SSMS會為您提供以後需要的詳細信息:表,列名和 IS NULL 信息。

  3. 開始添加表一個。手動選擇要包含的表和列。

  4. ol>

    這是最終結果的示例:

    zoomed in example

    或整個模型的縮小屏幕截圖(因為我選擇的是人工操作,因此所包含的表格明顯少於全部100多個表格):

    zoomed out example

    我以前使“表格”看起來像這樣的過程:

  • 標題是粗體且字體較大。
  • 分隔符不是行,而是一系列的粗體-彼此後接破折號。
  • 四個“節”:TableName,主鍵,外鍵,普通列。
  • 以粗體表示 NOT NULL 列。
  • TableName和分隔符用白色表示,列名稱用黑色表示。

此外,我還選擇了以下外鍵:

  • 永遠不允許交叉連接器,而只能創建小的“引用”塊來引用模型另一側的某個表。
  • 不包括所有表(即有更多表)外鍵比連接或。)

希望以上內容對其他人也有用。

問題的要求:

作為一個底線,我確實推薦這種方法,主要是因為您最終得到了一個視覺上吸引人的模型和高度的控制。但是,這種方法並不適合整個法案。滿足要求的方式如下:

數據連接:

  • SQL Server 2012數據庫
  • 反向工程師表所有列和主鍵/外鍵指示
  • 將反向工程外鍵作為表之間的連接器

± ,但不是自動的。因此,“或多或少”。

控制和視覺效果:

  • 手動佈局,基本主題設置,能夠選擇要顯示的項目
  • 能夠處理複雜的模型,例如100多個表格

是的,這在普通的Visio上都很好用。

金錢:

  • 至少有一個免費試用版

AFAIK有一個免費的Office試用版。

其他:

  • 導出為各種格式
  • 所見即所得;

是的,這在Visio中可用。

獎勵積分:

它有大約一半的獎勵積分:

  • 在Windows 8上運行
  • 還支持SQL 2008
  • pretty
  • 友好的學習曲線

1。我還嘗試了UML模板和形狀,但這具有用於連接器路由的令人生氣的行為。不推薦! sup>

2。這是我的查詢: sup>

  SELECT t.name表名,c.name列名,case當c.is_nullable = 1時的情況表AS t JOIN sys.columns AS c ON t.object_id = c.object_id WHERE c.name NOT IN('Excluded1','Excluded2')ORDER BY t.name '那麼0當c.name喜歡'%Id'則1
ELSE 2 END,c.column_id  
您如何通過SSMS中的查詢“添加”表? Visio是否可以接受查詢?您是說您是手動創建圖表嗎?
@webworm是的,我必須(有點可恥地)承認,我對大量控制的渴望和視覺效果引人注目,這促使我訴諸於體力勞動。完整版(從縮略圖顯示)總共花了我大約3個小時的時間。保持最新狀態大約是每4週衝刺10分鐘。最大的缺點不是人工,而是人為錯誤的機會(閱讀:複製/粘貼錯誤)。除非有人提出一個好的選擇(非常歡迎!),否則我可能會堅持使用這種“解決方案”。
它不符合“反向工程師表”的要求。如果準備好手動進行換向,則PowerPoint也可以正常工作。
@sixtytrees這就是為什麼我在概要中給它加“±”的原因:“有可能,儘管不是自動化的”。另外,我認為“ * Powerpoint效果同樣好*”並不是從前提中輕易得出的……
PS。請放心,儘管我對“ Visio”是最糟糕的選擇感到“不滿意”。
確實,您的建議是最好的。令人驚訝的是,沒有工具可以可靠地反向工程鏈接。
#2
+7
Notre1
2014-05-23 01:10:35 UTC
view on stackexchange narkive permalink

SQL Power Architect logo

簽出 SQL Power Architect。它可以連接到您可以為其配置JDBC連接器的許多數據庫,並且可以執行您正在尋找的所有反向工程。不過,我只處理基本數據類型,因此導入時必須將DATETIME轉換為DATE。

您可以更改“ Table Colour”,但實際上,這實際上是在改變顏色表的名稱/標題,而不是更改整個表的背景顏色。

SQL Power Architect screenshot: opening screen

SQL Power Architect screenshot: entity-relationship diagram

#3
+6
Sualeh Fatehi
2017-01-31 00:52:24 UTC
view on stackexchange narkive permalink

SchemaCrawler是一個免費的開源數據庫發現工具,可以對現有數據庫進行反向工程。

重要:

  • SQL Server 2012數據庫- SchemaCrawler與SQL Server 2012數據庫一起使用
  • 具有所有列和主鍵/外鍵指示的反向工程表- SchemaCrawler將創建具有所有列的圖列和外鍵
  • 將反向工程外鍵作為表之間的連接器 SchemaCrawler將創建具有所有列和外鍵的圖
  • 手動佈置框和連接器(我想可視化地對內容進行分組)- SchemaCrawler也可以生成GraphViz DOT,並且您可以使用其他工具微調佈局
  • 基本主題:為表格選擇背景顏色- SchemaCrawler也可以生成GraphViz DOT,並且您可以使用其他工具微調佈局
  • 能夠處理複雜的模型,例如100多個表- SchemaCrawler可以處理大量表-更好的是,您可以提供正則表達式搜索條件來創建模式子集的多個圖
  • 可以選擇顯示或不顯示哪些項目(例如,省略某些表等)- SchemaCrawler允許您提供正則表達式搜索條件,以創建多個圖,模式的子集
  • 在至少有一個免費試用版- SchemaCrawler是開源且免費的
  • 導出為分發和打印目的的各種格式,最優選的是PDF,我猜PNG也可以- SchemaCrawler是開源且免費的
  • 所見即所得- SchemaCrawler是命令行

主要要點:

  • 在Windows 8上運行(儘管我將為滿足所有重要要求的軟件安裝Linux VM)- SchemaCrawler是跨平台的
  • 自動佈局和連接器佈線以最大程度地減少重疊- SchemaCrawler在後台使用GraphViz進行自動佈局
  • 能夠執行SQL Server 2008和2008R2- SchemaCrawler支持所有版本的SQL Server
  • 能夠反向工程視圖-SQL Server可以反向工程視圖
  • 免費(或免費版本)- SchemaCrawler是開源且免費的
  • 增量更新,例如再次進行反向工程並添加/刪除表等,同時保留主題,現有佈局等。-保存 SchemaCrawler命令行命令,然後重新運行
  • 漂亮的圖表(現代的外觀,抗鋸齒,字體,顏色,漸變,陰影,主題等選擇)- SchemaCrawler網站上的一些示例
  • 友好的學習曲線(我只要能夠輕鬆快速完成基礎操作,就可以處理許多複雜的功能)_取決於您:-)

必須具備:

  • 安裝程序不會不要在瀏覽器中秘密安裝工具欄或更改主頁! ;-)- SchemaCrawler沒有安裝程序-解壓縮並運行

Sualeh Fatehi, SchemaCrawler

感謝您的回复,很高興得知您已開源解決方案。不幸的是,現在不再能夠判斷該答案是否會奏效了。 -PS。將您的簽名(通常在Stack Exchange上也不需要,因為您的名字的右下角)更改為“顯式披露”會很友好。
#4
+1
JohnOsb
2015-04-28 02:34:08 UTC
view on stackexchange narkive permalink

您的要求清單已由 Lucidchart完全涵蓋。好吧,它不是免費的,但可以免費試用。

使用Lucidchart,您可以運行他們指定的查詢,然後導入查詢結果。這將創建表的集合,您可以將它們放到諸如模板形狀的圖表上。 Lucidchart繪製所選表的鍵之間的連接。您可以重新排列表格和連接,刪除字段,更改顏色和字體等。據我所知,在較新版本的Visio中,您可以節省90%的手繪時間,並且可以獲得大部分格式化的靈活性。不用擔心錯別字。缺點是這不是到數據庫的實時連接,因此刷新需要進行一些手動工作。

您可以導出為各種圖形格式(PNG,PDF,JPG),到Visio(VDX)。

#5
+1
sixtytrees
2016-08-10 18:27:52 UTC
view on stackexchange narkive permalink

考慮SQL Server Management Studio(SSMS)。

轉到數據庫->數據庫圖->右鍵單擊->添加新圖->為ERD添加所需的表。

優點:
帶有SSMS,可以提取並很好地顯示列名。
缺點:
缺少鏈接的鍵。

請注意,上面列出的所有免費或試用工具都沒有選擇數據庫的鏈接密鑰。

#6
+1
EthR
2017-09-11 20:41:51 UTC
view on stackexchange narkive permalink

Visio 2016現在具有用於逆向工程的加載項

https://support.office.com/zh-cn/article/Reverse-engineer-an-existing-database -into-a-basebase-model-fb034862-acfc-45bc-88b2-f33d1e1f8614#ID0EAABAAA = Visio_Pro_for_Office_365

你會推薦嗎?它如何與我所提出的要求相抵觸?
我沒有正確安裝它。但是我在工作中嘗試過-工作總是有差異。我將花一些時間與系統管理員聯繫後進行更新。如果OP對Visio 2010感到滿意,那麼他們應該對此感到滿意。看起來就像是同一件事。
我*是* OP :-)。 Visio 2010在當時還算不錯,儘管7多年後,您還是希望有更好的東西。我發表上述評論的原因是,如果答案不符合要求並解釋如何與要求相抵觸,那麼答案對我和其他人來說價值更大。
#7
+1
Howard Rothenburg
2019-06-29 01:38:52 UTC
view on stackexchange narkive permalink
 嘗試使用Apex SQL ModelFree:https://www.apexsql.com/sql-tools-model.aspx打印輸出 


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...