Visio では、データベース モデル図のテンプレートを使用して、新しいモデルを作成したり、既存のデータベースをモデルにリバース エンジニアリングしたりできます。
この記事では、データベース モデルを作成する方法、および作成後にモデルを使って実行できる内容について説明します。
注: データベース モデル図は、特定のバージョンの Visio でのみ使用できます。 詳細については、「データベース モデリング機能が見つかりません」を参照してください。
1: データベース モデル図を開始する
2:図の構造を調整する
データベース モデル図を作成した後、図の洗練化を開始します。 モデルの 3 つの主要なコンポーネントを追加してカスタマイズできます。
-
エンティティ (またはテーブル)、
-
列 (テーブルについての事実を示す)、および
-
リレーションシップ (テーブル間の関連付け)。 リレーションシップには、一対一、一対多、多対多があります。
モデルに機能を追加する手順を開くには、以下の見出しを選択してください。
データベース モデル図のテンプレートには 2 つのステンシルが用意されています。 図の構造を調整し始めたら、適切なステンシルから作業します。
-
エンティティ関係ステンシルを使用して、SQL92 以前の標準に基づくデータベース モデルを作成します。
-
種類を使用するために追加の図形がある、オブジェクト リレーショナル ステンシルを使用して、SQL99 以降の標準に基づくデータベース モデルを作成します。
[エンティティ] 図形を使用して、図にテーブルを作成します。
-
[エンティティ関係] または [オブジェクト リレーショナル] ステンシルのいずれかから [エンティティ] 図形を図面にドラッグします。
-
図形をダブルクリックして、[データベース プロパティ] ウィンドウを開きます。
-
[カテゴリ] の下で [定義] をクリックし、テーブルの名前を入力します。
-
[カテゴリ] の下で [列] をクリックし、名前を入力してデータ型を選択します。
-
Null 値にすることができない列の [必須] チェック ボックスをオンにします。
-
データベース テーブルの各行を一意に識別する列の [PK] (主キー) チェック ボックスをオンにします。
-
[カテゴリ] の下で [インデックス]、[トリガー]、[チェック]、または [拡張] をクリックして、これらの要素のオプションを作成します。
[データベース プロパティ] ウィンドウを使用して、データ型や主キーなどの列のプロパティを追加または変更します。
-
図のテーブルをダブルクリックします。
-
[データベース プロパティ] ウィンドウの [カテゴリ] の下で [列] をクリックします。
-
最初の空の [物理名] セルをクリックして、名前を入力します。
-
列のデータ型を変更するには、列の [データ型] フィールドをクリックして、リストからデータ型を選択するか、リストにデータ型を入力します。 たとえば、「decimal(8,2)」や「char(30)」と入力できます。
-
Null 値を回避するには、[必須] チェック ボックスをオンにします。
-
列が主キーであることを指定するには、[PK] チェック ボックスをオンにします。
-
[列] カテゴリのクリック時に表示される内容に加え、その他の列のプロパティを表示するには、列を選択して [編集] をクリックします。
リレーションシップでは、データベースで 1 つのテーブルの行と関連テーブルの行を一致させることができるように、主キーと外部キーを使用します。 そのようなリレーションシップは図に表示できます。 また、カーディナリティ (例: 一対多) を設定し、クロウズ フット、リレーショナル、または IDEF1X のいずれかの表記を使用して、カーディナリティを表示することもできます。 データベース モデル図テンプレート内にこれらの表記のいずれかを使用して、多対多リレーションシップを表示することはできません。
2 つのテーブル間にリレーションシップを作成する
-
どちらのテーブルも図に表示されていることを確認します。 既存のデータベースからモデルのリバース エンジニアリングを行った場合、[テーブルとビュー] ウィンドウから 1 つまたは両方のテーブルを図面ページにドラッグすることが必要なことがあります。
-
リレーションシップの主キー側に必要なテーブルをダブルクリックします。
-
[データベース プロパティ] ウィンドウの [カテゴリ] の下で [列] をクリックします。
-
グリッド内で、テーブルの各行を一意に識別するために使用する列をクリックし、[PK] チェック ボックスをオンにしてその列を主キーとして設定します。
-
[オブジェクト リレーショナル] または [エンティティ関係] ステンシルから、[リレーションシップ] 図形をドラッグしてページ上の空白スペースにドロップします。
-
高い方の終端と親テーブルを含むテーブルを接続します。
-
もう一方の終端と子テーブルを接続します。
2 つ目のテーブルに主キーと同じ名前の列がまだ含まれていない場合は、モデラーによって 2 つ目のテーブルに外部キーとして追加されます。
注: リレーションシップ行が非表示になる場合、[データベース] タブの [管理] グループで [表示オプション] をクリックします。 [リレーションシップ] タブの [表示] で、[リレーションシップ] チェック ボックスをオンにします。
リレーションシップのカーディナリティを次のように設定します。
-
リレーションシップをダブルクリックします。
-
[データベース プロパティ] ウィンドウの [カテゴリ] の下で [その他] をクリックします。
-
[カーディナリティ] の下で、リレーションシップに最適なカーディナリティを選択します。 一対多リレーションシップの場合、[0 またはそれ以上] または [1 またはそれ以上] のいずれかを選択するのが最適です。 一対一リレーションシップの場合、[0 または 1] または [1] のいずれかを選択するのが最適です。
3:データの検索と更新の機能を追加する
図に他の調整 (インデックス、チェック句、トリガーの作成など) を行うには、以下の見出しを選択して、次のいずれかを実行する追加に関する指示を開きます。
インデックスでは、クエリを実行するときのデータベースにおけるパフォーマンス (速度) を向上します。
-
データベース モデル図を開きます。
-
インデックスを追加するテーブルをダブルクリックして、[データベース プロパティ] ウィンドウの [カテゴリ] リストで [インデックス] をクリックします。
-
[新規作成] をクリックします。
-
[インデックスの作成] ダイアログ ボックスにインデックスの名前を入力して、[OK] をクリックします。
-
[インデックスの種類] リストで、一意または非一意のインデックスを作成するオプションを選択します。
-
[使用可能な列] リストで、このインデックス内に含める各列の名前を選択して、[追加 >] をクリックします。
-
[インデックス付きの列] リストで、[昇順] チェック ボックスをオンにして、昇順の並べ替え順序のインデックスを作成するか、チェック ボックスをオフにして、降順の並べ替え順序のインデックスを作成します。
データベース モデル図が更新されます。
ビューは保存したクエリとして考えることができます。 複数のテーブルから同じ情報に繰り返しアクセスする必要がある場合、または実際のテーブルを変更することなく、ユーザーにデータを公開する必要がある場合、ビューは特に便利です。
[エンティティ関係] または [オブジェクト リレーショナル] ステンシルから [ビュー] 図形を図面ページにドラッグします。
データベース管理システム (DBMS) によって、保存される場所を判断するためにテーブルやビューの拡張プロパティを設定できる場合があります。
設定する拡張プロパティがあるテーブルまたはビューをダブルクリックして、[データベース プロパティ] ウィンドウの [カテゴリ] リストで [拡張] をクリックします。
チェック句を使用して、列に入力されたデータが特定の値の範囲内にあることを確認します。 たとえば、"年齢" と呼ばれる列のデータが 65 以上である必要があるチェック句を作成できます。
-
テーブルをダブルクリックして、[データベース プロパティ] ウィンドウを開きます。
-
[カテゴリ] の下で [列] をクリックして、チェック句を追加する列をクリックします。
-
[編集] をクリックします。
-
[列のプロパティ] ダイアログ ボックスの [チェック] タブで、必要な制約を入力します。 選択した内容の詳細については、「Column and Field Properties dialog box (Check tab)」 ([列のプロパティ] と [フィールドのプロパティ] ダイアログ ボックス ([チェック] タブ)) を参照してください。
チェック句が [ローカル コード] の下の [コード] ウィンドウに追加されます。
ストアド プロシージャとユーザー定義の関数を使用して、同じアクションを繰り返し実行するために再利用できるコードのパケットを作成します。 この 2 つには、ユーザー定義の関数では値を返すのに対して、ストアド プロシージャでは値を返すことなくコードを実行するという大きな違いがあります。
-
[データベース] タブの [表示/非表示] グループで、[コード] チェック ボックスをオンにして [コード] ウィンドウを開きます。
-
[グローバル コード]、[新規作成] の順にクリックします。
-
[コード エディター] の [プロパティ] タブ上で、作成するコードの種類をクリックして、コードの名前を入力します。
-
[本文] タブでコードを入力して、[OK] をクリックします。
トリガーにより、特定のイベントがデータベースで発生すると、トリガー内で指定した SQL コードが実行されます。
-
テーブルをダブルクリックして、[データベース プロパティ] ウィンドウを開きます。
-
[カテゴリ] の下で [トリガー] をクリックし、[追加] をクリックします。
-
[プロパティ] タブで、トリガーの名前を入力します。
-
[本文] タブでコードを入力して、[OK] をクリックします。
トリガーが [ローカル コード] の下の [コード] ウィンドウに追加されます。
データベース モデリング機能が見つかりません
Visio の一部のエディションには、データベース モデリング機能の一部またはすべてがありません。
-
Visio Standard には、データベース モデル図テンプレートがありません。
-
Visio Professional エディションおよび Premium エディションの場合、データベース モデル図テンプレートのリバース エンジニアリング (つまり、既存のデータベースを利用し、Visio でモデルを作成する) 機能はサポートしていますが、フォワード エンジニアリング (つまり、Visio データベース モデルを利用し、SQL コードを生成すること) はサポートしていません。
-
Visio for Enterprise Architects には、リバース エンジニアリングとフォワード エンジニアリングの両方が含まれており、完全なデータベース モデリング機能をご利用いただけます。 Visio for Enterprise Architects は MSDN Premium Subscription に含まれています。このサブスクリプションは Visual Studio Professional エディションと Visual Studio Team System ロールベース エディションでご利用いただけます。
使用している Visio のエディションを確認するには、[ ヘルプ ] メニューの [Microsoft Office Visio について] を選択します。 ダイアログ ボックスの一番上のテキスト行にエディションの名前が表示されます。 または、[ ファイル ] > [ バージョン情報] を選択し、[製品情報 ] と [Visio について] の下にバージョン情報を表示することもできます。
Visio プラン 2 で既存のデータベースを基にデータベース モデルを設計する方法については、「既存のデータベースにリバース エンジニアリングを行う」を参照してください。 Visio では、SQL Server 2016 以前のバージョンのリバース エンジニアリングがサポートされています。 Visio では、SQL Server 2019 以降のバージョンのリバース エンジニアリングはサポート されていません 。