Uso de datos de aplicación

En este capítulo se explica qué son los dominios de casos de uso de datos y las anotaciones de esquema.

Dominios de casos de uso de datos

Un dominio de caso de uso de datos es un objeto de diccionario de alto nivel que pertenece a un esquema y encapsula un juego de propiedades y restricciones opcionales.

Las bases de datos suelen tener una comprensión limitada de cómo las aplicaciones utilizan realmente los datos. Las bases de datos almacenan datos mediante tipos primitivos como VARCHAR2, NUMBER o DATE, mientras que el conocimiento de que un valor almacenado representa, por ejemplo, un número de tarjeta de crédito o una fecha de nacimiento, solo existe dentro de los metadatos o el contexto de nivel de aplicación. Este enfoque aumenta la complejidad de las aplicaciones individuales, fragmenta el conocimiento del uso en las herramientas y aplicaciones, e introduce la posibilidad de semántica divergente.

Los intentos anteriores para contrarrestar esta divergencia han sido agregar más tipos de datos incorporados específicos del uso a las bases de datos y proporcionar soporte para tipos definidos por el usuario para la extensibilidad. Los sistemas de tipo de base de datos más elaborados han recibido una adopción limitada, ya que aumentan la falta de coincidencia con los tipos de lenguaje de aplicación, crean código de aplicación no portátil y aumentan la complejidad del desarrollo, ya que las operaciones que abarcan diferentes tipos están restringidas.

Dichas restricciones en la representación del uso de datos se pueden evitar mediante el uso del concepto de dominio ampliado de Oracle AI Database, según lo definido por el estándar SQL. Con este enfoque, se puede declarar una columna con un tipo de dato primitivo, como NUMBER, así como con un dominio para el uso de datos, como "Temperatura" o "Puntuación de crédito". Dicho dominio de caso de uso se puede asociar opcionalmente a diferentes propiedades de uso, como restricciones de control, propiedades de visualización, reglas de ordenación y otras. Lo más importante es que las aplicaciones pueden utilizar la información de dominio centralizada para estandarizar las operaciones sin necesidad de metadatos a nivel de aplicación; por ejemplo, enmascarar números de tarjetas de crédito, formatear números de teléfono y valores de moneda, mostrar valores de porcentaje en una columna como un gráfico circular y mucho más.

Los dominios de casos de uso no modifican el tipo de dato subyacente y, por lo tanto, también se pueden agregar a los datos existentes sin interrumpir las aplicaciones ni crear problemas de portabilidad. Un dominio de caso de uso se puede declarar para una o más columnas de una tabla y también se puede utilizar para representar escenarios de uso de variables en los que el uso real de los datos depende de los datos de otras columnas. Los dominios de casos de uso se pueden considerar como modificadores de tipo ligero que documentan de forma centralizada el uso de datos previsto para las aplicaciones. Además, los dominios de casos de uso se pueden utilizar para compartir anotaciones.

El borrado de una tabla con un dominio de caso de uso asociado puede producir resultados diferentes a los del borrado de una tabla con un tipo PL/SQL asociado. Las siguientes reglas se aplican al borrar una tabla que tiene un dominio de caso de uso o un tipo PL/SQL asociados:

Características de los dominios de casos de uso:

Tipos de dominio de casos de uso:

Estricta frente a No Estricta:

Puede crear un dominio de enumeración mediante Oracle SQL. A diferencia de los dominios normales, un dominio de enumeración tiene una restricción CHECK predeterminada, así como una expresión de visualización. Los nombres dentro de un dominio de enumeración se pueden utilizar siempre que se permita un literal en una expresión SQL escalar y el dominio en sí se puede utilizar en la cláusula FROM de una sentencia SELECT como si se tratara de una tabla. Un dominio de enumeración es un tipo especial de dominio de uso y se puede utilizar como cualquier dominio de una sola columna.

Un dominio de enumeración consta de un conjunto de nombres y, opcionalmente, un valor que corresponde a un nombre. El nombre debe ser un identificador SQL válido y cada valor especificado debe ser un literal o, en el caso de una enumeración de varias columnas, una lista de literales. Aunque los valores pueden ser de cualquier tipo de dato soportado para un dominio de caso de uso de datos, todos ellos deben ser del mismo tipo de dato.

Por ejemplo, el usuario SCOTT, al que se le ha otorgado previamente el privilegio CREATE DOMAIN, crea un dominio enumerado de una sola columna para el cargo.

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

El dominio Job_Title ahora se puede utilizar como tipo de dato al crear la tabla EMP. Por ejemplo:

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)
);

Al insertar una nueva fila de datos, el dominio enumerado se puede utilizar para especificar el valor de la columna JOB. Las tres sentencias INSERT siguientes son equivalentes.

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);

Temas relacionados

Anotaciones de esquema

Para muchas aplicaciones, es importante mantener metadatos de propiedades adicionales para objetos de base de datos como tablas, vistas, columnas de tabla, índices y dominios.

Mientras que los dominios incluyen propiedades de uso incorporadas, como restricciones de control, intercalaciones, orden de clasificación personalizado, etc., para la extensibilidad, la base de datos Oracle también proporciona la capacidad de agregar propiedades personalizadas mediante el mecanismo ANNOTATIONS para metadatos de base de datos, incluidas columnas de tabla, tablas, índices, etc. Las aplicaciones suelen necesitar mantener metadatos de propiedades adicionales, especialmente para representar interfaces de usuario o personalizar la lógica de la aplicación.

Algunos ejemplos de propiedades de uso de nivel de columna pueden incluir:

Las propiedades de uso de nivel de tabla se pueden utilizar de forma similar para ayudar a las aplicaciones a registrar si una tabla contiene información confidencial, cuál debe ser su nombre mostrado, qué módulos de la aplicación pertenecen o gestionan, etc.

La mayoría de las aplicaciones crean sus propios repositorios para este tipo de metadatos de uso, lo que resulta en la complejidad del desarrollador y la posibilidad de divergencia entre aplicaciones, módulos y microservicios.

Las anotaciones de esquema de Oracle AI Database son una utilidad declarativa ligera para que los desarrolladores registren de forma centralizada las propiedades de uso de los objetos de esquema de base de datos. Las anotaciones se almacenan directamente dentro de la base de datos en tablas de diccionario junto con la definición del modelo de datos y los datos en sí, y están disponibles para cualquier aplicación con el fin de estandarizar el comportamiento a través de datos comunes, pero no son interpretados por la base de datos de ninguna manera. Se deben considerar como marcas estandarizadas ligeras para metadatos de base de datos, para que las aplicaciones las utilicen para registrar y procesar propiedades de uso ampliadas y personalizadas.

Temas relacionados