ICMSTCompDefs (Component Definition Table)

When you define an Item Type, Content Manager Enterprise Edition inserts rows into the ICMSTCOMPDEFS table for a root and also inserts either zero or many descendant (child) tables. The ComponentTypeID is a unique sequential number that is managed by the system.

You must provide an ItemTypeID for all component types that are associated to the Item Type.

The Item Type is the default parent of all component type tables associated to it. Each component type might have many child tables, but the child can have only one component type parent.

Both the ItemTypeID and the component parent ID must exist in the ICMSTITEMTYPEDEFS table and ICMSTCOMPDEFS table respectively. The component type cannot be shared by different item types.

When an item type is defined, Content Manager Enterprise Edition performs the following tasks on behalf of the application:
  1. It creates a table and a base view to store the attribute values for items that the item type stores. The name of that view is maintained in the ComponentViewName column in the ICMSTCOMPVIEWDEFS table. This table is also referred to as the Component Table (ICMUTnnnnnsss where nnnnn is the ComponentTypeID and sss is the SegmentID).
  2. It creates an access module to insert, delete, and modify data from the Component Table. The name of that access module is maintained in the AccessModuleName column in the ICMSTCOMPVIEWDEFS table.
Table 1. Component Definition Table
Column Name Data Type Attribute
ComponentTypeID INTEGER NOT Null
ItemTypeID INTEGER NOT Null
ParentCompTypeID INTEGER NOT Null
CardinalityMin SMALLINT NOT Null
CardinalityMax SMALLINT NOT Null
DeleteRule SMALLINT NULLable
CompTypeClass SMALLINT NOT Null
UserID CHAR(32) NOT Null
Changed TIMESTAMP NOT Null
CTOption INTEGER NULLable (default values is NULL)
TABLETABLESPACE VARCHAR (128) NULLable (default values is NULL)
INDEXDFTTABLESPACE VARCHAR (128) NULLable (default values is NULL)
LOBDFTTABLESPACE VARCHAR (128) NULLable (default values is NULL)
Primary Key
(ComponentTypeID)
Indexes
Index = (ComponentTypeID ascending, ItemType ID ascending)
Index = (ItemTypeID ascending)
For z/OS only:
Unique Index = (ComponentTypeID ascending)
Referential Constraints
Foreign key = ItemTypeID
  references ICMSTITEMTYPEDEFS (ItemTypeID)
    on delete restrict

Column Definitions

ComponentTypeID
A unique identifier for the component type.

When a new component table is defined, Content Manager Enterprise Edition generates this value. A component cannot be shared by different item types. An installation can have a maximum of 46 655 component type views.

ItemTypeID
A unique identifier for the item type.

When a new item type is defined, Content Manager Enterprise Edition generates this value. At the same time, the library inserts a row into the ICMSTCOMPDEFS table and generates a component root table for the item type.

ParentCompTypeID
The ParentCompTypeID is used to build the type hierarchy among the component types (tables). If the component type is not the child of another component type, the value 0 is stored in this column by Content Manager Enterprise Edition. If this column is zero it points to a component root table.
CardinalityMin
Minimum number of rows for the component type. This number is valid only when ParentCompTypeID is not zero.
CardinalityMax
Maximum number of rows for the component type. This number is valid only when ParentCompTypeID is not zero. There is no maximum if CardinalityMax is zero. If both CardinalityMin and CardinalityMax are not zero, CardinalityMax must be equal to or greater than CardinalityMin.
DeleteRule
Specifies what action is to take place on the dependent tables when a row of the target table is deleted. The root component ignores this column. The valid values are:
1
CASCADE
0
RESTRICT (the default)
CompTypeClass
The type of component type. The classification types are defined by Content Manager Enterprise Edition. The values are:
0
Indicates a non-resource component type.
1
Indicates a resource component type (for optimized model only).
2
Indicates a reference resource component type.
For the root component:
  • If the item type classification is item (itemtypeclass 0) or document (itemtypeclass 2), then the root component type classification also equals 0 (non-resource).
  • If the item type classification is resource item (itemtypeclass 1) or resource part (itemtypeclass 3), then the root component type classification also equals 1 (resource).
For the child component:
  • For the regular child component types of all item type classfications, the child component type classification equals 0 (non-resource).
  • For the hidden ICMParts child component type of a document item type, the child component type classification equals 2 (reference resource part).
UserID
The ID of the user who inserted this row or changed it last.
Changed
The timestamp when the entry was created or last updated.
CTOption
Reserved.
TABLETABLESPACE
The table space for the table of the component type. This column is read only.
INDEXDFTTABLESPACE
The default table space of database indexes for the component type. This column is read only on DB2. On Oracle this column can be changed, and the new database indexes will be put to the table space set in the column at the time. For z/OS, this column is NULL.
LOBDFTTABLESPACE
The default LOB table space (for BLOB and CLOB attributes) for the component type. This column is read only on DB2. On Oracle this column can be changed, and the new BLOB and CLOB attributes will be put to the table space set in the column at the time. For z/OS, this column is NULL.

Sample SQL Statements

Given an item type name ('ItemTypeName'), get all the component type names and IDs:
select k2.keywordcode comptypeid, k2.keywordname comptypename
from icmstnlskeywords k1, icmstnlskeywords k2, 
  icmstcompdefs ct
where k1.keywordclass = 2 and
  k1.keywordname = 'ItemTypeName' and
  k1.keywordcode = ct.itemtypeid and
  k2.keywordclass = 5 and
  k2.keywordcode = ct.componenttypeid
order by k2.keywordcode
Given an item type name ('ItemTypeName'), get all the component type IDs and information:
select ct.*
from icmstnlskeywords k1, icmstnlskeywords k2, 
icmstcompdefs ct
where k1.keywordclass = 2 and
k1.keywordname = 'ItemTypeName' and
k1.keywordcode = ct.itemtypeid and
k2.keywordclass = 5 and
k2.keywordcode = ct.componenttypeid
order by ct.componenttypeid
Given a component type name ('ComponentTypeName'), get the component type information:
select ct.*
from icmstnlskeywords k, icmstcompdefs ct
where k.keywordclass = 5 and
  k.keywordname = 'ComponentTypeName' and
  k.keywordcode = ct.componenttypeid
Given a component type ID (2222), get the component type information:
select * 
from icmstcompdefs
where componenttypeid = 2222
Given an item type ID (1111), get all the component type information:
select * 
from icmstcompdefs
where itemtypeid = 1111
order by componenttypeid