ブログ

SSMSでデータベースダイアグラムを作成する

SQL Serverを使っているなら、ER図のために別のソフトを入れる必要はありません。SSMS(SQL Server Management Studio)にデータベースダイアグラムの機能が入っていて、すでにあるテーブルを図にするだけなら数クリックで済みます。

SSMSデータベースダイアグラムの初回利用では、DB内にサポート用オブジェクトを作成します。その後、テーブルを追加して表示量を調整し、画像またはDDLとして取り出せます。MySQL Workbench・DBeaver・A5:SQL Mk-2にも同じ目的の手順があります。

最初に:ダイアグラム用オブジェクトのセットアップ

オブジェクトエクスプローラーでデータベースを展開すると、データベースダイアグラム(Database Diagrams) のノードがあります。初めてこのノードを展開すると、ダイアグラム機能を設定するか聞かれます。「はい」を選ぶとセットアップが走ります。

このときそのデータベースに次のオブジェクトが作られます。

  • sysdiagrams テーブル
  • sp_creatediagram、sp_alterdiagram、sp_dropdiagram、sp_renamediagram ストアドプロシージャ
  • sp_helpdiagrams、sp_helpdiagramdefinition、sp_upgraddiagrams ストアドプロシージャ
  • fn_diagramobjects 関数

作ったダイアグラムをデータベースの中に保存するためのオブジェクトです。業務テーブルには手を付けませんが、スキーマにオブジェクトが増える作業ではあるので、本番DBならチームの変更手順に乗せて進めるのが安全です。

セットアップはdb_ownerロールのメンバーだけが実行できます。 ダイアグラムへのアクセスを制御するための条件なので、権限がなければノードを開いても案内が出ないかエラーになります。参照権限だけのアカウントで接続しているなら、DBAに依頼するか、後述のDDL取り出しに進んでください。

ダイアグラムを作ってテーブルを載せる

セットアップが済んだら、ダイアグラムを作ります。

  1. データベースダイアグラム ノードを右クリックし、新しいデータベースダイアグラム(New Database Diagram) を選びます。
  2. テーブルの追加(Add Table) ダイアログにテーブルの一覧が出ます。必要なテーブルを選んで追加を押すか、名前をダブルクリックするとキャンバスに載ります。
  3. ダイアログを閉じるとダイアグラムの完成です。外部キーでつながっているテーブルの間には、リレーション線が最初から引かれています。

あとからテーブルを足したいときは、キャンバスの空白を右クリックして再度テーブルの追加を選びます。逆に図から外したいテーブルは選んで削除しますが、これは図から外すだけで実際のテーブルは残ります。

数百テーブルのスキーマを一枚に全部載せると読めなくなります。会員・注文・精算のようにドメイン単位でダイアグラムを複数枚作っておくほうが、実務ではずっと役に立ちます。ダイアグラムはデータベースの中に保存されるので、名前を分けておけば次回そのまま開けます。

リレーション線の読み方

ここで一つ押さえておきたい点があります。SSMSのデータベースダイアグラムは、リレーション線の端を鍵のアイコンと無限大の記号で表します。鍵が付いている側が主キーを持つ親、無限大の記号が付いている側が複数行になりうる子です。

オンラインのER図ツールでよく見るカラスの足(IE)記法とは見た目が違いますが、意味は同じです。他のツールで描いた図と並べて見る機会があるなら、ER図の記号まとめで記号の対応を確認しておくと迷いません。

リレーション線をクリックすると、プロパティ画面でどのカラム同士がつながっているか、削除時と更新時の規則がどうなっているかを確認できます。引き継いだDBで外部キーの挙動を把握するときに便利な場所です。

テーブルの表示量を切り替える

既定ではカラム名とデータ型がすべて表示されるので、テーブルが十個ほどでキャンバスが埋まります。

テーブルのタイトルを右クリックして テーブル ビュー(Table View) を選ぶと、表示の量を変えられます。

  • 標準(Standard)。 カラム名、データ型、NULL許可まで表示します。設計を詳しく見るとき用です。
  • 列名(Column Names)。 カラム名だけを表示します。構造を眺めるにはこれが一番バランスがよいです。
  • キー(Keys)。 主キーと外部キーのカラムだけを表示します。関係を中心に見るときに向きます。
  • 名前のみ(Name Only)。 テーブル名だけを残します。全体を一画面に収めたいときに使います。
  • ユーザー設定(Custom)。 表示する項目を自分で選びます。

全体像をつかむ段階は名前のみかキーにしてリレーションを先に見て、深掘りするテーブルだけ標準に戻す進め方が快適です。配置はテーブルをドラッグして動かせますし、キャンバスの右クリックメニューにあるテーブルの整列を使えば、重なったテーブルを自動で広げられます。

