Utilisation des données d'application

Ce chapitre explique les domaines de cas d'utilisation des données et les annotations de schéma.

Domaines de cas d'utilisation des données

Un domaine de cas d'utilisation des données est un objet de dictionnaire de haut niveau qui appartient à un schéma et encapsule un ensemble de propriétés et de contraintes facultatives.

Les bases de données ont généralement eu une compréhension limitée de la façon dont les données sont réellement utilisées par les applications. Les bases de données stockent des données à l'aide de types primitifs tels que VARCHAR2, NUMBER ou DATE, sachant qu'une valeur stockée représente, par exemple, un numéro de carte de crédit ou une date de naissance, n'existe que dans des métadonnées ou un contexte au niveau de l'application. Cette approche augmente la complexité des applications individuelles, fragmente la connaissance de l'utilisation des outils et des applications, et introduit la possibilité d'une sémantique divergente.

Les tentatives précédentes pour contrer cette divergence ont consisté à ajouter des types de données intégrés spécifiques à l'utilisation aux bases de données et à fournir une prise en charge des types définis par l'utilisateur pour l'extensibilité. Les systèmes de type de base de données plus élaborés ont reçu une adoption limitée car ils augmentent la non-concordance avec les types de langage d'application, créent un code d'application non portable et augmentent la complexité du développement car les opérations couvrant différents types sont restreintes.

Ces restrictions sur la représentation de l'utilisation des données peuvent être évitées en utilisant le concept de domaine étendu d'Oracle AI Database tel que défini par la norme SQL. Avec cette approche, une colonne peut être déclarée avec un type de données primitif tel que NUMBER, ainsi qu'avec un domaine pour l'utilisation des données, tel que "Temperature" ou "Credit Score". Un tel domaine de cas d'utilisation peut éventuellement être associé à différentes propriétés d'utilisation telles que des contraintes de vérification, des propriétés d'affichage, des règles de tri, etc. Plus important encore, les applications peuvent utiliser des informations de domaine centralisées afin de standardiser les opérations sans nécessiter de méta-données au niveau de l'application. Par exemple, pour masquer les numéros de carte de crédit, formater les numéros de téléphone et les valeurs de devise, afficher les valeurs de pourcentage dans une colonne sous forme de graphique à secteurs, etc.

Les domaines de cas d'utilisation ne modifient pas le type de données sous-jacent et peuvent donc également être ajoutés aux données existantes sans interrompre les applications ni créer de problèmes de portabilité. Un domaine de cas d'emploi peut être déclaré pour une ou plusieurs colonnes d'une table et peut également être utilisé pour représenter des scénarios d'utilisation de variables dans lesquels l'utilisation réelle des données dépend des données d'autres colonnes. Les domaines de cas d'utilisation peuvent être considérés comme des modificateurs de type léger qui documentent de manière centralisée l'utilisation prévue des données pour les applications. En outre, les domaines de cas d'emploi peuvent être utilisés pour partager des annotations.

La suppression d'une table avec un domaine de cas d'emploi associé peut produire des résultats différents de ceux de la suppression d'une table avec un type PL/SQL associé. Les règles suivantes s'appliquent lorsque vous supprimez une table associée à un domaine de cas d'emploi ou à un type PL/SQL :

Caractéristiques des domaines de cas d'utilisation :

Types de domaine de cas d'utilisation :

Stricte par rapport à Non strict :

Vous pouvez créer un domaine d'énumération à l'aide d'Oracle SQL. Contrairement aux domaines standard, un domaine d'énumération a une contrainte CHECK par défaut ainsi qu'une expression d'affichage. Les noms d'un domaine d'énumération peuvent être utilisés partout où un littéral est autorisé dans une expression SQL scalaire, et le domaine lui-même peut être utilisé dans la clause FROM d'une instruction SELECT comme s'il s'agissait d'une table. Un domaine d'énumération est un type spécial de domaine d'utilisation et peut être utilisé comme n'importe quel domaine à colonne unique.

