私は次のことを行うと、あなたの場合:
(@Sergがすでに示唆したように)、データベース(スキーマのみ)のためのスクリプトを生成
あなたはSSMS
を使ってこれを行うことができます:右あなたをクリックしてくださいデータベース - Tasks - Generate Scripts
。すべてのテーブルを選択し、Advanced
の下にあるTypes of data to script
にSchema only
を選択します。スクリプトを保存していくつかのテスト環境で実行して、データベースのschema only
コピーを生成します。あなたは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記事からスクリプトを実行したと、私は次のような結果を得るために管理:あなたの関係はあなたの新しいデータベースに作成されます可能性があり、このスクリプトから生成されたすべてのALTER
文の実行
を - このデータベースからダイアグラムを生成すると、完了です! :)
ps。最初に1つのテーブルを作成し、次に他のテーブルを追加して結果を確認するなど、段階的にテストすることをお勧めします。 私の小さなテストhereの作業デモを試すことができます。
幸運を祈る!
イメージとしてダウンロードし、イメージエディタを使用してテーブル間の関係線を「描画」することができます。好奇心の外に、外部キーが定義されていないデータベースがある理由は何ですか? –
カラム名に基づいてリレーションシップを自動的に描くソフトウェアを見つけることができれば、現在DBに500を超えるテーブルがあるので、多くの助けになります。なぜこのDBが(FKなしで)作成されたのか分かりません。現在のDBAは、しばらくの間、ごみデータに苦労しています。 – PKirby
外部キーが定義されていない場合、ソフトウェアが関係をどのように識別すると思いますか?推測することによって?サイコロを振る?これは外部の制約が必要な理由の良い例です:あなたのデータの整合性を保つだけでなく、あなたのモデルを文書化することです。 –