Table extension and classes

Extended tables share both fields and records. Administrators and application developers can only extend tables during table creation.

Administrators and application developers typically extend tables to create a set of related records that share information. For example, in the base system, the Task and the Configuration Item tables have multiple extensions:
Table 1. Sample extended tables in the base system
Original table Sample related tables extended from original table
Task [task]
  • Incident [incident]
  • Problem [problem]
  • Change Request [change_request]
Configuration Item [cmdb_ci]
  • Application [cmdb_ci_appl]
  • Computer [cmdb_ci_computer]
  • Database [cmdb_ci_database]

A table that extends another table is called a child class, and the table it extends is the parent class. A table can be both a parent and child class both extending and providing extensions for other tables. A parent class that is not an extension of another table is called a base class.

Administrators can use these tools to see the relationships between classes.
  • Schema map
  • System dictionary
  • Tables module

Extending a table

When you extend a table, the system:
  • Links the new table to the extending table.
  • Creates system fields in the new table.

Inheritance and replication

Each extension model has its own inheritance (deriving) and replication process.

Extension model Inheritance Replication
Table per class

Child classes inherit (derive) fields from parent classes. For example, the Incident table inherits fields from the Task table.

The parent class has Dictionary entries for all fields inherited from it. A child class only has Dictionary entries for fields unique to the class. For example, the Incident table only has Dictionary entries for fields not already defined in the Task table.

Parent classes replicate records from child classes. Replicated records have the same Sys ID value in each table. The system replicates any change you make to a child record to the matching records in the parent table. For example, the Task table replicates records from the Change, Incident, and Problem tables. When you update an Incident record, the system also updates the same record in the Task table.
Table per hierarchy

Child classes inherit (derive) fields from parent classes. For example, the Incident table inherits fields from the Task table.

The parent class has Dictionary entries for all fields inherited from it. A child class only has Dictionary entries for fields unique to the class. For example, the Incident table only has Dictionary entries for fields not already defined in the Task table.

Record replication is not needed, because all records belong to the parent class. For example, the Task table contains all records from its child classes such as the Change, Incident, and Problem tables.
Table per partition

There is no field inheritance (deriving) between parent and child classes. Each class contains a separate list of fields.

Each table has its own Dictionary entries, but the system replicates changes made to parent class Dictionary entries to child class Dictionary entries. For example, the Configuration Item [cmdb_ci] and the Hardware [cmdb_ci_hardware] tables each have Dictionary entries for the name, install_status, and operational_status fields.

Record replication is not needed, because all records belong to the parent class. For example, the Base Configuration Item table contains all records from its child classes.

The system replicates certain parent class fields if the child class needs it. For example, if you change the install_status field on the Configuration Item [cmdb_ci] table, the system replicates the field change to child classes that also have this field.