ダイアグラムからスキーマを編集するときの注意

SSMSのデータベースダイアグラムは閲覧用ではなくデザイナーです。図の上でテーブル、カラム、キー、インデックス、リレーション、制約を作成・編集・削除できます。

便利な分だけ注意も要ります。保存を押した瞬間、実際のスキーマが変わります。 構造を確認するために開いたのなら保存せずに閉じる習慣をつけるのが安全で、本番DBに接続しているならなおさらです。うっかりカラムを動かしたりリレーション線を消したまま保存すると、そのとおりに反映されます。

ダイアグラム上で設計変更を進めるつもりなら、変更前に対象テーブルのスクリプトを一度取っておくと安心です。

ダイアグラムを複数枚に分けて管理する

ダイアグラムはデータベースの中に保存されるので、一つのDBに何枚も作っておき、目的に応じて開いて使えます。テーブルが数十個を超えたあたりから一枚では収まらないので、最初から分けて作るほうが現実的です。

名前の規則を一つ決めておきます。 01_会員、02_注文 のように先頭に番号を付けると一覧での並び順が保たれ、どれから見ればよいかが名前だけで伝わります。ある時点の構造を残す目的なら、注文_2026-08 のように時点を付けておくと後で比較するときの基準になります。

境界にまたがるテーブルは両方に載せます。 注文のダイアグラムに会員テーブルが名前だけでも見えていれば、リレーションがどこへ続くのかを見落としません。同じテーブルが複数の図に登場しても問題ありません。実体は一つで、図の上に複数回現れているだけです。

ダイアグラムは描いた時点のスナップショットではありません。 開くたびに現在のスキーマを読み込むので、誰かがカラムを追加していれば次に開いたときに反映されています。特定時点の構造を保存しておきたいなら、画像として残すか、その時点のDDLを一緒に保管しておく必要があります。

リレーション線のラベルと改ページ

キャンバスの右クリックメニューには、表示に関する項目がいくつかあります。知っておくと図の仕上がりが変わります。

リレーション名の表示。 リレーション線の上に外部キー制約の名前を一緒に表示します。FK_posts_members のように制約名を規則的に付けているスキーマなら、線をクリックしなくても何の関係か読み取れます。逆に自動生成された無意味な文字列なら、切っておくほうがすっきりします。

改ページの表示。 印刷したときにどこで切れるかを点線で示します。会議に紙で持っていくなら、この表示を出して配置を合わせておけば、リレーション線がページの境目で切れた図を刷ってしまうことがありません。

拡大・縮小。 テーブルが多いときは、縮小して全体の流れを見て、特定の領域だけ拡大してカラムを確かめる、という行き来になります。表示量を名前のみに切り替える操作と組み合わせると、大きなスキーマでも扱えるようになります。

インデックスと制約まで確認する

ダイアグラムはテーブルとリレーションを見せますが、必要な情報はその場でもう少し引き出せます。テーブルを右クリックすると、インデックスとキー、リレーション、CHECK制約を開く項目があります。

引き継いだDBで特定の検索が遅い理由を探すとき、この流れが便利です。ダイアグラムで該当テーブルを見つけてインデックス一覧を開き、どのカラムにどの順番でインデックスが張られているかを確認してから、実際のクエリの条件と合っているかを見ます。複合インデックスは列の順番が効くので、一覧では順番まで確認します。

リレーションのダイアログでは、外部キーの削除規則と更新規則が見られます。会員を削除したときに投稿がどうなるのかが、ここに書いてあります。設計の意図を把握するには、コードを追うよりこちらが速いです。

ダイアグラムから新しいテーブルを設計するとき

既存の構造を見るだけでなく、新しいテーブルをこの画面で作ることもできます。手順はこうです。

  1. キャンバスの空白を右クリックして新しいテーブルを選び、名前を入力します。
  2. カラム名、データ型、NULL許可を表に埋めていきます。
  3. 主キーにするカラムを選び、ツールバーの主キー設定を押します。
  4. 親テーブルの主キーのカラムから、子テーブルの外部キーのカラムへドラッグするとリレーションが作られます。
  5. 保存を押すと実際のDBに反映されます。

ここでよく起きる間違いが一つあります。リレーションを作るときにドラッグの向きが逆になると、親と子が入れ替わります。ダイアログで主キー テーブルと外部キー テーブルが意図どおりになっているかを確認してから進めるとよいです。どちらが親かを判断する基準はER図の書き方のリレーションとカーディナリティの項にまとめてあります。

設計をこれから始める段階なら、命名規則とデータ型の基準を先に決めておくほうが結果的に速く進みます。判断基準はテーブル設計チェックリストに項目ごとに整理してあります。

