2017-09-05 72 views
1

我正在使用SQL Server 2011並需要創建一個可視化表示(圖)。當前結構在表之間沒有關係(外鍵),並且有沒有任何主鍵的表。SQL數據庫圖提取

我已經嘗試過使用SQL數據庫圖表,但不能在表格之間添加任何關係,而不會在數據庫本身發生變化。

我想繪製關係,但不做任何更改。

有沒有免費的數據圖表軟件,我可以用來實現這一目標?我曾嘗試過DbVisualizer,但得到與SQL中的圖相同的問題。

+1

你可以下載它作爲圖像,並使用任何圖像編輯器來「繪製」表之間的關係線。出於好奇,是否有任何理由爲什麼你會有一個沒有定義外鍵的數據庫? –

+0

如果我能找到可以根據列名自動繪製關係的軟件,那將會有很大的幫助,因爲我目前在數據庫中有500多個表。不知道爲什麼這個數據庫是按照它的方式創建的(沒有FK)。目前的DBA已經在垃圾數據上掙扎了很長一段時間。 – PKirby

+2

如果你沒有定義外鍵,你期望軟件如何識別關係?通過猜測?通過擲骰子?這就是爲什麼需要外國約束的一個很好的例子:不僅要保持你的數據的完整性,還要*文件*你的模型 –

回答

2

在你的情況我會做到以下幾點:爲您的數據庫

  1. 生成腳本(僅架構)(如@Serg建議的話)

    可以使用SSMS這樣做:右擊你的數據庫 - Tasks - Generate Scripts。選擇所有表格,然後在Advanced下,在Types of data to script處選擇Schema only。保存腳本並在某些測試環境中運行它以生成數據庫的副本。 (如果這樣做,在同一臺服務器上,您可能需要更改腳本一點,給新數據庫的另一個名字)

  2. 動態嘗試「猜測」外鍵關係

    既然你有500 +表格,你可以嘗試使this script工作於 你(當然,它需要一些測試和調整,以適應你的 的情況),但我在下面的場景中使用它,它工作。

希望你有一個命名約定。在這個腳本中,假定引用的鍵被命名爲相同,但可以進行配置。

所以,我創建了下面的表格:

CREATE TABLE test (testid int identity(1,1) UNIQUE, description varchar(10)) 
CREATE TABLE test_item (id int identity(1,1) UNIQUE, testid int) 

而下面的指標對自己的主鍵(通常情況下,你應該讓他們太)

CREATE CLUSTERED INDEX [ix_testid] ON [dbo].[test]([testid] ASC) 
CREATE CLUSTERED INDEX [ix_testitemid] ON [dbo].[test_item]([id] ASC) 

我沒有創建一個外鍵關係。

接下來,我跑到離Automatically guessing foreign key constraints文章劇本,我設法得到以下結果:

enter image description here

執行該腳本,你可以讓你的關係,你的新數據庫中創建生成的所有ALTER聲明 - 從這個數據庫生成圖表,你就完成了! :)

ps。我建議你逐步測試它,例如首先使用一個表格,然後添加其他數據並檢查結果。 你可以嘗試我的小測試here的工作演示。

祝你好運!

+0

優秀!謝謝!我一定會按照這些步驟! – PKirby