Un domaine d'énumération consiste en un ensemble de noms et, éventuellement, une valeur correspondant à un nom. Le nom doit être un identificateur SQL valide et chaque valeur spécifiée doit être un littéral ou, dans le cas d'une énumération à plusieurs colonnes, une liste de littéraux. Bien que les valeurs puissent être de n'importe quel type de données pris en charge pour un domaine de cas d'utilisation des données, elles doivent toutes être du même type de données.

Par exemple, l'utilisateur SCOTT, qui s'est déjà vu accorder le privilège CREATE DOMAIN, crée un domaine énuméré sur une seule colonne pour l'intitulé du poste.

CREATE DOMAIN Job_Title AS
  ENUM (
    Clerk                  = 'CLERK',
    Salesman = SalesPerson = 'SALESMAN',
    Manager                = 'MANAGER',
    Analyst                = 'ANALYST',
    President              = 'PRESIDENT'
  );

Le domaine Job_Title peut désormais être utilisé comme type de données lors de la création de la table EMP. Exemple :

CREATE TABLE emp
( empno     NUMBER(4)     CONSTRAINT emp_pk PRIMARY KEY,
  ename     VARCHAR2(10),
  job       Job_Title,
  mgr       NUMBER(4)     CONSTRAINT emp_mgr_fk REFERENCES emp(empno),
  hiredate  DATE,
  sal       NUMBER(7,2)
);

Lors de l'insertion d'une nouvelle ligne de données, le domaine énuméré peut être utilisé pour indiquer la valeur de la colonne JOB. Les trois instructions INSERT suivantes sont équivalentes.

INSERT INTO emp VALUES (8000, 'PATEL', Job_Title.Salesman, 7698, TO_DATE('11-MAR-2024', 'DD-MON-YYYY'), 3500);
INSERT INTO emp VALUES (8000, 'PATEL', Job_Title.SalesPerson, 7698, TO_DATE('11-MAR-2024', 'DD-MON-YYYY'), 3500);
INSERT INTO emp VALUES (8000, 'PATEL', 'SALESMAN', 7698, TO_DATE('11-MAR-2024', 'DD-MON-YYYY'), 3500);

Rubriques connexes

Annotations de schéma

Pour de nombreuses applications, il est important de tenir à jour des métadonnées de propriété supplémentaires pour les objets de base de données tels que les tables, les vues, les colonnes de table, les index et les domaines.

Alors que les domaines incluent des propriétés d'utilisation intégrées telles que les contraintes de vérification, les collations, l'ordre de tri personnalisé, etc., pour l'extensibilité, la base de données Oracle permet également d'ajouter des propriétés personnalisées via le mécanisme ANNOTATIONS pour les métadonnées de base de données, notamment les colonnes de table, les tables, les index, etc. Les applications doivent souvent gérer des métadonnées de propriété supplémentaires, en particulier pour l'affichage des interfaces utilisateur ou la personnalisation de la logique de l'application.

Voici quelques exemples de propriétés d'utilisation au niveau colonne :

Les propriétés d'utilisation au niveau de la table peuvent également être utilisées pour aider les applications à enregistrer si une table contient des informations sensibles, quel doit être son nom d'affichage, quels modules de l'application dont elle est propriétaire ou gérée, etc.

La plupart des applications créent leurs propres référentiels pour ce type de métadonnées d'utilisation, ce qui entraîne une complexité pour les développeurs et la possibilité de divergence entre les applications, les modules et les microservices.

Les annotations de schéma Oracle AI Database sont un utilitaire déclaratif léger permettant aux développeurs d'enregistrer de manière centralisée les propriétés d'utilisation des objets de schéma de base de données. Les annotations sont stockées directement dans la base de données dans des tables de dictionnaire, en plus de la définition du modèle de données et des données elles-mêmes. Elles sont disponibles pour toutes les applications afin de standardiser le comportement des données communes, mais ne sont en aucun cas interprétées par la base de données. Ils doivent être considérés comme des balises standardisées légères pour les métadonnées de base de données, à utiliser par les applications pour enregistrer et traiter les propriétés d'utilisation étendues et personnalisées.

Rubriques connexes