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.
- 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).
- 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.
| 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.
- 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 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