カラムの作成と編集

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

属性およびカラムの作成と編集 への移動

属性は、エンティティに関連するプロパティや特性を表します。物理モデルでは、属性はテーブル カラムとして表されます。属性とカラムには、次の 2 種類があります。

  • 識別子:  エンティティ/テーブルの主キーの全体または一部であり、エンティティ/テーブルのインスタンスを識別するのに役立ちます。
  • 記述子:  非キー属性/カラム。正規化のルールに従い、属性/カラムが主キーの一部でない場合、それらは各エンティティ インスタンスを記述するためだけに使用します。

リレーションシップと共に属性定義を使用すると、ビジネス ルールを決定または実装できます。任意のエンティティの任意の属性に対して、有効な値セットを定義できます。たとえば、「給与」という属性に対して、従業員のサブセットに有効な給与範囲を定義できます。このような値のセットをドメインと呼びます。詳細は、「ユーザー データ型を使用したドメイン定義の一貫性の保証」を参照してください。

エンティティを注意深く定義するには、属性の定義を比較的単純にする必要があります。属性を最初にエンティティに追加するときには、適切な名前を付けるようにしてください。属性は、あるエンティティに固有のものになるか、または依存型/非依存型リレーションシップを通じて他のエンティティに移行することもできます。一貫性を保つために、ER Studio Data Architect ではエンティティ固有の属性のプロパティだけを編集できます。子エンティティの外部キーのプロパティを変更するには、親エンティティの属性を編集する必要があります。属性の命名ルールおよび変換の詳細は、「ベスト プラクティス」を参照してください。

カラム名を決定する際には、対象データベースの命名ルールを考慮してください。重要な考慮事項として、名前の桁数制限、予約語や禁止文字の使用回避などがあります。ほとんどのデータベースでは、名前の桁数は 30 文字または 18 文字までに制限されています。また、すべてのデータベースには予約語があり、名前に使用するには引用符で囲む必要があります。特定の文字(空白、*、+、% など)も、名前に使用することが禁止されています。

  1. モデル ウィンドウで、カラムを追加するテーブルをダブルクリックします。
  2. [テーブル エディタ][カラム]タブで、[追加]をクリックします。
  3. カラムの定義が完了したら、[OK]をクリックします。

以下では、[カラム]タブのオプションの設定について説明します。

メイン ページ

[データ型]タブ

[デフォルト]タブ

[定義]タブ

[ノート]タブ

[論物関連]タブ

[ユーザー定義マッピング]タブ

[参照値]タブ

[名前付け標準]タブ

[比較オプション]タブ

[LOB ストレージ]タブ

[データ リネージ]タブ

[セキュリティ情報]タブ

[アタッチメントのバインド]タブ

[データ移動ルール]タブ

メモ

メイン ページ

  • [ドメイン名]:  すべての定義済みドメインが一覧表示されます。利用可能な任意のドメインをカラムにバインドできます。
  • [属性名]:  デフォルトでは、属性名とカラム名は同一です。カラム名を変更するには、このボックスに新しい名前を入力してください。物理モデルを生成するときに、この名前が使用されます。
  • [カラム名]:  デフォルトでは、属性名とカラム名は同一です。カラム名を変更するには、このボックスに新しい名前を入力してください。物理モデルを生成するときに、この名前が使用されます。
  • [論理ロール名]:  このオプションを使用できるのは、論理モデル内に重複した外部キーが存在しており、[論理ロール名と物理ロール名のシンクロ]チェック ボックスがオフの場合のみです。子属性の名前が親属性と異なる場合に使用されます。論理モデルでは、論理ロール名と物理ロール名を区別します。物理モデルを生成するときには、物理ロール名が使用されます。
  • [キー属性を非表示]:  子テーブルのキーが非表示になります。一般に、主キー カラムを子テーブルに移行したくない場合に、主キー カラムの部分的な移行をサポートするために使用されます。ER Studio Data Architect では単独の外部キーを生成しません。ほとんどのデータベース システムでは、外部キーは子と同じカラム数を持つ必要があるためです。このオプションをオンにすると、子テーブルからカラムを取り除くことができます。外部キーの連鎖、DDL 生成、または比較操作の際に、どの子テーブルにも表示されなくなります。子テーブルの編集時には使用不可として表示されますが、再度、使用可能にすることができます。
  • [物理のみ]:  このオプションをオンにしたテーブルは、物理モデルの生成時にテーブルとして実装されません。また、論理モデルと物理モデルを比較する際にも無視されます。
  • [論理ロール名と物理ロール名のシンクロ]: 選択した属性が外部キーの場合に使用できます。このオプションは、エンティティ/テーブル エディタ、オン ダイアグラム編集、およびモデル エクスプローラで名前の変更を行う際に影響します。外部キー 属性/カラムのロール名を変更して、同じエンティティ/テーブル内にある別の属性/カラムと同じ名前にすることができます。編集を終了すると、重複した名前は一意化されます。
  • [主キー]:  インデックス作成用の主キーとしてカラムを追加します。

