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 parent. Une table peut être à la fois une classe parent et 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.
- Carte de schéma
- Dictionnaire système
- Module de 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
- 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 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] 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 ne dispose que d’entrées de dictionnaire pour les champs qui lui sont propres.
- Enregistrements répliqués
- La classe parent réplique chaque enregistrement stocké dans ses classes enfants. Chaque classe enfant stocke uniquement les enregistrements qui lui sont propres. 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 en fonction de 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 les 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 Task table (Table de tâches) est une classe parente qui possède 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 à quelle classe enfant appartient chaque enregistrement. Par exemple, les enregistrements d’incident ont une valeur sys_class_name d’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 ne dispose que d’entrées de dictionnaire pour les champs qui lui sont propres. Par exemple, la table Incident ne contient 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 parent stocke tous les enregistrements appartenant à la hiérarchie. Par exemple, la table Task (Tâche) contient tous les enregistrements de ses classes enfants, telles que les tables Change, Incident et Problem (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 Base Configuration Item (Élément de configuration de base) [cmdb], Configuration Item (Élément de configuration) [cmdb_ci] et Hardware (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 Base Configuration Item (É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 à la classe parente Entrées du dictionnaire à la classe enfant Entrées du dictionnaire. Par exemple, lorsque vous modifiez la colonne de nom dans la table Base Configuration Item (Élément de configuration de base) de la classe parente [cmdb], le système la réplique dans les entrées du dictionnaire de la classe enfant telles que les tables Configuration Item (Élément de configuration) [cmdb_ci] et Hardware (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 à 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 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 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 pertinent. Par exemple, la table Hardware (Matériel) contient 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 parent stocke tous les enregistrements appartenant à la hiérarchie. Par exemple, la table Base Configuration Item (Élément de configuration de base) [cmdb] contient tous les enregistrements de ses classes enfants, telles que les tables Application [cmdb_ci_appl], Computer (Ordinateur) [cmdb_ci_computer] et Hardware (Matériel) [cmdb_ci_hardware].