Extensions de tables 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 peuvent uniquement étendre les tables pendant la création de tables.
| 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, à la fois une extension et une fourniture d’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 parents et enfants. 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
- La dérivation des champs à partir des classes parentes
- La 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 a un enregistrement de dictionnaire pour la collection et pour chaque champ qui peut en être dérivé. Par exemple, la table Contrat [ast_contract] contient 59 enregistrements de dictionnaire, qui définissent la table et ses champs.
- Enregistrements de dictionnaire créés pour les classes enfants
- Chaque classe enfant a uniquement des 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 les enregistrements propres à la classe. Les enregistrements répliqués ont la même valeur d’ID système dans chaque table. Le système réplique toute modification que vous apportez à un enregistrement enfant dans l’enregistrement correspondant de 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 parente 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 a 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 a 66 enregistrements de dictionnaire, qui définissent la table et ses champs.
L’entrée de dictionnaire de la classe parente contient une colonne sys_class_name dont la valeur indique la classe enfant à laquelle chaque enregistrement appartient. Par exemple, les enregistrements d’incident ont une valeur sys_class_name incident et les enregistrements de changement ont une valeur sys_class_name changement.
- Enregistrements de dictionnaire créés pour les classes enfants
- Chaque classe enfant a uniquement des 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 parente 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 a un enregistrement de dictionnaire pour la collection et pour chaque champ pertinent. 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 modifications apportées aux entrées de dictionnaire de classe parente vers la classe enfant Entrées de dictionnaire. Par exemple, lorsque vous modifiez la colonne de nom dans la table Élément de configuration de base [cmdb] de la classe parente, le système la réplique dans les 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 de dictionnaire de la classe parente contient des colonnes pour les sys_class_name et les sys_class_path dont les valeurs indiquent la classe enfant à laquelle chaque enregistrement appartient. Par exemple, les enregistrements de matériel ont une valeur sys_class_name de cmdb_ci_hardware et les enregistrements d’ordinateur 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 colonne de stockage permettent aux administrateurs de gérer la classe parente et ses tables de stockage comme une unité logique unique.
- 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 pertinent. Par exemple, la table Matériel contient 73 enregistrements de dictionnaire dont certains enregistrements dupliquent 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].