テーブル参照
多くのテーブルには、他のテーブル内のフィールド (データ要素とも呼ばれる) があります。これらのフィールドが参照データになります。
たとえば、「導入済ソフトウェア構成要素 (tccom000)」 テーブルには、次のテーブルへの参照があります。
- 住所 (tccom130)
- 国 (tcmcs010)
- 言語 (tcmcs046)
この場合は、住所と国に、他のテーブルへの参照があります。
各テーブル参照には、次の 2 つの特徴があります。
- 参照モード: テーブルと参照テーブルとの関係を示します。次のオプションがあります。
-
必須: このテーブルフィールドには、参照テーブル内の値を入力する必要があります。たとえば、「住所」 から 「国」 への参照は必須です。このため、各住所には国を入力する必要があります。国が入力されていないと、住所を保存できません。
テーブル共有では、住所テーブルを共有する場合に、国テーブルも共有する必要があります。
-
空白以外必須: このテーブルフィールドは空にすることができます。このテーブルフィールドに値が入力されている場合は、そのフィールド値が参照テーブル内に存在する必要があります。たとえば、空の場合を除いて、「導入済ソフトウェア構成要素」 から 「住所」 への参照は必須です。このため、「導入済ソフトウェア構成要素」 テーブルには、必要に応じて住所を入力できます。
テーブル共有で、「導入済ソフトウェア構成要素」 テーブルを共有する場合に、住所を共有することができます。ただし、住所テーブルを共有していない場合は、「導入済ソフトウェア構成要素」 テーブル内の住所を空にしておく必要があります。テーブル参照にのみ基づいて、住所テーブルを共有しないように設定することはできません。多くの機能で、フィールドに値を入力する必要があります。
-
任意: このテーブルフィールドには、参照テーブル内の値を入力できますが、別の値を入力することもできます。
参照モードが 「任意」 の場合は、親テーブルを共有している限り、参照テーブルを共有する必要はありません。
-
- 参照のタイプ:
- ハード参照: 1 つのテーブルから、データディクショナリで定義されている別のテーブルへの参照
- ソフト参照: 1 つのテーブルから、プログラムスクリプトやライブラリに埋め込まれている別のテーブルへの参照
データが共有されている場合は、すべての参照データの共有も必要となることがあります。これは、データが必須か、空白以外必須か、任意かによって決まります。参照テーブルは、データの参照整合性において重要となります。
テーブルが論理的にリンクされている状況では、データが必須の場合は特に、参照テーブルもリンクする必要があります。データが任意の場合は、別の会社の別の値をフィールドに入力できます。ただし、その値が、その値を参照している会社に存在している場合に限ります。このため、メインテーブルは、分散処理を使用して共有できます。参照テーブルは、会社に固有のものにするか、複製することができます。
例: 「一般品目データ (tcibd001)」 が複数の会社で共有されています。品目グループや単位データなど、多数の参照フィールドが品目ファイル内に存在します。
品目ファイルが論理的にリンクされている場合は、すべての必須参照フィールド (品目グループなど) の値が両方の会社で完全に一致している必要があります。通常、これらの参照テーブルも論理的にリンクされています。任意フィールド (つまり、製品タイプ) が使用されていない場合、参照テーブルを論理的にリンクする必要はありません。
テーブルが複製されている場合は、参照フィールドにさまざまな値を入力できます。ただし、その値が、その値を参照している会社に存在している場合に限ります。複製中に、これらの値が変更されます。任意フィールドでは、テーブル内のフィールドが使用されていない場合に、参照データを共有する必要はありません。
例: 「一般品目データ (tcibd001)」 ファイルが複製されている場合は、そのデータを使用している会社のすべての必須フィールド (つまり、品目グループ) をプログラムが参照できるようにする必要があります。必須フィールドの値が両方の会社で一致している必要はありません。ただし、参照先の値が、その値を参照している会社に存在している場合に限ります。任意フィールド (つまり、製品タイプ) が使用されていない場合、参照テーブルを複製する必要はありません。
場合によっては、参照のレベルが多数存在します。これらの参照は、広範囲に及び、また複雑な場合があります。たとえば、品目ファイルは、品目グループなどのテーブルとその他の MCS テーブル、設計データ、部品表、工順、原価計算データを参照します。これらの理由から、導入ごとに異なる方法でテーブルを共有できるため、それぞれの導入でテーブル参照を詳しく調べる必要があります。