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.
-
Anotações de 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.
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:
-
Se uma tabela tiver sido eliminada sem a cláusula
PURGE, ela ainda estará disponível na lixeira (se a lixeira estiver ativada) para possível restauração futura. -
Se a tabela tiver uma coluna usando um tipo de dados abstrato ou PL/SQL e outra coluna associada a um domínio de caso de uso, então:
-
A eliminação do domínio do caso de uso com a cláusula
FORCEainda permitirá que a tabela seja restaurada. O domínio do caso de uso é simplesmente desassociado da coluna. -
A eliminação do tipo PL/SQL, com ou sem a cláusula
FORCE, expurgará a tabela da lixeira porque ela não pode ser completamente restaurada.
-
Características dos Domínios de Caso de Uso:
-
Restrições - domínios podem ser usados para compartilhar restrições em várias tabelas e colunas. Essas restrições podem ser desativadas para restrições diferíveis. Restrições de chave primária e chave estrangeira não são permitidas em domínios.
-
Tipos de dados - todos os tipos de dados integrados do Oracle são permitidos, exceto os tipos de objeto e bruto longo.
-
Expressão padrão - são permitidas expressões padrão, que são iguais aos padrões da coluna.
-
Pesquisa sem distinção entre maiúsculas e minúsculas e acentos - os domínios permitem pesquisas sem distinção entre maiúsculas e minúsculas, que podem ser usadas nas cláusulas
WHEREeORDER BY. -
Expressão de exibição - expressões de exibição permitem regras de exibição personalizadas. Por exemplo, exibindo moedas no formato local.
-
Expressão de ordem - uma expressão de ordem permite ordenação complexa. Por exemplo, ordenando por moeda comercial padrão normalizada, como valores em dólares americanos.
Tipos de Domínio do Caso de Uso:
-
Coluna única - se aplica a uma única coluna de dados.
-
Várias colunas - aplica-se a várias colunas, como moeda.
-
Domínios flexíveis - com base em outros domínios e devem ser tipos de dados compatíveis com os subdomínios. Um exemplo são os formatos de endereço para diferentes países.
-
Enumeração - consiste em um conjunto de nomes e, opcionalmente, um valor correspondente a um nome.
Strict versus Non-Strict:
-
Não restrito - um domínio não restrito deve corresponder ao tipo de dados fornecido, mas não necessariamente ao tamanho ou à escala dos dados numéricos.
-
Strict - requer que o tipo de dados, o tamanho e a escala sejam uma correspondência exata. Por exemplo, códigos de moeda que devem ter exatamente dois ou três caracteres.
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:
-
Label de Exibição: Pode ser diferente do nome da coluna (por exemplo, exibir o título "Salário" de uma coluna chamada Employee_Salary)
-
Grupo de colunas: em muitos casos, um "grupo" de colunas é interessante para uma interface de usuário (por exemplo, para agrupar colunas Número da rua, Nome da rua, Cidade e CEP em um grupo de endereços)
-
Máscara de Formato: Por exemplo, uma máscara de exibição de
$99,999.99pode ser usada por uma ferramenta de interface do usuário para renderizar 56434 como$56,434.00 -
Ocultar: Se a coluna na interface do usuário deve ser mostrada para um usuário final (por exemplo, não mostrar colunas com informações confidenciais ou colunas adicionadas pelo sistema para uma determinada classe de usuários finais)
-
Destaque: Se a coluna deve ser exibida com um destaque especial
-
Operações permitidas: permite que a interface determine se uma coluna pode suportar classificação, agrupamento, exibição de uma lista de valores, entre outros.
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