Uso de Dados do Aplicativo

Este capítulo explica quais são os domínios de caso de uso de dados e as anotações de esquema.

Domínios de Caso de Uso de Dados

Um domínio de caso de uso de dados é um objeto de dicionário de alto nível que pertence a um esquema e encapsula um conjunto de propriedades e restrições opcionais.

Os bancos de dados geralmente têm uma compreensão limitada de como os dados são realmente usados pelos aplicativos. Os bancos de dados armazenam dados usando tipos primitivos, como VARCHAR2, NUMBER ou DATE, enquanto o conhecimento de que um valor armazenado representa, por exemplo, um número de cartão de crédito ou data de nascimento, só existe dentro dos metadados ou do contexto no nível do aplicativo. Essa abordagem aumenta a complexidade da aplicação individual, fragmenta a conscientização do uso entre ferramentas e aplicações e introduz a possibilidade de semântica divergente.

Tentativas anteriores para combater essa divergência foram adicionar mais tipos de dados incorporados específicos do uso aos bancos de dados e fornecer suporte para tipos definidos pelo usuário para extensibilidade. Sistemas de tipo de banco de dados mais elaborados receberam adoção limitada, pois aumentam a incompatibilidade com os tipos de linguagem de aplicativos, criam código de aplicativo não portátil e aumentam a complexidade do desenvolvimento, pois as operações abrangendo diferentes tipos são restritas.

Tais restrições na representação do uso de dados podem ser evitadas usando o conceito de domínio estendido do Oracle AI Database, conforme definido pelo SQL Standard. Usando esta abordagem, uma coluna pode ser declarada com um tipo de dados primitivo, como NUMBER, bem como com um domínio para uso de dados, como "Temperatura" ou "Pontuação de Crédito". Tal domínio de caso de uso pode opcionalmente ser associado a diferentes propriedades de uso, como restrições de verificação, propriedades de exibição, regras de ordenação e outras. Mais importante ainda, informações de domínio centralizadas podem ser usadas por aplicativos para padronizar operações sem exigir metadados no nível do aplicativo; por exemplo, para mascarar números de cartão de crédito, para formatar números de telefone e valores de moeda, para exibir valores percentuais em uma coluna como um gráfico de pizza e muito mais.

Os domínios de caso de uso não modificam o tipo de dados subjacente e, portanto, também podem ser adicionados aos dados existentes sem quebrar aplicativos ou criar problemas de portabilidade. Um domínio de caso de uso pode ser declarado para uma ou mais colunas em uma tabela e também pode ser usado para representar cenários de uso variável nos quais o uso real de dados depende de dados em outras colunas. Os domínios de caso de uso podem ser considerados modificadores de tipo leve que documentam centralmente o uso pretendido de dados para aplicativos. Além disso, os domínios de caso de uso podem ser usados para compartilhar anotações.

Eliminar uma tabela com um domínio de caso de uso associado pode produzir resultados diferentes do que eliminar uma tabela com um tipo PL/SQL associado. As regras a seguir se aplicam quando você elimina uma tabela que tem um domínio de caso de uso ou um tipo PL/SQL associado:

Características dos Domínios de Caso de Uso:

Tipos de Domínio do Caso de Uso:

Strict versus Non-Strict:

Você pode criar um domínio de enumeração usando o Oracle SQL. Diferentemente dos domínios regulares, um domínio de enumeração tem uma restrição CHECK padrão, bem como uma expressão de exibição. Os nomes dentro de um domínio de enumeração podem ser usados sempre que um literal for permitido em uma expressão SQL escalar, e o próprio domínio pode ser usado na cláusula FROM de uma instrução SELECT como se fosse uma tabela. Um domínio de enumeração é um tipo especial de domínio de uso e pode ser usado como qualquer domínio de coluna única.

Um domínio de enumeração consiste em um conjunto de nomes e, opcionalmente, um valor correspondente a um nome. O nome deve ser um identificador SQL válido e cada valor especificado deve ser um literal ou, no caso de uma enumeração de várias colunas, uma lista de literais. Embora os valores possam ser de qualquer tipo de dados suportado para um domínio de caso de uso de dados, todos eles devem ser do mesmo tipo de dados.

Por exemplo, o usuário SCOTT, que recebeu anteriormente o privilégio CREATE DOMAIN, cria um domínio enumerado de coluna única para o título do cargo.

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

O domínio Job_Title agora pode ser usado como o tipo de dados ao criar a tabela EMP. Por exemplo:

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

Ao inserir uma nova linha de dados, o domínio enumerado pode ser usado para especificar o valor da coluna JOB. As três instruções INSERT a seguir são 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);

Tópicos Relacionados

Anotações do Esquema

Para muitos aplicativos, é importante manter metadados de propriedade adicionais para objetos de banco de dados, como tabelas, views, colunas de tabela, índices e domínios.

Embora os domínios incluam propriedades de uso incorporadas, como restrições de verificação, agrupamentos, ordem de classificação personalizada e outras, para extensibilidade, o banco de dados Oracle também fornece a capacidade de adicionar propriedades personalizadas por meio do mecanismo ANNOTATIONS para metadados do banco de dados - incluindo colunas de tabela, tabelas, índices e muito mais. Os aplicativos geralmente precisam manter metadados de propriedade adicionais, especialmente para renderizar interfaces de usuário ou personalizar a lógica do aplicativo.

Alguns exemplos de propriedades de uso no nível da coluna podem incluir:

As propriedades de uso no nível da tabela também podem ser usadas para ajudar os aplicativos a registrar se uma tabela contém informações confidenciais, qual deve ser seu nome para exibição, quais módulos no aplicativo são de sua propriedade ou gerenciados e muito mais.

A maioria dos aplicativos cria seus próprios repositórios para esse tipo de metadados de uso, resultando na complexidade do desenvolvedor e na possibilidade de divergência entre aplicativos, módulos e microsserviços.

As anotações de esquema do Oracle AI Database são um recurso declarativo leve para que os desenvolvedores registrem centralmente as propriedades de uso dos objetos de esquema de banco de dados. As anotações são armazenadas diretamente dentro do banco de dados nas tabelas do dicionário, juntamente com a definição do modelo de dados e os dados em si, e disponíveis para qualquer aplicativo a fim de padronizar o comportamento entre dados comuns, mas não são interpretadas pelo banco de dados de forma alguma. Eles devem ser considerados como marcação padronizada leve para metadados de banco de dados, para uso por aplicativos para registrar e processar propriedades de uso estendidas e personalizadas.

Tópicos Relacionados