ダイアグラムを画像として残す

仕上げたダイアグラムは、会議資料や引き継ぎ文書に貼ることになります。ダイアグラムの画面から直接ファイルに書き出すメニューはなく、クリップボードを経由します。

キャンバスの空白部分を右クリックして ダイアグラムをクリップボードにコピー(Copy Diagram to Clipboard) を選ぶと、ダイアグラム全体が画像としてクリップボードに入ります。WordやPowerPoint、画像編集ソフトに貼り付けてから、必要な形式で保存します。

テーブルが多くて一画面に収まらないときは、画像にする前にテーブルビューを名前のみに切り替えて配置を整えるほうが仕上がりがよくなります。印刷が目的なら、改ページの表示を出して配置を合わせると、切れる位置を事前に確認できます。

スキーマをDDLとして取り出す

ダイアグラムはSSMSの中で見る図なので、他のツールへ移したり文書にしたりするにはDDLが必要です。SQL Serverで構造だけを取り出す手順はこうです。

  1. オブジェクトエクスプローラーでデータベースを右クリックし、タスク(Tasks) → スクリプトの生成(Generate Scripts) を選びます。
  2. データベース全体をスクリプト化するか、特定のテーブルだけを選ぶかを決めます。
  3. スクリプト作成オプションの画面で 詳細設定(Advanced) を開き、スクリプトを作成するデータの種類(Types of data to script) を スキーマのみ(Schema only) にします。
  4. ファイルか新しいクエリウィンドウに出力すると、CREATE TABLE文が得られます。

行データを含めないためファイルは通常小さくなりますが、テーブル名・カラム名・制約もシステム構造を示す内部情報です。業務データがなくても、生成したスクリプトのアクセス権限は管理してください。このスクリプトは別のER図ツールのSQLインポートに利用できます。MySQLとPostgreSQLの取り出しコマンドはSQLからER図を自動生成するのステップ1にまとめてあります。

VS Codeを主に使っているなら

SSMSを開かずにエディタの中で済ませる方法もあります。MicrosoftのMSSQL拡張機能に スキーマデザイナー(Schema Designer) が入り、2026年に正式機能になりました。テーブルや外部キー、主キー、制約を視覚的に作成・編集でき、検索、ドラッグ&ドロップ、ズーム、ミニマップ、自動整列に対応しています。

エディタの中でER図を扱う方法はVS CodeでER図を作成するに拡張機能ごとにまとめてあります。

よくある質問

ダイアグラムのノードを開いたら「設定しますか」と聞かれました。進めて大丈夫ですか?

ダイアグラム機能を初めて使うときに出る正常な案内です。「はい」を選ぶと、そのデータベースにsysdiagramsテーブルとダイアグラム用のストアドプロシージャ、関数が作られます。ダイアグラムを保存するためのオブジェクトなので業務テーブルには影響しませんが、本番DBならいつもの変更手順に沿って進めるのが安全です。セットアップはdb_ownerロールのメンバーだけが実行できます。

ダイアグラム上でテーブルを直すと実際のDBも変わりますか?

変わります。SSMSのデータベースダイアグラムは閲覧用ではなくデザイナーなので、カラムを追加したりリレーションを引いたりして保存すると、実際のスキーマが変更されます。構造を見るだけなら保存せずに閉じる習慣が安全で、本番DBに接続している場合はとくに注意が必要です。

作ったダイアグラムを画像ファイルとして保存するには?

ダイアグラムの空白部分を右クリックして「ダイアグラムをクリップボードにコピー」を選ぶと、画像としてクリップボードに入ります。WordやPowerPoint、画像編集ソフトに貼り付けてから任意の形式で保存します。ダイアグラムの画面から直接ファイルに書き出すメニューはありません。

スキーマだけをDDLとして取り出すには?

オブジェクトエクスプローラーでデータベースを右クリックし、「タスク」から「スクリプトの生成」を実行します。スクリプト作成オプションの画面で「詳細設定」を開き、「スクリプトを作成するデータの種類」を「スキーマのみ」にすると、CREATE TABLE文だけが出力されます。データが入らないのでファイルも軽く、他のツールに貼り付けるのにも向いています。

画像が必要なら、ダイアグラム用オブジェクトをセットアップし、テーブルと表示量を調整してクリップボードへコピーします。他のツールや文書で使う場合は、スクリプトの生成でスキーマのみを取り出します。

取り出したDDLがあるなら、WorksCove ERDに貼り付けてダイアグラムとテーブル定義書を作る方法もあります。SQL ServerのDDLをそのまま読み込め、必要ならMySQLやPostgreSQLの文法に変換して書き出すこともできます。貼り付けから結果まではSQLからER図を自動生成するに画面つきでまとめてあります。