モデルとデータベースの同期

<< 目次を表示 >>

ページ位置:  その他の記法のモデリング > データベースの設計・生成と読み込み > データベースモデリング > データベースビルダー >

モデルとデータベースの同期

データベースの比較タブを利用すると、現在のモデルと実際のデータベースを比較してその差分を表示し、必要に応じて差分をどちらかの方向に同期できます。実際のデータベースに「プッシュ」する差分は「Alter DDL」文を利用して実行され、実際のデータベースから読み込む差分はモデルを直接更新します。

 

データベースの比較機能では、データベースビルダーが実際のデータベースへの有効な接続を持っていることが必要です。このデータベース接続は、この機能の他、スクラッチパッド・DDLの実行機能でも利用されます。

 

 

利用手順:

データベースビルダー内の「データベースの比較」タブを利用します。

リボン

コード > データベース > データベースビルダー > データベースの比較

 

 

 

データベースの比較タブが開き、比較した結果が表示されます。

 

項目

説明

上部の一覧

大文字小文字を区別

この項目にチェックを入れると、名前の大文字小文字を区別して比較します。

別名で表示

この項目にチェックを入れると、モデル側の項目について、別名が設定されている場合には別名で表示します。

初期化

アクションの項目をすべて「No Action」に戻します。

すべて読込

アクションの項目をすべて「<===」に変更します。

すべて同期に設定

アクションの項目をすべて「===>」に変更します。

差分

モデルと実際のデータベースとの間に存在する差分を一覧で表示します。一覧で項目を選択すると、コンポーネントの一覧を表示します。

(このページ下部の説明もご覧ください。)

下部の一覧

コンポーネント

差分の一覧で選択した項目について、プロパティの一覧を表示します。

(このページ下部の説明もご覧ください。)

初期化

アクションの項目をすべて「No Action」に戻します。

データベースから読込

すべての内容を読み込み、モデルを上書きします。

DLLの生成

すべての内容についてDDLを生成します。

生成したDDLは「DDLの実行」タブに表示されますので、そのまま実行できます。

 

 

比較結果の一覧(上部)

項目

説明

EA

差分が検知された、モデル内の要素が表示されます。空欄の場合には、実際のデータベースには存在するがモデル内には存在しないことを示しています。

アクション

すべての項目の既定値は'No Action'に設定されています。ドロップダウンリストで、他のアクションに変更できます。選択できる内容は、差分の状況によって変わります。

 

一致する要素を発見した場合の選択肢

  • No Action - 差分に対してなにも処理を行いません。
  • ===> - モデルの内容をデータベースに反映します。
  • <=== - データベースの内容をモデルに反映します。
  • Customize - アクションの詳細を下部のパネルにて指定します。
  • Unpair - Enterprise Architectによって結びつけられた要素が、実際には異なる要素(=比較対象ではない)ことを指定します。

 

一致する要素がない場合の選択肢

  • Create <要素名> - 対象の要素を作成し、状況を一致させます。
  • Delete <要素名> - 対象の要素をモデルから削除し、状況を一致させます。
  • Drop <要素名> - 対象の要素をデータベースから削除し、状況を一致させます。
  • Pair with <要素名> - 一致する要素を明示的に指定します。

 

個々で選択した内容に応じて、下部のコンポーネントの一覧の 'Action'欄の内容が自動的に更新されます。

 

一例として、データベースのあるテーブルの列に 'Address1'が存在しモデル側には存在しない場合、アクションを '===>' に設定すると、モデル側を正として列を削除することになるので、'Item Action'の欄は 'Drop Address1'になり、列が削除されます。

データベース

データベース側の要素名です。この内容が空の場合には、データベース側に対応する要素がないことを示しています。

項目数

検知した差分の個数を示します。

 

 

コンポーネントの一覧(下部)

項目

説明

項目

差分を検知した項目の名前です。列や制約など、項目の種類ごとにグループ化されて表示されます。

EA

モデル内での値です。空欄の場合、モデル側に該当する項目が存在しないことを示しています。

アクション

すべての項目の既定値は、上部の一覧で指定されたアクションに設定されています。ドロップダウンリストで、他のアクションに変更できます。選択できる内容は、差分の状況によって変わります。

 

  • No Action - 差分に対してなにも処理を行いません。
  • ===> - モデルの内容をデータベースに反映します。
  • <=== - データベースの内容をモデルに反映します。
  • Add <項目名> - 不足している内容を追加します。
  • Delete <項目名> - 対象の要素をモデルから削除し、状況を一致させます。
  • Drop <項目名> - 対象の要素をデータベースから削除し、状況を一致させます。