[データ型]タブ

  • データ型の一覧ボックス: 一覧から適切なデータ型を選択してください。表示されるデータ型の一覧は、選択した対象データベースによって異なります。以下に、一部のデータ型について補足説明します。
  • [ROWVERSION]データ型: データベースで自動的に生成され、一意な 2 進数を表すデータ型です。サイズが 8 バイトの増分値であり、テーブル行のバージョンを記録するために使用されます。rowversion カラムは各テーブルに 1 つだけ含めることができます。ROWVERSION カラムのある行が更新または挿入されるたびに、増加したデータベースの ROWVERSION 値が rowversion カラムに挿入されます。このような特徴から、ROWVERSION カラムはキーの候補(特に主キー)には適しません。行を更新すると ROWVERSION 値が変更され、キー値も変更されるためです。

Notepad blue icon 2.pngメモ: rowversion は timestamp のシノニムです。ER Studio Data Architect で ROWVERSION をデータ型として指定して MS SQL Server 2008 に生成すると、作成されるカラムは TIMESTAMP になります。

  • [TIMESTAMP]データ型: DB2 LUW 9.x、DB2 z/OS 9.x、および 10.x の場合: カラムで NULL が許可されない場合(NOT NULL)に[生成カラム]を選択したときに、TIMESTAMP[デフォルトで生成]を生成するオプションが使用できるようになりました。

Teradata 13.x および 14.x の場合: PERIOD オプションはタイムスタンプ、時間日付で使用できるようになりました。

これらのオプションを選択したときに生成される SQL の例は次のとおりです。

HireDate TIMESTAMP NOT NULL GENERATED BY DEFAULT FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP

  • INTERVAL データ型: Teradata データベースの場合、INTERVAL データ型にはデータ型のユニットを指定するオプションが追加されました。
  • [NULL を許可]:  [NULL を許可]コントロールは、カラム指定のプラットフォーム固有の NULL 設定オプション/引数に対応します。
  • NUMBER データ型: NUMBER または NUMBER(*) では、桁数と精度を * に設定する必要があります。DDL の生成時には、桁数 0 は * に変換されます。

Oracle(8 以降)プラットフォームに対して、[NULL を許可]の値に[いいえ]が選択された場合、インライン、名前付き NOT NULL 制約を指定するカラム定義に [制約名]が表示されます。

  • [バインドされたデータを上書き]:  属性単位でデータ型を上書きします(サポートするデータベース: SQL Server、Sybase、IBM DB2 for LUW、および IBM DB2 for OS/390)。同一ドメインへのバインドを維持する際の例外処理に使用します。たとえば、2 つの異なる DBMS プラットフォームの両方に VARCHAR ドメインがあるとします。この文字型のドメインは、主に Oracle で使用されます。このドメインのデータ型を VARCHAR に指定します(Oracle では VARCHAR2 となります)。このオプションを使用すると、DB2 モデルを作成して、このドメインのデータ型を CHAR として実装することができます。DB2 のカラムとドメインとの間のバインドを維持したまま、ドメインの実装をカスタマイズして、特定のプラットフォームに対応させることができます。
  • [Identity プロパティ]:  numeric データ型で、NULL が許可されず、そのデータ型が Identity プロパティをサポートする場合に使用できます。[Identity カラム]チェック ボックスをオンにして、[シード]および[インクリメント]の値を入力します。シードおよびインクリメントの値は、テーブルの各行のシーケンス番号を自動生成するために使用されます。シード値が開始番号となり、インクリメント値ごとに増加します。デフォルトのシード値とインクリメント値はともに1ですが、これらの値は変更可能です。
  • [仮想]:  Oracle 11g 以降のプラットフォームで使用可能です。Oracle の説明による仮想カラムの要件は次のとおりです。これらの制限は、ER/Studio によるものではありません。

