比較とマージ ユーティリティの使用

提供: ER/Studio Data Architect
移動先: 案内検索

このセクションには次のトピックが含まれています。

比較とマージ ユーティリティの概要

比較とマージ ユーティリティでは、同じファイル内のモデル間、またはモデルとデータベースの間の相違点を解決することができます。たとえば、モデルを設計および作成してから、そのデータ モデルに基づくデータベースを作成したとします。その後、データ モデリング担当者がモデルを変更して、性別カラムを従業員テーブルに追加し、同時にデータベース管理者がデータベース内の部門テーブルを変更して、名前カラムをテーブルに追加したとします。その結果、モデルとデータベースは同期の取れていない状態になっています。比較とマージ ユーティリティによるラウンドトリップ エンジニアリングを使用すれば、モデルとデータベースの間の相違点を解決することができます。

比較とマージ ユーティリティでは、モデルとさまざまな比較対象を、比較、マージ、およびシンクロします。さまざまな種類の比較を実行できます。比較によって取得した情報を使用して、マージを実行したり、詳細なレポートを作成できます。

比較とマージ ユーティリティでは、ソース モデルと対象モデルを比較します。アクティブなダイアグラム(現在表示および編集しているもの)が常にソースになります。それに対して、有効な対象モデルを選択し、比較および(必要であれば)マージを行ったり、ALTER SQL を作成してオフライン データベースを更新します。

Notepad blue icon 2.pngメモ: ER/Studio Data Architect の論理および物理データ モデルの対象モデルとして、リポジトリ ベースのデータ モデルを指定できます。これには、名前付きリリース(Repository で管理される、読み取り専用でアーカイブされたダイアグラムのスナップショット)も含まれます。

論理モデルは、次のモデルと比較およびマージできます。

  • 同じ .dm1 ファイル内の物理モデル
  • 別の ER/Studio Data Architect データ モデルの論理モデル
  • 別の ER/Studio Data Architect データ モデルの物理モデル

物理モデルは、次のモデルと比較およびマージできます。

  • 同じデータ モデルの論理モデル
  • DBMS プラットフォーム(およびバージョン)が同じである、同じデータ モデルの別の物理モデル
  • 別の ER/Studio Data Architect データ モデルの論理モデル
  • DBMS プラットフォーム(およびバージョン)が同じである、別の ER/Studio Data Architect データ モデルの物理モデル
  • 稼働中のデータベース
  • SQL ファイル

2 つの物理モデルを比較する場合は、プラットフォームとバージョンが同じであることを確認してください(Oracle 11g と Oralce 11g など)。同じでない場合は、論理比較しかできません。Oracle と SQL Server を比較する場合は、物理データベースをリバース エンジニアリングした論理モデルと比較し、論理モデルの変更を元の物理モデルに反映する必要があります。

サブモデルは、次のモデルと比較およびマージできます。

  • 同じデータ モデルのサブモデル
  • 同じデータ モデルの物理モデル
  • SQL ファイル

このユーティリティでは、さまざまな対象を指定できるため、情報のマージについても複数の方法がサポートされます。たとえば、比較とマージ ユーティリティでは、次のように情報をマージできます。

  • 現在のモデルから有効な対象モデルへマージ
  • 有効な対象モデルから現在のモデルへマージ
  • ソースと有効な対象モデルの間で同時に双方向マージ

Notepad blue icon 2.pngメモ: SQL Server 2005 では、オブジェクトの所有権はスキーマにあります。スキーマはユーザーと似た動作をしますが、ユーザーである必要はありません。スキーマはエクスプローラ ツリーには明示的に表示されず、CREATE SCHEMA DDL 機能も存在しません。リバース エンジニアリング ウィザードおよび比較とマージ ユーティリティでは、SQL Server 2005 の物理モデルの場合、オブジェクト エディタの[所有者]フィールドにスキーマ名が表示されます。このフィールドはスキーマ一覧になります。

[データ リネージ]タブで、新規データ ソースをインポートしてダイアグラムに追加する際にも、比較とマージ ユーティリティ機能のサブセットが使用されます。

