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.
-
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.
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 :
-
Si une table a été supprimée sans la clause
PURGE, elle reste disponible dans la corbeille (si la corbeille est activée) pour une éventuelle restauration ultérieure. -
Si la table comporte une colonne utilisant un type PL/SQL ou un type de données abstrait et une autre colonne associée à un domaine de cas d'emploi, procédez comme suit :
-
Si vous supprimez le domaine de cas d'emploi avec la clause
FORCE, la table sera toujours restaurée. Le domaine de cas d'emploi est simplement dissocié de la colonne. -
Si vous supprimez le type PL/SQL, avec ou sans la clause
FORCE, la table sera purgée de la corbeille car elle ne peut pas être entièrement restaurée.
-
Caractéristiques des domaines de cas d'utilisation :
-
Contraintes : les domaines peuvent être utilisés pour partager des contraintes entre plusieurs tables et colonnes. Ces contraintes peuvent être désactivées pour les contraintes pouvant être différées. Les contraintes de clé primaire et de clé étrangère ne sont pas autorisées dans les domaines.
-
Types de données : tous les types de données Oracle intégrés sont autorisés, à l'exception des types de données brutes et d'objets longs, longs et longs.
-
Expression par défaut : les expressions par défaut sont autorisées, qui sont identiques aux expressions par défaut de colonne.
-
Recherche sans distinction entre majuscules et minuscules - Les domaines permettent les recherches sans distinction entre minuscules et minuscules qui peuvent être utilisées dans les clauses
WHEREetORDER BY. -
Expression d'affichage : les expressions d'affichage autorisent les règles d'affichage personnalisées. Par exemple, afficher les devises au format local.
-
Expression de commande : une expression de commande permet un tri complexe. Par exemple, le classement par devise standard normalisée telle que les montants en dollars américains.
Types de domaine de cas d'utilisation :
-
Une seule colonne : s'applique à une seule colonne de données.
-
Plusieurs colonnes : s'applique à plusieurs colonnes, telles que la devise.
-
Domaines flexibles - basés sur d'autres domaines et doivent être des types de données compatibles avec les sous-domaines. Par exemple, les formats d'adresse pour différents pays.
-
Enumération : se compose d'un ensemble de noms et, éventuellement, d'une valeur correspondant à un nom.
Stricte par rapport à Non strict :
-
Non strict : un domaine non strict doit correspondre au type de données indiqué, mais pas nécessairement à la longueur ou à l'échelle des données numériques.
-
Strict : le type de données, la longueur et l'échelle doivent correspondre exactement. Par exemple, les codes devise qui doivent comporter exactement deux ou trois caractères.
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 :
-
Libellé d'affichage : il peut être différent du nom de la colonne (par exemple, afficher le titre "Salaire" d'une colonne nommée Employee_Salary).
-
Groupe de colonnes : Dans de nombreux cas, un "groupe" de colonnes est intéressant pour une interface utilisateur (par exemple, pour regrouper les colonnes Numéro de rue, Nom de rue, Ville et Code postal dans un groupe d'adresses)
-
Masque de format : par exemple, un masque d'affichage de
$99,999.99peut être utilisé par un outil d'interface utilisateur pour afficher 56434 en tant que$56,434.00 -
Masquer : indique s'il faut afficher la colonne dans l'interface utilisateur à un utilisateur final (par exemple, ne pas afficher les colonnes contenant des informations confidentielles ou les colonnes ajoutées par le système à une certaine classe d'utilisateurs)
-
Mise en surbrillance : indique si la colonne doit être affichée avec une mise en surbrillance spéciale
-
Opérations autorisées : permet à l'interface de déterminer si une colonne doit prendre en charge le tri, le regroupement, l'affichage d'une liste de valeurs, etc.
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