カラムの制約

カラムは、次の条件を満たした場合にのみ仮想と指定することができます。

  • カラムを含むテーブルがインデックスで整理された、外部、オブジェクト、クラスタもしくは一時テーブルでない場合。
  • 仮想カラムには Oracle 提供のデータ型(空間型、XML 型、Any 型、メディア型)、ユーザー定義型、オブジェクト タイプ、LONG、LOB、BLOB、RAW、REF または BFILE は使用できません。

式に関する制約

カラムを仮想に指定するには、[仮想]オプションを選択する必要があり、仮想の右側の式フィールドで (isnull('AW'+[dbo].[ufnLeadingZeros]([CustomerID]),'')) などの式を指定する必要があります。仮想カラムで使用される式は、次の制約を満たす必要があります。

  • 別の仮想カラムの名前を参照できません。
  • 同じテーブル内の他のカラムのみを参照できます。
  • 明確なユーザー定義関数は参照できますが、仮想カラムをパーティション キー カラムに使用することはできません。
  • 式の結果はスカラー値になる必要があります。

[仮想]オプションを選択した場合、[データ型を表示]を選択して、そのカラムのデータ型を指定することができます。[データ型を表示]を選択しないと、データ型一覧である[幅][精度][NULLを許可]オプション、また[Identity プロパティ]は使用できなくなります。これらのオプションは、[データ型を表示]を選択した場合には使用できますが、要件が満たされていない場合、[Identity プロパティ]オプションが使用できないことがあります。上記の[Identity プロパティ]を参照してください。

  • [LOB セグメントの編集]:  カラムに指定したデータ型が BLOBCLOB、または NCLOB の場合、[LOB セグメントの編集]をクリックして LOB ストレージを定義できます。詳細は、「Oracle の LOB セグメント ストレージ オプション」を参照してください。
  • [文字セット]:  Teradata プラットフォームで、カラムに指定したデータ型が CHAR、VARCHAR、または CLOB の場合、データ型の文字セットを指定できます。一覧をクリックして、適切なデータ型を選択してください。CHAR および VARCHAR データ型では、DEFAULT、LATIN、UNICODE、GRAPHIC、KANJI1、および KANJISIS 文字セットをサポートします。CLOB データ型では、LATIN および UNICODE 文字セットのみをサポートします。
  • [CASESPECIFIC]:  Teradata プラットフォームで、カラムに指定したデータ型が CHAR または VARCHAR の場合、CASESPECIFIC オプションを選択できます。これは、システムが文字列の大文字/小文字を区別するかどうかを指定します。
  • [圧縮]:  Teradata プラットフォームで、選択したカラムが主キー以外で、さらに BIGINT、DATE、または CHAR などのデータ型を選択した場合、カラムを圧縮してテーブル サイズを最小化するオプションを指定できます。Teradata では、256 文字を超える長さの CHAR データ型の圧縮をサポートしません。[圧縮]ボックスに圧縮ステートメントを入力します。ステートメントが長い場合は、[詳細]をクリックして圧縮ステートメント エディタを開き、そこに入力します。最大で 256 個のカラム値まで圧縮することができます。たとえば、顧客データベースで州の名前を圧縮してテーブル サイズを縮小するとします。圧縮ステートメントは次のようになります。

COMPRESS ('New Hampshire', 'California', 'Alaska', ...)

テーブル内の州の値が州を表すコードで置き換えられ、州の値はテーブル ヘッダに格納されます。

Notepad blue icon 2.pngメモ: Teradata では、次のようなデータ型を持つカラムの圧縮をサポートしません: INTERVAL、TIME、TIMESTAMP、VARBYTE、VARCHAR、CLOB、BLOB、および n > 255 の CHAR(n)。カラムが主キーである場合も圧縮できません。