データベース

データベース側の要素名です。この内容が空の場合には、データベース側に対応する要素がないことを示しています。

項目数

検知した差分の個数を示します。

 

 

データベースの比較に関する作業

比較処理を実行すると、Enterprise Architectはモデルの内容と実際のデータベースの内容と両方を確認し、一致する項目を探索します。一致するかどうかの判断は名前を利用しています。

 

一致する項目が見つかると、EAとデータベースの両方の欄にその名前が表示されます。また、アクションは'No Action'に設定されます。Countの列は、全体として見つかった差分の数を示しています。

 

一致する項目が見つからない場合には、対象の要素の名前は存在する側の欄('EA' か 'データベース')に表示されます。アクションの欄は、現状を維持する内容に設定されます。もし、組み合わせを明示的に指定した場合には、アクションは'====>' に設定されます。

 

もし、要素の単位でのアクションを指定した場合には、その要素に関係する列や制約などのアクションも自動的に更新されます。ただし、アクションの種類として'Customize'を指定した場合には、それぞれのアクションを明示的に指定する必要があります。

 

例えば、列 (tax_amount) と制約 (ck_customersordersitems_discount) はテーブル 'public.customers_order_items' 内で名前が変更されます。下の画像がその例です。

 

 

この画像では、1つのテーブル'public.customers_order_items'のみに差分が見つかっています。この項目を選択すると、コンポーネントの一覧に詳細が表示されます。この一覧の内容から、データモデルが持つ列 (tax_amount2) とチェック制約 (ck_customerordersitems_discount1) が実際のデータベースには存在していないことがわかります。逆に、実際のデータベースの列 (tax_amount) とチェック制約 (ck_customerordersitems_discount) がデータモデルには存在しません。

 

 

比較のオプション

比較機能の実行では、いくつかのオプションを指定して実行できます。オプションは、比較対象となる項目を指定できます。

 

以下の表は、オプションによって変わる比較対象を示しています。

 

 

すべての要素, Owner

項目

説明

Owner

オーナ情報を比較するかどうかを指定します。

 

テーブルに関するオプション

項目

説明

Tables

この項目を選択すると、テーブルに関する比較設定項目をまとめてON/OFFできます。

Table - Extended Properties

テーブルごとの追加の情報(DBバージョンやテーブルスペース) を比較するかどうかを指定します。

Table - Remarks

テーブルの注釈を比較するかどうかを指定します。

Columns

この項目を選択すると、列に関する比較設定項目をまとめてON/OFFできます。

Column - Type

列の型を比較するかどうかを指定します。

Column - Size

列の長さを比較するかどうかを指定します。

Column - Default Value

列の既定値を比較するかどうかを指定します。

Column - Position

列の位置を比較するかどうかを指定します。

Column - Not Null

列のNotNull制約を比較するかどうかを指定します。

Column - Auto Numbering

列が自動ナンバーに設定されているかどうかを比較するかどうかを指定します。

Column - Unmatched Columns

一致する項目がない場合に、比較結果に表示するかどうかを指定します。

多くの場合には、片側にのみ存在し、もう片方には存在しない場合が該当します。

Column - Extended Properties

列の追加の属性 (Unsigned や Zerofill など) を比較するかどうかを指定します。

Column - Remarks

列の注釈を比較するかどうかを指定します。

Constraints

この項目を選択すると、制約に関する比較設定項目をまとめてON/OFFできます。まとめて設定後、必要に応じて個別の項目のチェック状態を調整してください。

Constraint - Primary Keys

主キーを比較するかどうかを指定します。

Constraint - Foreign Keys

外部キーを比較するかどうかを指定します。

Constraint - Indexes

インデックスを比較するかどうかを指定します。

Constraint - Unique Constraints

一意制約を比較するかどうかを指定します。

Constraint - Check Constraints

チェック制約を比較するかどうかを指定します。

Constraint - Table Triggers

トリガーを比較するかどうかを指定します。

Constraint - Unmatched Constraints

一致する項目がない場合に、比較結果に表示するかどうかを指定します。

多くの場合には、片側にのみ存在し、もう片方には存在しない場合が該当します。

Constraints - Extended Properties

制約の追加の属性(Fill Factor や Clustered など) を比較するかどうかを指定します。

Constraints - Remarks

制約の注釈を比較するかどうかを指定します。

 

注意:

  • データベースの比較機能は、テーブル・ビュー・プロシージャ・ファンクション・シーケンスが対象です。
  • 比較する対象の内容の一部(例えば主キー制約の対象列)のみを置換したり削除したりできません。

 

 

参照: