Extension de table et classes
Permettez à une ou plusieurs tables enfants de partager des champs et des enregistrements avec une table parente. Les administrateurs et les développeurs d’applications ne peuvent étendre les tables que pendant leur création.
| Table d'origine | Tables connexes étendues à partir de la table d’origine |
|---|---|
| Tâche [task] |
|
| Élément de configuration [cmdb_ci] |
|
Une table qui étend une autre table est appelée classe enfant et la table qu’elle étend est la classe parente. Une table peut être à la fois une classe parente et une classe enfant étendant et fournissant des extensions pour d’autres tables. Une classe parente qui n’est pas une extension d’une autre table est appelée classe de base.
- Schéma de carte
- Dictionnaire système
- Module Tables
- Relie la nouvelle table à la table d’extension.
- Crée des champs système dans la nouvelle table.
- Crée une ou plusieurs tables de base de données pour stocker les classes parent et enfant. Le nombre de tables créées par le système dépend du modèle d’extension sélectionné lors de la création de la table.
Modèles d'extension
- Table par classe
- Table par hiérarchie
- Table par partition
- Nombre de tables de base de données créées
- Dérivation des champs à partir des classes parentes
- Réplication des enregistrements à partir des classes enfants
Table par classe
- Tables créées
- Crée une table de base de données distincte pour la classe parente et chaque classe enfant.
- Champs dérivés de la classe parente
- Les classes enfants dérivent des champs des classes parentes.
- Enregistrements de dictionnaire créés pour la classe parente
- Une classe parente dispose d’un enregistrement de dictionnaire pour la collection et pour chaque champ qui peut en être dérivé. Par exemple, la table Contrat [ast_contract] compte 59 enregistrements de dictionnaire qui définissent la table et ses champs.
- Enregistrements de dictionnaire créés pour les classes enfants
- Chaque classe enfant ne dispose que d’entrées de dictionnaire pour les champs propres à la classe.
- Enregistrements répliqués
- La classe parente réplique chaque enregistrement stocké dans ses classes enfants. Chaque classe enfant stocke uniquement des enregistrements uniques à la classe. Les enregistrements répliqués ont la même valeur d’ID système dans chaque table. Le système réplique tout changement que vous apportez à un enregistrement enfant à l’enregistrement correspondant dans la table parente. Par exemple, la table Contrat [ast_contract] réplique les enregistrements des tables Bail [ast_lease] et Garantie [ast_warranty].
Table par hiérarchie
- Tables créées
- Crée une table de base de données pour la classe parente, qui stocke tous les enregistrements des classes parent et enfant. Les classes enfants n’ont pas de tables de base de données distinctes.
- Champs dérivés de la classe parente
- Les classes enfants dérivent des champs des classes parentes. Par exemple, la table Incident dérive des champs de la table Tâche.
- Enregistrements de dictionnaire créés pour la classe parente
Une classe parente dispose d’un enregistrement de dictionnaire pour la collection et pour chaque champ qui peut en être dérivé. Par exemple, la table Tâche est une classe parente qui dispose de 66 enregistrements de dictionnaire, qui définissent la table et ses champs.
L’entrée de dictionnaire de la classe parent contient une colonne sys_class_name dont la valeur indique la classe enfant à laquelle appartient chaque enregistrement. Par exemple, les enregistrements d’incidents ont une valeur sys_class_name d’incident et les enregistrements de changement ont une valeur sys_class_name de changement.
- Enregistrements de dictionnaire créés pour les classes enfants
- Chaque classe enfant ne dispose que d’entrées de dictionnaire pour les champs propres à la classe. Par exemple, la table Incident ne comporte que 22 enregistrements de dictionnaire, qui ne sont pas déjà définis dans la table Tâche.
- Enregistrements répliqués
- La réplication d’enregistrement n’est pas nécessaire, car la classe parente stocke tous les enregistrements qui appartiennent à la hiérarchie. Par exemple, la table Tâche contient tous les enregistrements de ses classes enfants telles que les tables Changement, Incident et Problème.
Table par partition
- Tables créées
- Crée une table de base de données pour la classe parente, qui stocke tous les enregistrements des classes parent et enfant. Les classes enfants n’ont pas de tables de base de données distinctes. Lorsque la table de base de données atteint une limite de stockage, le système ajoute dynamiquement des tables de stockage (partitions) pour stocker des enregistrements supplémentaires.
- Champs dérivés de la classe parente
- Les classes enfants ne dérivent pas de champs des classes parentes. Au lieu de cela, chaque classe enfant a sa propre liste de champs. Par exemple, les tables Élément de configuration de base [cmdb], Élément de configuration [cmdb_ci] et Matériel [cmdb_ci_hardware] ont toutes leurs propres définitions de champ.
- Enregistrements de dictionnaire créés pour la classe parente
Une classe parente dispose d’un enregistrement de dictionnaire pour la collection et pour chaque champ pertinent pour celle-ci. Par exemple, la table Élément de configuration de base [cmdb] est une classe parente qui compte 48 enregistrements de dictionnaire.
Le système réplique les changements apportés aux entrées de dictionnaire de la classe parente aux entrées de dictionnaire de la classe enfant. Par exemple, lorsque vous modifiez la colonne name dans la table Élément de configuration de base [cmdb] de la classe parente, le système la réplique aux entrées du dictionnaire de la classe enfant telles que les tables Élément de configuration [cmdb_ci] et Matériel [cmdb_ci_hardware].
L’entrée du dictionnaire de la classe parent contient des colonnes pour sys_class_name et sys_class_path dont les valeurs indiquent à quelle classe enfant appartient chaque enregistrement. Par exemple, les enregistrements de matériel ont une valeur sys_class_name de cmdb_ci_hardware et les enregistrements informatiques ont une valeur sys_class_name de cmdb_ci_computer.
Lorsque la table de base de données atteint une limite de stockage, le système met à jour l’entrée de dictionnaire de la classe parente afin d’inclure des colonnes pour sys_storage_alias et storage_table_name. Ces entrées de dictionnaire de colonnes de stockage permettent aux administrateurs de gérer la classe parente et ses tables de stockage comme une seule unité logique.
- Enregistrements de dictionnaire créés pour les classes enfants
- Chaque classe enfant dispose d’un enregistrement de dictionnaire pour la collection et pour chaque champ qui s’y rapporte. Par exemple, la table Matériel comporte 73 enregistrements de dictionnaire, certains enregistrements dupliquant des colonnes de la classe parente.
- Enregistrements répliqués
- La réplication d’enregistrement n’est pas nécessaire, car la classe parente stocke tous les enregistrements qui appartiennent à la hiérarchie. Par exemple, la table Élément de configuration de base [cmdb] contient tous les enregistrements de ses classes enfants telles que les tables Application [cmdb_ci_appl], Ordinateur [cmdb_ci_computer] et Matériel [cmdb_ci_hardware].