[統計情報の収集] (COLLECT STATISTICS):  テーブルの 1 つ以上の人口データを収集し、収集データの統計プロファイルを計算して、このプロファイルをデータ ディレクトリに保存します。完全な統計を収集するには、ベース テーブルをスキャンし、ソートして、各一意の値の発生回数を判断する必要があります。Teradata Optimizer は、テーブル アクセスと結合プランの生成時にこのプロファイル データを使用します。完全統計は通常、Access Module Processor(AMP)ごとに、行数が 100 行未満のテーブルの関連したカラムとインデックスに使用することをお勧めします。

これは、テーブルのカラムに対して、[テーブル エディタ][統計情報の収集]を選択したときに、SQL で生成されます。

COLLECT STATISTICS ON table_1 COLUMN column_1;

これは、テーブルのインデックスに対して、[インデックス エディタ][統計の収集]を選択したときに、SQL で生成されます。

COLLECT STATISTICS ON table_1 INDEX unique_1;

[サンプル統計]: サンプルを採取した完全なテーブル統計を収集した方が、完全なテーブル統計を収集するよりも短時間ですが、テーブル アクセスと結合プランでは最適な結果が得られない可能性があります。このオプションを指定すると、Teradata はスキャンするのに適したデータの割合を決定します。USING SAMPLE に関して最適な選択肢は、一意、または 95% 一意のカラムまたはインデックスです。

これは、テーブルのカラムに対して、[テーブル エディタ][統計情報の収集][サンプル統計]を選択したときに生成される SQL の例です。

COLLECT STATISTICS USING SAMPLE ON table_1 COLUMN column_1;

これは、テーブルのインデックスに対して、[インデックス エディタ][統計情報の収集][サンプル統計]を選択したときに生成される SQL の例です。

COLLECT STATISTICS USING SAMPLE ON table_1 INDEX unique_1;

  • [RowGuidCol]:  行の GUID(グローバル一意識別子)カラムを返します。ROWGUIDCOL プロパティを使用してグローバル一意識別子カラムを定義する場合、1 つのテーブルに 1 つのROWGUIDCOL カラムしか指定できないこと、およびそのカラムは uniqueidentifier データ型を使用して定義する必要があることに注意してください。
  • [計算カラム]:  カラムの計算式を入力できます。たとえば「販売手数料 = 総売上高 * 0.1」などです。
  • [SPARSE]:  カラムに複数の NULL が含まれることがある場合、SPARSE を指定します。そのようなカラムに SPARSE を指定すると、データ取得の応答時間が改善されます。SPARSE カラムでは、NULL を格納する場合に容量を消費しません。ただし、SPARSE カラムにデータを格納する場合は、通常のカラムよりも若干多くの容量が必要になります。このオプションを使用できるのは、選択したデータ型が SPARSE プロパティをサポートする場合だけです。
  • [照合順序]:  各文字列に対する照合順序を指定できます。このオプションを指定すると、CREATE TABLE 文または ALTER TABLE 文で COLLATE 句が使用されます。
  • [For Bit Data]:  バイナリ SQL を使用して、文字 SQL 型のバイナリ文字配列を指定できます。IBM データベース プラットフォームでは、FOR BIT DATA 属性を指定した CHARVARCHARLONG VARCHAR 型のカラムを定義することで、バイナリ データ型のカラムをサポートします。
  • [LOB 単位]:  データ型が BLOBCLOB、または DBCLOB の場合は、LOB の単位を選択できます。[K](キロバイト)、[M](メガバイト)、[G](ギガバイト)のいずれかを指定します。

[デフォルト]タブ

  • [デフォルトのバインド]:  デフォルト値がエンティティの属性にバインドされていない場合([データ ディクショナリ|デフォルト|デフォルトの編集|バインド情報])、[デフォルト式]を入力できます。または[バインドされたデータを上書き]チェック ボックスをオンにして、[デフォルトのバインド]一覧から他の値を選択できます。このデフォルト式は、物理モデルで[データベースの生成...]を実行したときに生成される SQL に含まれます。デフォルト値の属性がエンティティにバインド済みである場合、[デフォルトのバインド]一覧から他の値を選択して、デフォルト値を上書きできます。詳細は、「データ ディクショナリの操作」を参照してください。選択した属性がエンティティの主キーである場合、[子キーへ移行]チェック ボックスをオンにすることができます。
  • [デフォルト名]:  宣言型デフォルトを下で指定したときか、[バインドされたデータを上書き]を選択したときに、宣言型デフォルトの名前を指定します。データ ディクショナリからバインドされたデフォルトを使用している場合、インライン デフォルト名は指定できません。
  • [デフォルト式]:  値が明示的に入力されない場合のデフォルトのカラム値を指定します。DEFAULT 定義はすべてのカラムに適用できます。ただし、データ型が timestamp の場合と、IDENTITY プロパティを持つ場合は除きます。DEFAULT に割り当てることができるのは、文字列などの定数値、 SYSTEM_USER() などのシステム関数、NULL、または制約名だけです。 

