ルールを使用したデータ整合性の向上
ER Studio DA の使用 への移動
ルールを使用すると、属性やカラムに設定されたデータを検証して、データの整合性を向上させることができます。たとえば、属性またはカラムのデータ値を 0 以上と指定する「NotLessThanZero」というルールを定義したとします。このルールを設定したテーブル カラムでは、負の値を指定するトランザクションは拒否されます。ルールは、CHECK 制約のように動作する独立したデータベース オブジェクトですが、データ モデル全体で再利用することができます。
データ ディクショナリにルールを作成すると、デフォルトと同様に、頻繁に使用されるルールを管理および再利用できます。ルールは、ドメインやユーザー定義データ型、属性、カラムなどのオブジェクトにバインドできます。ルールは、[ルール]フォルダで作成する以外に、ドメインのプロパティとして管理することもできます。
例
たとえば、多数のカラムに適用する包括的な制約がある場合は、それぞれのカラムにルールを設定するのではなく、ルールを設定したドメインを作成すると便利です。テーブルのカラムを直接指定する代わりに、プレース ホルダを使用できます。「@var」変数を使用して、カラム名を置き換えます。ER/Studio では、「@var」変数を使用すると、データ ディクショナリのルールがカラムにバインドされるときに、カラム名を返します。
たとえば、サンプル モデルの「自動車部品販売.dm1」には、以下の構文のルールが含まれています。
UPPER(@var) in ('Y', 'N')
このルールは、物理モデルの[DEPARTMENT]テーブルの "ManagerCount" カラムにバインドされています。
「@var」変数は、以下のように展開されます。
UPPER(CURRENT_CUSTOMER) in ('Y', 'N')
テーブル エディタのカラム編集領域の[ルール/制約]タブでは、以下のように、展開される前の式が表示されます。
データ ディクショナリのルールを作成および編集する
- モデル エクスプローラの[データ ディクショナリ]タブをクリックします。
- [データ ディクショナリ]タブで[ルール]フォルダを右クリックし、ショートカット メニューの[ルールの新規作成]をクリックします。
- [ルールの追加]または[ルール定義の編集]ダイアログ ボックスで必要な設定を行い、[OK]をクリックして変更を反映します。
- 作成したルールを編集するには、ルールをダブルクリックして、[ルール定義の編集]ダイアログ ボックスを開きます。
次に、一部のオプションについて補足説明します。
[ルール式]タブ
ルールを指定します。ルールを使用する対象データベースがサポートする構文で、式を追加する必要があります。
[アタッチメントのバインド]タブ
アタッチメント(外部情報)をルールにバインドします。また、オブジェクトからアタッチメントを削除したり、アタッチメントのバインドのデフォルト値を上書きしたり、バインドされたアタッチメントの位置を変更することもできます。選択したアタッチメントのグリッド(画面の右側)に移動したアタッチメントの値をオーバーライドするには、対象となるアタッチメントの[値]フィールドをダブルクリックします。アタッチメントのデータ型に応じて、[上書き値エディタ]またはリスト ボックスが表示されます。アタッチメントは[データ ディクショナリ]タブの[アタッチメント]フォルダで作成されます。その際、アタッチメント タイプ エディタの[アタッチメント タイプの使用]タブで[変換]チェック ボックスをオンにする必要があります。そうでない場合、変換エディタの[アタッチメント]タブにそのアタッチメントが表示されません。詳細は、「データ モデルへの外部ドキュメントの関連付け」を参照してください。
[バインド情報]タブ
作成したルールをバインドするオブジェクト クラスおよび特定のオブジェクトを選択します。この設定は、ルールをバインドできる各オブジェクトのエディタの[ルール/制約]タブで上書きできます。