データベース モデル図で参照整合性を保持する

適用先
Visio Premium 2010 Visio 2010 Visio 2007

データベース モデル図は、特定のバージョンの Visio のみで提供されています。 詳細については、「データベース モデリング機能が見つかりません」を参照してください。

参照整合性ルールを理解する

参照整合性規則により、データベース ユーザーが関連する列間のマッピングを誤って中断しないようにします。

タイトルと作成者という名前の 2 つのテーブルを持つ Books というデータベースがあるとします。 この例では、各タイトルの作成者は 1 人だけですが、各作成者は複数のタイトルを持ち、1 対多リレーションシップと呼ばれるものを作成できます。 リレーションシップの "1" 側のテーブルは親 テーブルと呼ばれます。 "多" 側のテーブルは 、子テーブルと呼ばれます。

各書籍とその作成者に関する情報を収集するために、クエリではキーを使用して、Titles テーブル内の各書籍を Author テーブルの作成者と照合します。 親テーブル (作成者) には、各行を一意に識別する 主キー が必要です。 タイトル テーブルには、各タイトルの AuthorID を保持する列が必要です。 この列は 外部キーと呼ばれます。 主キーは各作成者を識別し、外部キーは作成者によって書かれた書籍を識別します。

ユーザーが親テーブルの作成者の AuthorID を変更した場合、Titles テーブルの AuthorID を更新せずに、タイトル テーブル内の書籍に有効な作成者が存在しなくなります。

両方のテーブルの AuthorID を変更する代わりに、参照整合性ルールを設定して必要なアクションを実行できます。 親テーブルでキーが変更または削除されたときに、データベース モデルが特定のアクションを実行するように選択できます。

親と子という用語は、カテゴリではまったく異なる意味を持ち、 親からカテゴリカテゴリ、および カテゴリから子 の図形で作成されます。 カテゴリの詳細については、「 データベース モデルダイアグラムでカテゴリを定義する」を参照してください

参照整合性のアクションを設定する

  1. 参照アクションを設定するリレーションシップをダブルクリックします。

  2. データベース プロパティ ウィンドウの [カテゴリ] で、[参照アクション] をクリックします。

  3. 子テーブル内の対応する値に対してデータベースが実行するアクションをクリックします。 次のアクションから選択できます。

    • アクションなし 親テーブルの主キーの値が変更または削除されると、子テーブルの外部キーの対応する値は変更されません。
    • カスケード 親テーブルの主キーの値が変更または削除されると、子テーブルの外部キーの対応する値が主キーと一致するように変更または削除されます。
    • NULL を設定する 親テーブルの主キーの値が変更または削除されると、子テーブルの外部キーの対応する値が NULL に設定されます。
    • 既定値を設定する 親テーブルの主キーの値が変更または削除されると、子テーブルの外部キーの対応する値が、選択した既定値に設定されます。
    • 強制しない このアクションにより、このリレーションシップの参照整合性ルールがオフになります。

[NULL の設定] オプションと [既定の設定] オプションが無効になっている場合、リレーションシップの [データベース] プロパティ ウィンドウの [その他] タブでリレーションシップが [省略可能] に設定されている可能性があります。

列の既定値を設定する

[既定の設定] アクションを使用するには、列の既定値を指定する必要があります。

  1. ダイアグラム内のテーブルをダブルクリックして、データベース プロパティ ウィンドウを開きます。
  2. [ カテゴリ] で、[ 列] をクリックし、既定値を作成する列をクリックし、[ 編集] をクリックします。
  3. [列のプロパティ] ダイアログ ボックスの [定義] タブで、既定値の値を入力します。

表記を使用して参照整合性を表示する

ドキュメント オプションを設定して、モデル内のリレーションシップラインの横にある参照整合性表記を非表示または表示できます。

参照整合性表記の文字はどういう意味ですか?

参照整合性表記は、コロンで区切られた 2 つの文字を持つリレーションシップを示します。"親テーブルで実行されたアクション"]:[子テーブルの結果] という形式です。 たとえば、d:C は、親テーブルで何かが削除されると、変更が子テーブルにカスケードされることを意味します。

親テーブルのアクションは小文字で示されます。

  • u 親テーブルのデータが更新されます。
  • d 親テーブル内のデータが削除されます。

子テーブルの結果は、大文字で示されます。

  • R アクションなし 子テーブルは変更しないでください。
  • C カスケード 子テーブルの変更をレプリケートします。
  • D 既定値を設定する その列に対して以前に設定した既定値を子テーブルに挿入します。
  • N Null の設定 子テーブルを NULL に設定します。
  • (空白) この関係に参照整合性を適用しないでください。

これらの設定は、モデルではなく実際のデータベースでの動作に影響します。 既存のデータベースからリバース エンジニアリングするモデルでは、参照整合性に関してデータベースがどのように設計されているかを確認できます。 最初から作成するモデルでは、これらの設定を使用して、モデリングするデータベースの動作を文書化できます。

Visio 2010 で参照整合性を表示する

  1. [データベース] タブの [管理] グループで [表示オプション] をクリックします。
  2. [リレーションシップ] タブの [表示] で、[参照アクション チェック] ボックスを選択します。

データベース モデリング機能が見つかりません

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 Plan 2を使用していて、既存のデータベースをデータベース モデルにエンジニアリングする方法について学習する場合は、「既存のデータベースをリバース エンジニアリングする」のトピックを参照してください。