[ルール/制約]:  バインドするルールをデータ ディクショナリから選択するか、または手動で入力します。[CHECK 制約]ボックスの内容は、そのまま物理モデルの DDL に挿入されます。制約を追加、編集、または削除します。CHECK 制約を使用すると、データベース内のデータの有効性を保証し、データの整合性を保つことができます。詳細は、「CHECK 制約を使用したデータ整合性の保証」を参照してください。情報がグレーアウト表示(読み取り専用)の場合は、ドメインが使用されており、定義、データ型、ルール、制約、またはデフォルトがドメインから継承されていることを示しています。

[定義]タブ

カラムの定義を入力または編集します。対象データベースでサポートされる場合、SQL コードの生成時に、この定義がカラムのコメントとして追加されます。

[ノート]タブ

ここに追加したノートの内容は、モデルのレポート生成時に HTML レポートに含まれます。このノートには標準の HTML タグを使用することができます。

[論物関連]タブ

この属性/カラムを使用している論理/物理のモデルおよびサブモデルが表示されます。また、カラムの非正規化マッピングに関する履歴も表示されます。[論物関連]タブでは、既存のマッピングおよびユーザー定義マッピングの両方を編集できます。詳細は、「ユーザー定義マッピングを使用した同種のオブジェクトの関連付け」を参照してください。

[ユーザー定義マッピング]タブ

このテーブルのユーザー定義マッピング(UDM)が表示されます。ユーザー定義マッピングは、概念的には関連しているものの、実際のトランザクションでは必ずしも関連しているとは限らないデータ同士を結び付けます。ユーザー定義マッピングは、データ モデルを比較したり SQL を生成する際には使用されません。ユーザー定義マッピングで作成された、エンティティ間のリレーションシップを説明するには、[ノート]タブを使用します。詳細は、「ユーザー定義マッピングを使用した同種のオブジェクトの関連付け」を参照してください。

[参照値]タブ

参照値は、使用できる値が定義された属性です。ルックアップ テーブル カラム、コード値の範囲、またはカラムに適用されるルールや制約を表します。詳細は、「参照値を使用した有効な属性データの定義」を参照してください。

[名前付け標準]タブ

名前付け標準テンプレートがオブジェクトにバインドされると、そのテンプレートが、名前付け標準ユーティリティまたは物理モデルの生成ウィザードで選択されたテンプレートの代わりに使用されます。これによって、モデルの一部で異なる名前付け標準が必要な場合に、オブジェクトごとに別の名前付け標準を適用できます。たとえば、一部のオブジェクトが既にデータベース内に存在しており、それらには名前付け標準を新たに適用したくない場合に役立ちます。[名前の固定]チェックボックスをオンにすると、名前付け標準を適用しても、選択したカラムの名前を変更しないようにすることができます。詳細は、「名前付け標準テンプレートを使用した名前付け標準の適用」を参照してください。

[比較オプション]タブ

比較とマージ ユーティリティで無視する相違点を選択します。

[LOB ストレージ]タブ

HiRDB のみで使用されます。[データ型]タブで指定されたカラムのデータ型が BLOB の場合、このタブが利用可能になり、LOB ストレージの場所を指定できます。

[データ リネージ]タブ

モデル内で、ソース データからターゲットのエンティティおよび属性へのデータ移動を記述するルールをマップします。属性レベルでは、ソース/ターゲットの属性マッピングに変換の論理を追加します。物理モデルの 1 つの属性に複数のソース/ターゲットをマッピングできます。詳細は、「データの抽出、変換、読み込みの文書化」を参照してください。

[セキュリティ情報]タブ

