Créer et gérer des annotations de schéma
Les annotations de schéma sont des champs de texte de format libre qui contiennent des propriétés étendues ou personnalisées d'objets de base de données tels que des tables, des vues, des colonnes, des index et des domaines de cas d'utilisation des données. Les annotations constituent une fonction déclarative légère permettant d'enregistrer de manière centralisée les propriétés d'utilisation des objets de schéma de base de données. Ils peuvent être considérés comme des balises standardisées légères pour les métadonnées de base de données, utilisées par les applications pour enregistrer et traiter les propriétés d'utilisation étendues et personnalisées.
Voir aussi : Oracle AI Database Concepts pour plus d'informations générales sur les annotations
Création d'annotations
Les annotations sont des propriétés d'objets de schéma et peuvent être spécifiées dans l'instruction CREATE de l'objet.
-
L'instruction suivante crée une table avec des annotations pour la table elle-même et les colonnes sous-jacentes.
CREATE TABLE employees ( id NUMBER(5) PRIMARY KEY ANNOTATIONS (Identity, Display 'Employee Name'), ename VARCHAR2(50) ANNOTATIONS(Display 'Employee Name'), salary NUMBER ANNOTATION(Display 'Employee Name', Confidential) ) ANNOTATIONS (Display 'Employee Table'); -
L'instruction suivante inclut une annotation lors de la création du domaine d'utilisation de l'application
dept_codesdans le schémahr.CREATE DOMAIN dept_codes AS NUMBER(3) CONSTRAINT dept_chk CHECK (dept_codes > 99 AND dept_codes != 200) ANNOTATIONS (Title 'Domain Annotation);
Voir aussi : Guide de développement Oracle AI Database pour plus d'informations sur les instructions DDL pour les annotations
Liste des annotations
Vous pouvez utiliser des vues du dictionnaire pour obtenir la liste des annotations utilisées pour des objets spécifiques.
Les vues de dictionnaire suivantes sont définies pour les annotations et l'utilisation des annotations.
-
TOUTES LES VALEURS D'ANNOTATION, VALEURS D'ANNOTATION DBA, VALEURS D'ANNOTATION UTILISATEUR
-
ALL_ANNOTATIONS, DBA_ANNOTATIONS, USER_ANNOTATIONS
-
ALL_ANNOTATIONS_USAGE, DBA_ANNOTATIONS_USAGE, USER_ANNOTATIONS_USAGE
Les vues ALL_* incluent toutes les annotations pour les objets appartenant à l'utilisateur, toutes les annotations pour les objets appartenant à d'autres utilisateurs pour lesquels l'utilisateur dispose du privilège ALTER et toutes les annotations pour les objets pour lesquels l'utilisateur dispose de privilèges système pour ce type d'objet. Les vues DBA_* incluent toutes les annotations de tous les objets de la base de données. Les vues USER_* incluent toutes les annotations pour les objets appartenant à l'utilisateur.
-
L'instruction suivante obtient les annotations de niveau table pour la table
EMPLOYEE:SELECT * from USER_ANNOTATIONS_USAGE WHERE Object_Name = 'EMPLOYEE' AND Object_Type = 'TABLE' AND Column_Name IS NULL; -
L'instruction suivante obtient les annotations de niveau colonne pour la table
EMPLOYEE:SELECT * from USER_ANNOTATIONS_USAGE WHERE Object_Name = 'EMPLOYEE' AND Object_Type = 'TABLE' AND Column_Name IS NOT NULL; -
L'instruction suivante permet d'obtenir les annotations de niveau colonne pour la table
EMPLOYEEsous la forme d'une collection JSON unique par colonne :SELECT U.Column_Name, JSON_ARRAYAGG(JSON_OBJECT(U.Annotation_Name, U.Annotation_Value)) FROM USER_ANNOTATIONS_USAGE U WHERE Object_Name = 'EMPLOYEE' AND Object_Type = 'TABLE' AND Column_Name IS NOT NULL GROUP BY Column_Name;
Reportez-vous également à : Référence Oracle AI Database pour plus d'informations sur les vues de dictionnaire pour les annotations.
Modification des annotations
Pour modifier une annotation, utilisez l'instruction ALTER pour l'objet de schéma annoté.
-
L'instruction suivante ajoute une annotation supplémentaire
Departmentavec la valeurHRà la tableemployees.ALTER TABLE employees ANNOTATIONS (ADD Department 'HR'); -
L'instruction suivante supprime l'annotation
Titleet ajoute une nouvelle annotationNameavec la valeurDomainau domainedept_code.ALTER DOMAIN dept_codes ANNOTATIONS(DROP Title, ADD Name 'Domain');
Voir aussi : Guide de développement Oracle AI Database pour plus d'informations sur les instructions DDL pour les annotations