2017-09-05 9 views
1

私はSQL Server 2011を使用しており、視覚的な表現(図)を作成する必要があります。現在の構造にはテーブル間の関係(外部キー)はなく、プライマリキーのないテーブルもあります。SQL DB図の抽出

私はSQLデータベースダイアグラムを使用しようとしましたが、DB自体で変更が行われていないテーブル間の関係は追加できません。

変更を加えずに関係を描きたいと思います。

これを達成するために私が使用できる無料のDBダイアグラムソフトウェアはありますか? DbVisualizerを試しましたが、SQL内のダイアグラムと同じ問題が発生しました。

+1

イメージとしてダウンロードし、イメージエディタを使用してテーブル間の関係線を「描画」することができます。好奇心の外に、外部キーが定義されていないデータベースがある理由は何ですか? –

+0

カラム名に基づいてリレーションシップを自動的に描くソフトウェアを見つけることができれば、現在DBに500を超えるテーブルがあるので、多くの助けになります。なぜこのDBが(FKなしで)作成されたのか分かりません。現在のDBAは、しばらくの間、ごみデータに苦労しています。 – PKirby

+2

外部キーが定義されていない場合、ソフトウェアが関係をどのように識別すると思いますか?推測することによって?サイコロを振る?これは外部の制約が必要な理由の良い例です:あなたのデータの整合性を保つだけでなく、あなたのモデルを文書化することです。 –

答えて

2

私は次のことを行うと、あなたの場合:

  1. (@Sergがすでに示唆したように)、データベース(スキーマのみ)のためのスクリプトを生成

    あなたはSSMSを使ってこれを行うことができます:右あなたをクリックしてくださいデータベース - Tasks - Generate Scripts。すべてのテーブルを選択し、Advancedの下にあるTypes of data to scriptSchema onlyを選択します。スクリプトを保存していくつかのテスト環境で実行して、データベースのschema onlyコピーを生成します。あなたは500を持っているので、外部キー関係

    「推測」しようとする動的

  2. (同じサーバー上でこれを行う場合は、新しいデータベースに別の名前を付けるために、スクリプトを少し変更する必要がある場合があります) +テーブルの場合、 の場合は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記事からスクリプトを実行したと、私は次のような結果を得るために管理:あなたの関係はあなたの新しいデータベースに作成されます可能性があり、このスクリプトから生成されたすべてのALTER文の実行

enter image description here

を - このデータベースからダイアグラムを生成すると、完了です! :)

ps。最初に1つのテーブルを作成し、次に他のテーブルを追加して結果を確認するなど、段階的にテストすることをお勧めします。 私の小さなテストhereの作業デモを試すことができます。

幸運を祈る!

+0

優秀!ありがとうございました!私は間違いなくこれらの手順に従います! – PKirby

関連する問題