データ ディクショナリで定義された現在のセキュリティ情報が表示されます。変更するフィールドをダブルクリックして、セキュリティのレポート情報を追加または編集できます。プロパティにモデル全体のデフォルト値を設定するには、[データ ディクショナリ]タブに移動し、[データ セキュリティ情報]ノードを展開します。詳細は、「データ セキュリティ タイプおよびプロパティを使用したセキュリティの適用」を参照してください。

[アタッチメントのバインド]タブ

アタッチメント(外部情報)をカラムにバインドします。また、オブジェクトからアタッチメントを削除したり、アタッチメントのバインドのデフォルト値を上書きしたり、バインドされたアタッチメントの位置を変更することもできます。選択したアタッチメントのグリッド(画面の右側)に移動したアタッチメントの値をオーバーライドするには、対象となるアタッチメントの[値]フィールドをダブルクリックします。アタッチメントのデータ型に応じて、[上書き値エディタ]またはリスト ボックスが表示されます。アタッチメントは[データ ディクショナリ]タブの[アタッチメント]フォルダで作成されます。その際、アタッチメント タイプ エディタの[アタッチメント タイプの使用]タブで[属性/カラム]チェック ボックスをオンにする必要があります(デフォルトでオンになっています)。そうでない場合、テーブル エディタの[アタッチメントのバインド]タブにそのアタッチメント タイプが表示されません。詳細は、「データ モデルへの外部ドキュメントの関連付け」を参照してください。

[データ移動ルール]タブ

属性に割り当てられたデータ移動ルールが表示されます。ここでは、[データ移動ルール]ダイアログ ボックス(モデル エクスプローラの[データ リネージ]タブ)でテーブル/エンティティに割り当てられたデフォルトのルールを上書きすることができます。必要に応じて、データ移動ルールを適用または除去します。データ移動ルールとは、たとえば「このテーブルのデータは 30 日後に更新されます」といったものです。詳細は、「ソースおよびターゲットのテーブルとエンティティの関連付け」を参照してください。

メモ

  • 適切なデータ型を選択することは、データの整合性と格納に関わる重要な検討事項です。使用目的に合致しており、かつ保存するデータを正しく格納できるデータ型を選択します。選択できるカラム データ型は対象データベースによって違います。各対象データベースは固有のデータ型セットを持つからです。たとえば、一部のデータベースではバイナリ データ型をサポートしますが、これをサポートしないデータベースもあります。BLOB やテキストをサポートするデータベースもありますが、多くのデータベースではこれらをサポートしません。また、ユーザー定義データ型をサポートするデータベースはごくわずかです。ER Studio Data Architect では、さまざまなデータベース間でデータ型を変換できます。ただし、近似のデータ型にしか変換できない場合もあります。
  • もう 1 つの重要な検討事項は、データ型を指定する際に適切な桁数と精度を決定することです。データを効率的に格納するだけでなく、その完全性、正確さ、精度も維持する必要があります。
  • データ型マッピングについての詳細は、「データ型マッピングのカスタマイズ」を参照してください。データ型を共通のカラムに適用するには、データ ディクショナリのドメインを使用します。詳細は、「ドメインを使用した属性定義の再利用」を参照してください。
  • 属性名とカラム名を決定する際には、対象データベースの命名ルールを考慮してください。重要な考慮事項として、名前の桁数制限、予約語や禁止文字の使用回避などがあります。ほとんどのデータベースでは、名前の桁数は 30 文字または 18 文字までに制限されています。また、すべてのデータベースには予約語があり、名前に使用するには引用符で囲む必要があります。特定の文字(空白、*、+、% など)も、名前に使用することが禁止されています。
  • 命名ルール、デフォルト データ型、およびデフォルト データ型で作成された属性に NULL 値を許可するかなどを指定するには、[オプション]ダイアログ ボックス([ツール|オプション...])の[論理]タブを使用します。
  • 属性の表示順序を指定するには、[オプション]ダイアログ ボックス([ツール|オプション...])の[表示]タブを使用します。
  • 属性名とカラム名の間のシンクロ レベルを指定するには、[オプション]ダイアログ ボックス([ツール|オプション...])の[名前の処理]タブを使用します。
  • アプリケーション ウィンドウの下部にあるステータス バーには、選択したモデルに含まれるテーブルの総数が表示されます。

関連項目