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]
When you extend a table, the system:
  • Links the new table to the extending table.
  • Creates system fields in the new table.

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.

The dictionary entry for a child class only contains the fields unique to the child class. The fields inherited from the parent class belong to the dictionary entry for the parent class. A child class record has values in both the child class and all its parent classes. The full child class record is actually a collection of values from multiple tables that all have the same sys_id value. The system tracks record changes by the sys_id value and applies any change to all classes that have a record with the matching sys_id value. For example, if you delete an incident record, the system also deletes the corresponding record in the task table.

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