Notepad blue icon 2.pngメモ: 先ほど述べたように、比較とマージ時に生成された ALTER コードにより、テーブルの名前が変更されて構造が更新された新しいテーブルが作成され、古い(名前が変更された)テーブルのデータが新しいテーブルに読み込まれる場合があります。これは拡張 ALTER と呼ばれるもので、たとえば、テーブル末尾以外の場所にカラムを追加したり、子テーブルを選択したけれども[親テーブルのリバース エンジニアリング]オプションをオンにしなかった場合などに発生します。

Compare merge option.png

モデルおよびサブモデルの比較

比較とマージ ユーティリティを使用すると、2 つのモデル、サブモデル、またはサブモデルを含むモデルを比較して、見つかった相違点を必要に応じてマージすることができます。相違点のレポートも作成できます。さらに、ソース モデルと他のモデルをシンクロしたり、ソース モデルまたは対象モデルのいずれかを更新することができます。

  1. [ファイル|開く]をクリックして、ソースのデータ モデルまたはサブモデルを表示します。
    Magic Wand Icon.pngヒント: ユーティリティを開く前にデータ モデル上のダイアグラム オブジェクトを選択しておくと、時間を節約できます。あらかじめ選択されたオブジェクトは、ユーティリティのオブジェクト ツリーに明示的に表示されます。
  2. モデル エクスプローラ上で、比較のソースに指定するモデルまたはサブモデルをクリックします。
  3. [モデル|比較とマージ...をクリックします。
  4. 指示に従い、比較とマージ ユーティリティのステップを進めます。

Notepad blue icon 2.pngメモ: 比較/マージの対象モデルが物理データ モデル、またはSQLファイルのインポートによるデータ モデルである場合(既存データベースのリバース エンジニアリングで作成されたモデルは除く)、正しい ALTER SQL を生成するために、データ モデルとデータベースの間の制約名をシンクロする必要があります。対象モデル(物理インポートまたは SQL インポート)の制約名がデータベースと同じでない場合、正しい SQL が生成されないことがあります。

次に、一部のオプションについて補足説明します。比較とマージ ユーティリティ内のステップとオプションの数は、実行する比較とマージの種類、および選択したソース モデルと対象モデルによって異なることに注意してください。

ステップ 1

  • 比較する対象を選択します。
    • [DM1 ファイル内のモデルと比較]: データ モデルを、同じ DM1 ファイル内の別のデータ モデルまたはサブモデルと比較します。
    • [異なる DM1 ファイル内のモデルと比較]: データ モデルを、別の DM1 ファイルと比較します。
    • [リポジトリ ベースの DM1 ファイルと比較]: データ モデルを、ER/Studio Repository で管理される別のデータ モデルまたは名前付きリリースと比較します。このオプションを選択すると、[Repository 操作のステータス]ダイアログ ボックスと[Repository から取得]ダイアログ ボックスが開き、そこで比較対象にするダイアグラムを選択することができます。この処理では、[Repository オプション]([Repository|オプション...])に定義されている現在の Repository サーバーに接続します。[比較とマージ]ウィザードでは、Repository のダイアグラムを自動的に取得します。
    • [SQL ファイルと比較]: 現在選択しているモデルが物理データ モデルの場合は、このオプションが有効になっています。選択した SQL ファイルは、現在のモデルと同じデータベース プラットフォームのものでなければなりません。このオプションを選択すると、ER/Studio Data Architect によって SQL ファイルがインポートされ、現在のモデルと比較されます。
    • [データベースと比較]: このオプションを選択すると、次のステップに対象データベースと接続方法を選択する画面が表示されます。接続方法は次のいずれかを選択します。
      • [ODBC]
      • [ネイティブ/直接接続]
      • [Team Server データソース]

[ODBC]または[ネイティブ/直接接続]のオプションを選択した場合には、このウィザードで指定した設定を使用して、ER/Studio TS に新しいデータ ソース定義を作成することもできます。

ODBC およびネイティブ/直接接続の詳細(トラブルシューティング情報を含む)は、ER/Studio Repository インストールおよび管理ガイドの「データベースのソースとターゲットへの接続」を参照してください。ER/Studio TS データ ソースの詳細は、「Repository および ER/Studio TS へのログインとログアウト」を参照してください。

  • [クイック ウィザード オプション]: 比較のクイック ウィザード データは、*.rvo ファイルに保存されます。ウィザードでのクイック ウィザード オプションの使い方は、「クイック ウィザード設定の保存と使用」を参照してください。

ステップ 2

このステップで選択可能なモデルは、前のステップで選択した対象タイプによって異なります。ソース モデルと比較するモデルまたはサブモデルを 1 つクリックします。

ステップ 3

  • 比較オプション

[オフライン ALTER SQL 生成オプション]: このオプションを利用できるのは、物理データ モデルを SQL ファイルまたはデータベースと比較する際に、ユーティリティのステップ 1 で SQL の生成オプションを選択し、[解決]カラムの「無視」(デフォルト)のうち少なくとも 1 つを変更した場合です。対象モデルがデータベースの場合、ALTER SQL を生成するか、またはマージの実行時に対象モデルを更新することができます。ALTER SQL の生成を選択すると、追加のステップが表示され、スクリプト ファイルの保存場所、[再構築オプション]、および[プリ/ポスト SQL オプション]を指定できます。

Notepad blue icon 2.pngメモ: 物理モデルが最初にリバース エンジニアリングされたものでない場合、正しい ALTER SQL を生成するために、モデルとデータベース間の制約名のシンクロが必要な場合があります。対象モデル(物理モデルまたは SQL インポート モデル)の制約名がデータベースと同じでない場合、正しい ALTER SQL が生成されません。

  • オブジェクト

上位レベルのオブジェクトを選択または削除すると、すべての関連するサブオブジェクトが選択または削除されます。たとえば、カラム制約を削除すると、名前および値サブオブジェクトも削除されます。

Notepad blue icon 2.pngメモ: Oracle データベースでは、[リレーションシップ]または[インデックス]ノードの[無効]チェック ボックスをオフにすると、主キーおよび外部キーの無効な属性が比較とマージ ユーティリティで無視されます。

[ソース カラムのマッピング プロパティ]: これらのオプションは、テーブル エディタの[データ リネージ]タブで作成されたマッピングを参照します。詳細は、「データの抽出、変換、読み込みの文書化」を参照してください。

  • 全般オプション
    • [選択したオブジェクトのみマージする]: 比較ウィザードを呼び出す前にモデルで選択したオブジェクトだけが、オブジェクトの選択ステップ(ステップ 4)で選択されます。これは、モデルの一部だけを比較する際に役立ちます。
    • [ネイティブ属性と外部属性を一致させる]
    • [非正規化マッピングのベース テーブルを表示します。]: 2 つの物理モデルを比較したときに、非正規化マップのベース テーブルを結果ページ(ユーティリティの最後の画面)に表示します。ベース テーブルは、非正規化マップに含まれる、マッピング前の状態を表した表です。これらのテーブルは、モデル エクスプローラの[非正規化マッピング]ノードを展開することにより、モデルで表示することができます。これらのオブジェクトは実際にはモデル ウィンドウには表示されませんが、非正規化マップを元に戻すことで、表示することができます。
      比較とマージ ユーティリティの結果画面に、無視されたカラムが斜体で表示されます。無視されたカラムを結果画面に表示することで、非正規化マップを物理モデルから別のモデルへマージすることになるので、ターゲット側に加えた変更を保存できます。
      非正規化オブジェクトは順番にマージされます。基本オブジェクトは最初にターゲットにマージされ、続いて非正規化マッピングが行われます。解決を[無視]に設定することで、非正規化マッピングが作成された後も変更を保存できます。
    • [新しく作成されるテーブルおよびカラムのオプション]: テーブルとカラムの定義、ノート、およびアタッチメントを除外します。これらのオプションは、すべてのモデル タイプでの比較に使用できます。オブジェクトが対象モデルに存在せず、マージによって新規オブジェクトが作成される場合、定義、ノート、およびアタッチメントは、これらの新規オブジェクトには含まれません。このオプションは、モデル間で個別の定義、ノート、およびアタッチメントが使用されている場合に役立ちます。
    • [主キーをユニーク インデックスとして比較]: 比較対象がデータベースの場合、通常、モデル内の主キー インデックスは、主キー制約として処理されます。このオプションをオンにすると、主キー インデックスは制約ではなくインデックスとして処理されます。データベースの主キーが、制約ではなくユニーク インデックスで制御されている場合は、このオプションを使用してください。

ステップ4 - モデル オブジェクトの選択

  • [比較対象のモデル オブジェクトを指定してください。]: このステップで使用できるタブは、比較用に選択したモデルのデータベース プラットフォームによって異なります。各タブに表示されるデータベース オブジェクトの一覧は、ソースおよび対象モデルで利用できるオブジェクトから構成されます。これらのタブで、特定のオブジェクトのみを比較するように制限したり、すべてのオブジェクト タイプを比較するように選択することができます。

Notepad blue icon 2.pngメモ: オブジェクト ツリーの任意の場所を右クリックし、ショートカット メニューを使用して、すべてのオブジェクトを選択または選択解除できます。所有者が設定されているオブジェクトに対して、所有者名の表示/非表示を切り替えることもできます。

ステップ 5 - 結果

  • 現在のモデルとターゲット モデルの表示グリッド: [現在のモデル]および[ターゲット モデル]カラムの間に、[解決]カラムが表示されます。デフォルトでは、マージの判断は[無視]に設定されています。[解決]カラムをクリックすると、選択可能な解決方法の一覧が表示されます。解決方法を変更するには、一覧をクリックして新しい解決方法を選択します。あるオブジェクトのデフォルトの解決方法を変更すると、そのオブジェクトに依存するプロパティやオブジェクトの解決方法も自動的に更新されます。カテゴリ フォルダ(テーブルなど)の[解決]カラムをクリックすると、そのオブジェクト カテゴリに含まれるすべてのオブジェクトの解決方法が一括して変更されます。Ctrl キーを使用して複数のアイテムを選択してから右クリックすると、選択したアイテムの解決方法を一括して指定できます。
  • オブジェクトを強制的に一致させる比較とマージの実行中に、特定の規準を満たさないためにオブジェクト間の一致に失敗した場合でも、それらのオブジェクトを強制的に一致させることができます。このような場合、システムでこれらのオブジェクトを強制的に一致させることができます。[現在のモデル]ツリーのオブジェクトを選択して、次に[ターゲット モデル]ツリーのオブジェクトを右クリックし、ショートカット メニューの[オブジェクトの一致]をクリックします。詳細は、「オブジェクトの強制的一致」を参照してください。
  • [親テーブルのリバース エンジニアリング]: 選択したオブジェクトの親テーブルをリバース エンジニアリングして、参照制約を有効にします。
  • [SQL の相違点]: [SQL の相違点]ユーティリティを有効にするには、定義、ノート、または DDL のような長いテキスト フィールドの相違点を選択します。[SQL の相違点]をクリックすると、2 つのモデル間の SQL の相違点が表示されます。この機能は相違点を確認するだけです。比較とマージ ユーティリティの結果ページで相違点を解決できます。

オブジェクトの強制的一致

比較とマージの実行中に、特定の規準を満たさないためにオブジェクト間の一致に失敗した場合でも、それらのオブジェクトを強制的に一致させることができます。異なるオブジェクトを強制的に一致させるには次の手順に従います。

ダイアグラムの新規作成と主キー「A」を含む「エンティティ1」という名前のエンティティの追加

  1. [エンティティ1]の所有者に「JimB」を指定します。
    Magic Wand Icon.pngヒント: 所有者プロパティは、エンティティ/テーブル エディタの右上端にある[所有者]ボックスで指定できます。
  2. 「エンティティ2」という名前のエンティティを追加して、[エンティティ1]と[エンティティ2]の間に非依存型の必須リレーションシップを作成します。
    Entities.png
  3. 論理モデルから物理モデルを生成します。
    • モデル エクスプローラで論理モデルを右クリックし、ショートカット メニューの[物理モデルの生成]をクリックします。
  4. 物理モデルで、[エンティティ1]の所有者に「CathyT」を指定します。
  5. モデル エクスプローラで物理モデルを右クリックし、ショートカット メニューの[比較とマージ...]をクリックします。
  6. ステップ 1で[DM1ファイル内のモデルと比較]を選択し、[次へ]をクリックしてウィザードのステップ 5 まで進みます。
    CompareP5.png
    物理モデルの[エンティティ1]と[エンティティ2]が、論理モデルの対応するエンティティと関連付けられていないことが分かります。これは、論理モデルと物理モデルで[エンティティ1]の所有者が異なるためです。
    CompareP52.png
  7. [現在のモデル]および[ターゲット モデル]ツリーの[エンティティ2]を展開してから、[リレーションシップ]を展開します。
    CompareP53.png
    [エンティティ2]内のリレーションシップが一致していないことが分かります。親テーブルが一致していないためです。これは、外部キー カラムも一致していないことを意味します。
    CompareP54.png
    このモデルを作成したユーザーは、[エンティティ1]が論理モデルと物理モデルで同じものだと分かっているので、比較とマージ ユーティリティで[エンティティ1]を手動で一致させてから、引き続き論理モデルを更新していくことができます。
  8. 論理モデルと物理モデルの[エンティティ1]を強制的に一致させるには、はじめに[現在のモデル]ツリーで[エンティティ1]を選択して、次に[ターゲット モデル]ツリーの[エンティティ1]を右クリックし、ショートカット メニューの[オブジェクトの一致]をクリックします。
    CompareP55.png
  9. これで親テーブルが一致しました。次にリレーションシップと外部キー カラムも一致させることができます。

Notepad blue icon 2.pngメモ:

  • 先にリレーションシップを一致させてから、カラムを一致させる必要があります。
  • リレーションシップおよびカラムを一致させるには、先にそれらを展開してください。
CompareP56.png
  • 同一オブジェクトとして検出されているオブジェクトを異なるオブジェクトをとしてマージするには、対象のオブジェクトを右クリックし、ショートカット メニューの[オブジェクトの不一致]をクリックします。

オフライン DBMS の更新

物理モデルと他の SQL ファイルまたはデータベースの比較結果から ALTER SQL を作成して、後から DBMS の更新を実行できます。

  1. モデル エクスプローラで物理モデルを右クリックし、ショートカット メニューの[比較とマージ]をクリックします。
  2. ユーティリティのステップ 1 で、[SQLファイルと比較]または[データベースと比較]を選択して、[ターゲット モデルへの変更点を .sql に生成]を選択します。
  3. 後続のステップに進みます。
  4. 比較結果に表示された相違点を解決するには、解決するオブジェクトの横にある[解決]カラムをクリックします。[無視]を選択すると、相違点は無視されます。オブジェクトがソース モデルと対象モデルの両方に存在する場合、[ターゲットへマージ]または[現在へマージ]を選択できます。 オブジェクトがソース モデルまたは対象モデルのいずれかに存在しない場合は、それぞれ[ターゲットから削除]または[現在から削除]を選択できます。[解決]カラムの設定が完了したら、[次へ]をクリックします。
    • ALTER SQL を生成するには、見つかった相違点のうち少なくとも 1 つを対象の SQL またはデータベースにマージするように選択する必要があります。
  5. ユーティリティの最終ステップで、SQL スクリプトのファイル名を指定し、必要に応じて[再構築オプション]と[プリ/ポスト SQL オプション]を指定します。
  6. [完了]をクリックします。
  7. ALTER SQL を実行して、オフライン DBMS を更新します。

モデルまたはサブモデルの更新

2 つのモデルまたはサブモデルを比較した後に、現在のダイアグラム内のモデル、または他の .DM1 ファイル内のモデルを更新することができます。更新されるモデルは、対象モデルまたはソース モデルのいずれか一方です。また、いくつかの変更点を対象モデルに、残りの変更点をソース モデルにマージするというやり方で、ソース モデルと対象モデルの両方を更新することもできます。[完了]をクリックするまで、変更点はモデルに適用されません。

Notepad blue icon 2.pngメモ: 2 つのサブモデルをシンクロする際に、対象モデルにリレーションシップが存在しない場合、最初に比較とマージ ユーティリティを使用して、ソース サブモデルから対象サブモデルにリレーションシップを追加する必要があります。その後、サブモデル シンクロ ユーティリティを使用して 2 つのサブモデルをシンクロします。

  1. モデル エクスプローラでモデルを右クリックし、ショートカット メニューの[比較とマージ]をクリックします。
  2. ユーティリティの最初のステップで、比較の対象ファイル(開いているファイルの他のモデル、または他のファイルのモデル)を選択します。
  3. 画面の指示に従い、最終ステップまで進みます。
  4. これらのステップについての詳細は、「モデルおよびサブモデルの比較」を参照してください。
  5. 比較結果に表示された相違点を解決するには、解決するオブジェクトの横にある[解決]カラムをクリックします。[無視]を選択すると、相違点は無視されます。オブジェクトがソース モデルと対象モデルの両方に存在する場合、[ターゲットへマージ]または[現在へマージ]を選択できます。 オブジェクトがソース モデルまたは対象モデルのいずれかに存在しない場合は、それぞれ[ターゲットから削除]または[現在から削除]を選択できます。
    • デフォルトでは、[解決]カラムは[無視]に設定されています。解決方法を変更しない場合、比較されている 2 つのモデルは[完了]をクリックしても更新されません。
  6. 必要な解決方法をすべて指定したら、[完了]をクリックします。指定された解決方法に基づき、ソース モデルと対象モデルが更新されます。

今すぐモデルを変更しない場合は、[キャンセル]をクリックします。[比較とマージ]を後で再実行して、その時に変更を反映できます。

モデル相違点の解決とレポート作成

比較とマージ ユーティリティの最終ステップには、モデルの比較で見つかった相違点が表示されます。画面の下部にあるオプションを使用して、デフォルトの表示形式を変更できます。

  1. モデルおよびサブモデルの比較」の手順に従います。
  2. 後続のステップに進みます。これらのステップについての詳細は、「モデルおよびサブモデルの比較」を参照してください。
  3. 比較結果に表示された相違点を解決するには、解決するオブジェクトの横にある[解決]カラムをクリックします。[無視]を選択すると、相違点は無視されます。オブジェクトがソース モデルと対象モデルの両方に存在する場合、[ターゲットへマージ]または[現在へマージ]を選択できます。オブジェクトがソース モデルまたは対象モデルのいずれかに存在しない場合は、それぞれ[ターゲットから削除]または[現在から削除]を選択できます。
  4. デフォルトでは、[解決]カラムは[無視]に設定されています。解決方法を変更しない場合、比較されている 2 つのモデルは[完了]をクリックしても更新されません。
  5. 相違点と指定した解決方法についてのレポートを作成するには、[フィルタされた結果のレポート]をクリックします。
  6. [マージ レポート]ダイアログ ボックスの[レポート タイプ]で、[RTF レポート]または[HTML レポート]を選択します。
  7. [レポート タイトル]を入力し、レポートのパスとファイル名を[レポート ファイル名]に直接入力するか、または[参照]をクリックしてファイルの保存場所と名前を指定します。
  8. [OK]をクリックすると、レポートが作成されます。
  9. 必要な解決方法をすべて指定したら、[完了]をクリックします。指定された解決方法に基づき、ソース モデルと対象モデルが更新されます。

今すぐモデルを変更しない場合は、[キャンセル]をクリックします。[比較とマージ]を後で再実行して、その時に変更を反映できます。

関連項目