Introdução ao App Builder - Apêndice A: A camada de dados no App Builder (Avançado)
Este é o primeiro apêndice da série de tutoriais Introdução ao App Builder. Esses apêndices complementam as lições da série e fornecem informações mais detalhadas sobre os conceitos introduzidos.
Nesta lição, vamos explorar mais a fundo a camada de dados do App Builder, a área onde armazenamos os dados que nossa aplicação precisará recuperar e manipular.
Tipos de dados lógicos
Como já aprendemos, a camada de dados é onde armazenamos as informações que nossas aplicações precisarão para realizar suas tarefas. O App Builder fornece ferramentas para organizar, categorizar e rotular seus dados de forma lógica, tornando a recuperação futura mais fácil e eficiente.
Tipos de dados lógicos vs. físicos
Antes de examinar cada tipo, é importante entender a distinção fundamental entre tipos de dados lógicos e físicos, pois esse conceito se aplica a todas as colunas criadas no App Builder.
-
Tipos de dados lógicos: Esses definem o propósito dos dados e como eles são representados nas camadas de negócios e interface do usuário (UI) da aplicação. O tipo lógico dita como o App Builder exibe os dados e quais operações são válidas para eles.
-
Tipos de dados físicos: Esses definem o tipo de armazenamento dos dados, o formato específico usado para salvar as informações no banco de dados.
Por exemplo, considere os valores 0 e 1. Esses dois valores podem ser representados de várias maneiras lógicas diferentes, dependendo do contexto:
-
Como um booleano (representando
Verdadeiro/Falso) -
Como um número (os inteiros 0 e 1)
-
Como texto (os caracteres
0e1) -
Como uma porcentagem (representando 0% e 100%)
-
Como moeda (representando $0,00 e $1,00)
Cada um desses tipos lógicos é tratado de maneira diferente pela aplicação, mesmo que os dados subjacentes sejam semelhantes. Correspondentemente, esses valores podem ser armazenados fisicamente em formatos diferentes. Um booleano Falso/Verdadeiro pode ser armazenado como um Bit (0/1), enquanto o texto 0/1 seria armazenado como um NVarchar.
À medida que exploramos os tipos de dados abaixo, você verá que para cada tipo lógico selecionado, o App Builder fornece uma ou mais opções de tipo físico compatíveis.
ID Único
O tipo de dado lógico ID Único é usado para armazenar um valor de identificador único. Na Aula 2, mencionamos brevemente esse tipo de dado quando criamos a tabela Região. Dissemos que o App Builder criou automaticamente uma coluna para identificar as entradas nessa tabela e atribuiu a esse tipo de dado. Agora, no entanto, vamos ver em mais detalhes como funciona. Siga estas etapas:
-
Em App Workbench > Tabelas, localize e selecione a tabela Categoria.
-
Na aba Colunas, encontre a coluna CategoryID e clique no ícone de edição no final da linha. Você verá a seguinte tela de edição:

-
Na seção Tipos de Dados, observe os seguintes detalhes:
-
O campo Lógico é onde você define o tipo de dado lógico de uma coluna. Esta coluna foi criada automaticamente pelo App Builder, e ele selecionou ID Único.
-
O campo Físico mostra os tipos de dados físicos disponíveis para uma coluna com esse tipo de dado lógico:
-
Char: Dados de caractere de comprimento fixo.
-
UUID (atualmente selecionado): Este acrônimo significa Identificador Único Universal. É um número de 128 bits usado para identificar informações de forma única.
-
-
-
Na seção Configurações de PK, as seguintes caixas de seleção estão disponíveis. O App Builder marcou todas elas, que é a configuração recomendada ao criar uma chave primária de coluna única que usa um valor gerado automaticamente. Para cenários mais complexos, como chaves de várias partes (por exemplo, uma chave composta por duas chaves estrangeiras), você pode usar configurações diferentes:
-
Chave Primária: Esta caixa de seleção indica se uma coluna deve ser a chave primária de sua tabela, ou seja, aquela que torna um registro único.
-
Gerado Automaticamente: Quando esta caixa de seleção está marcada, o App Builder gerará automaticamente um valor para esta coluna toda vez que um novo registro for criado na tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será usada (veja Uso para mais informações). Atualmente, não há seleção aqui, pois o propósito de um identificador único é permitir que o App Builder, e não os usuários ou desenvolvedores, identifique um registro.
-
Valor Padrão: Este campo, atualmente vazio, é onde você pode definir um valor padrão para a coluna (veja Valores padrão para mais informações). No caso de valores gerados automaticamente, no entanto, um valor é sempre fornecido.
-
String
Agora, vamos revisar String, provavelmente o tipo de dado lógico mais utilizado. Ele permite armazenar uma sequência de caracteres de comprimento variável, como letras, símbolos e números. Vamos dar uma olhada mais de perto em uma de nossas colunas que usa este tipo de dado:
-
Em App Workbench > Tabelas, localize e selecione a tabela Funcionário.
-
Na aba Colunas, encontre a coluna PrimeiroNome e clique no ícone de edição no final da linha. Você verá a tela de edição da coluna:

-
Na seção Tipos de Dados, as seguintes opções aparecem:
-
O campo Lógico é onde esta coluna foi atribuída ao tipo de dado lógico String.
-
O campo Físico tem as seguintes opções:
-
Char: Dados de caractere de comprimento fixo.
-
Texto Criptografado: Dados de texto criptografado.
-
NChar: Dados de caractere UNICODE de comprimento fixo.
-
NVarchar (atualmente selecionado): Dados de caractere UNICODE de comprimento indeterminado. Normalmente, todas as strings do App Builder são armazenadas como este tipo físico para que possam suportar Unicode e ocupar menos espaço.
-
Varchar: Dados de caractere de comprimento indeterminado.
-
-
Comprimento: Número de bytes usados para armazenar o número. Para tipos de dados binários, varbinary e imagem, o comprimento é o número de bytes.
-
-
Na seção Configurações de PK, há opções para auxiliar na criação manual de chaves primárias:
-
Chave Primária: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será usada (veja Uso para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Valor Padrão: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Valores padrão para mais informações).
-
Traduzível: Se ativada, esta caixa de seleção ativa traduções para uma determinada coluna, significando que os dados na coluna que são adicionados ou editados através da camada de negócios são traduzidos automaticamente para outro idioma em tempo de execução. Traduzir o pacote da aplicação também traduz todos os dados na coluna.
-
Data, Data/Hora, Hora
Estes são os formatos usados pelo App Builder para armazenar uma data específica, hora, ou ambos. As informações de data são formatadas como MM/DD/YYYY. Quando você tenta editar um campo com este tipo de dado lógico, você vê um popup de calendário que permite escolher um novo valor de data.
Vamos analisar mais de perto como este tipo de dado funciona analisando a coluna DataNascimento em nossa tabela Funcionário.
-
Em App Workbench > Tabelas, localize e selecione a tabela Funcionário.
-
Na aba Colunas, encontre a coluna DataNascimento e clique no ícone de edição no final da linha. Você verá a tela de edição da coluna:

-
Na seção Tipos de Dados, os seguintes campos aparecem:
-
Lógico: Aqui é onde você seleciona Data, Data/Hora ou Hora.
-
Físico: As opções de tipo de dado físico mudam dependendo da sua seleção de tipo de dado lógico:
-
Quando o tipo de dado lógico é Data:
-
Data: Armazena apenas a data.
-
Decimal: Armazena um valor decimal, entre
1038 + 1e1038 - 1. -
Inteiro - Int: Armazena um inteiro, entre
-2,147,483,648e2,147,483,647.
-
-
Quando o tipo de dado lógico é Data/Hora:
- DataHora: Armazena a data e a hora do dia.
-
Quando o tipo de dado lógico é Hora:
- Hora: Armazena apenas a hora do dia.
-
-
-
Na seção Configurações de PK, há opções para auxiliar na criação manual de chaves primárias:
-
Chave Primária: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será usada (veja Uso para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Valor Padrão: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Valores padrão para mais informações).
-
Foto
Outro tipo de dado lógico que pode ser usado na camada de dados do App Builder é Foto. Vamos explorar suas opções olhando para a coluna Foto da nossa tabela Funcionário.
-
Em App Workbench > Tabelas, localize e selecione a tabela Funcionário.
-
Na aba Colunas, encontre a coluna Foto e clique no ícone de edição no final da linha. Você verá a tela de edição da coluna:

-
Na seção Tipos de Dados, os seguintes campos estão disponíveis:
-
Lógico: É aqui que Foto é selecionado como o tipo de dado lógico.
-
Físico: Colunas com este tipo de dado lógico têm apenas uma opção de tipo de dado físico: Binário. Ele é representado numericamente por uma combinação de zeros e uns.
-
-
Na seção Configurações de PK, há opções para auxiliar na criação manual de chaves primárias:
-
Chave Primária: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será usada (veja Uso para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Valor Padrão: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Valores padrão para mais informações).
-
Arquivo
O tipo de dado lógico Arquivo é usado para armazenar um arquivo. Os desenvolvedores podem usá-lo para permitir que os usuários finais enviem novos arquivos para o banco de dados. Na nossa tabela Funcionário, atualmente não temos colunas com o tipo de dado Arquivo, mas podemos usar a coluna Foto que analisamos anteriormente para aprender sobre isso.
-
Em App Workbench > Tabelas, localize e selecione a tabela Funcionário.
-
Na aba Colunas, encontre a coluna Foto e clique no ícone de edição no final da linha.
-
Na seção Tipos de Dados:
-
Altere a seleção no campo Lógico de Foto para Arquivo:

Nota
Fazer isso não afeta a aparência da página Funcionário do seu aplicativo, porque na sua página Controles, o tipo de controle ainda é Foto, então o App Builder o renderiza corretamente.
-
O campo Físico para colunas com este tipo de dado lógico tem três opções:
-
Binário: Dados binários.
-
Binário Criptografado: Igual à opção anterior, mas com criptografia.
-
NVarchar: Dados de caracteres UNICODE de comprimento indeterminado.
-
-
-
Na seção Configurações de PK, há opções para auxiliar na criação manual de chaves primárias:
-
Chave Primária: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será usada (veja Uso para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde, pois faz com que alguns campos e opções sejam configurados automaticamente.
-
Valor Padrão: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Valores padrão para mais informações).
-
Número, Percentual
O tipo de dado lógico Número armazena dados numéricos. Se você quiser armazenar, apresentar ou calcular valores percentuais, também há um tipo de dado lógico Percentual disponível. Vamos analisar esses dois olhando para a coluna UnitsInStock da nossa tabela Produto:
-
Em App Workbench > Tabelas, localize e selecione a tabela Produto.
-
Na aba Colunas, encontre a coluna UnitsInStock e clique no ícone de edição no final da linha. Você verá sua tela de edição:

-
Na seção Tipos de Dados, os seguintes campos estão disponíveis:
-
Lógico: É aqui que Número ou Percentual são selecionados como o tipo de dado lógico.
-
Físico: Colunas com este tipo de dado lógico têm as seguintes opções de tipo de dado físico:
-
Decimal: Selecione isso para armazenar um número com um grande valor decimal, entre
1038 + 1e1038 - 1. Esta é a única opção disponível quando o tipo de dado lógico é Percent. -
Float: Selecione isso para armazenar valores decimais menores, entre
-1.79E + 308e-2.23E -308. -
Integer - BigInt: Selecione isso para armazenar números inteiros muito grandes, entre
-9,223,372,036,854,775,808e9,223,372,036,854,775,807. -
Integer - Int (atualmente selecionado): A seleção padrão para números inteiros, entre
-2,147,483,648e2,147,483,648. -
Integer - SmallInt: Selecione isso para armazenar números inteiros pequenos, entre
-32,768e32,767. -
Integer - TinyInt: Selecione isso para armazenar inteiros entre
0e255. -
Real: Selecione isso para armazenar números reais, entre
-3.40E + 38e-1.18E - 38.
-
-
-
Na seção PK Settings, há opções para auxiliar na criação manual de chaves primárias:
-
Primary Key: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Auto Generated: Quando esta caixa de seleção está marcada, o App Builder gerará automaticamente um valor para esta coluna toda vez que um novo registro for criado na tabela.
-
Required: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Advanced, as seguintes opções aparecem:
-
Column Usage Type: Isso indica ao App Builder para que uma determinada coluna será usada (veja Usage para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Default Value: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Default values para mais informações).
-
Currency
O tipo de dado lógico Currency é usado para armazenar valores monetários com a formatação adequada. Na camada de UI, os controles que utilizam colunas de moeda são identificados como moeda. Para analisar melhor esse tipo de dado lógico, vamos usar a coluna UnitPrice da nossa tabela Product.
-
Em App Workbench > Tabelas, localize e selecione a tabela Produto.
-
Na aba Colunas, encontre a coluna UnitPrice e clique no ícone de edição no final da linha. Você verá sua tela de edição:

-
Na seção Tipos de Dados, os seguintes campos estão disponíveis:
-
Lógico: É aqui que você seleciona Moeda como o tipo de dado lógico.
-
Físico: Colunas com esse tipo de dado lógico têm apenas uma opção de tipo de dado físico: Decimal, usado para armazenar um número com um grande valor decimal, entre
1038 + 1e1038 - 1. -
Precisão: Neste campo, insira o número de dígitos que os números devem ter. Por exemplo, o número
123.45tem precisão5. Para moedas, este é o valor padrão. -
Escala: Neste campo, insira o número de dígitos exibidos à direita do ponto decimal em um número. Por exemplo, o número
123.45tem escala2. Para moedas, este é o valor padrão.
-
-
Na seção Configurações de PK, há opções para auxiliar na criação manual de chaves primárias:
-
Chave Primária: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será usada (veja Uso para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Valor Padrão: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Valores padrão para mais informações).
-
Nota
O símbolo da moeda exibido na interface varia dependendo de qual moeda está definida como padrão. Para alterar o padrão, siga estas etapas:
-
Em App Workbench > Fontes de Dados, localize e selecione a fonte Northwinds (Padrão).
-
Clique em Editar. A caixa de diálogo Camada de Armazenamento de Dados é aberta.
-
Clique na aba Utilitários e depois em Configurações Avançadas. A caixa de diálogo Configurações da Fonte de Dados será aberta.
-
No campo Moeda, altere a moeda padrão.
Boolean
O tipo de dado lógico Boolean pode armazenar apenas dois valores possíveis, verdadeiro ou falso, e é utilizado para fornecer lógica. Para analisar como funciona, vamos usar o campo IsDiscontinued na nossa tabela Produto:
-
Em App Workbench > Tabelas, localize e selecione a tabela Produto.
-
Na aba Colunas, encontre a coluna IsDiscontinued e clique no ícone de edição no final da linha. Você verá sua tela de edição:

-
Na seção Tipos de Dados, os seguintes campos estão disponíveis:
-
Lógico: É aqui que você seleciona Boolean como o tipo de dado lógico.
-
Físico: Colunas com esse tipo de dado lógico têm as seguintes opções de tipo de dado físico:
-
Bit: Armazena dados como
0(significandoFalso) ou1(significandoVerdadeiro). Esta é tipicamente a opção usada quando você deseja representar uma caixa de seleção na camada de UI, onde não marcada significaFalsoe marcada significaVerdadeiro. -
Char: Dados de caractere de comprimento fixo. Se você selecionar Char, a camada de UI mostrará uma lista que apresenta
VerdadeiroeFalsocomo opções, em vez de uma caixa de seleção. -
Decimal: Selecione isso para armazenar um número com um grande valor decimal, entre
1038 + 1e1038 - 1.
-
-
-
Na seção Configurações de PK, há opções para auxiliar na criação manual de chaves primárias:
-
Chave Primária: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Obrigatório: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Avançado, as seguintes opções aparecem:
-
Tipo de Uso da Coluna: Isso indica ao App Builder para que uma determinada coluna será utilizada (veja Uso para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Valor Padrão: Neste campo, você pode inserir um valor padrão a ser utilizado para a coluna caso um não seja fornecido (veja Valores padrão para mais informações).
-
Email, URL
O tipo de dado lógico Email é usado para capturar, armazenar e exibir endereços de email. Da mesma forma, o tipo URL tem o mesmo propósito, mas para endereços da web. Embora seja tecnicamente possível usar outros tipos de dados lógicos para armazenar essas informações, usar esses tipos garante a consistência dos dados ao armazenar todas as entradas de email ou URL com o comprimento recomendado e atribuindo a elas o mesmo tipo de controle padrão.
Esses tipos são excelentes exemplos de modelos de coluna, que são definições de coluna pré-configuradas que acompanham o App Builder para acelerar o desenvolvimento. Você pode aprender mais sobre eles e até criar os seus próprios em Modelos de coluna.
-
Em App Workbench > Tabelas, localize e selecione a tabela Cliente.
-
Na aba Colunas, clique em + Coluna. A tela de criação de coluna aparecerá.
-
No campo Nome, insira
ContactEmailouCustomerWebsite, dependendo de qual tipo de dado você deseja salvar. -
Na seção Tipos de Dados, as seguintes opções estão disponíveis:
-
Lógico: Selecione Email ou URL como o tipo de dado lógico. Fazer isso altera alguns dos valores padrão mostrados abaixo:

-
Físico: Colunas com esse tipo de dado lógico têm as seguintes opções de tipo de dado físico:
-
Char: Dados de caractere de comprimento fixo.
-
Texto Criptografado: Dados de texto criptografado.
-
NChar: Dados de caractere UNICODE de comprimento fixo.
-
NVarchar: Dados de caracteres UNICODE de comprimento indeterminado. Esta é a seleção padrão para o tipo de dado URL.
-
Varchar: Dados de caracteres de comprimento indeterminado. Esta é a seleção padrão para o tipo de dado Email.
-
-
Length: O comprimento do endereço da web ou do email. Para o tipo de dado URL, o padrão é
2000e para Email, é320.
-
-
Na seção PK Settings, há opções para auxiliar na criação manual de chaves primárias:
-
Primary Key: Esta caixa de seleção indica que a coluna deve atuar como a chave primária da tabela.
-
Required: Esta caixa de seleção indica se esta coluna pode ser deixada vazia (ou seja, ter um valor nulo) quando um novo registro é criado.
-
-
Na seção Advanced, as seguintes opções aparecem:
-
Column Usage Type: Isso indica ao App Builder para que uma determinada coluna será usada (veja Usage para mais informações). Isso pode acelerar o processo de desenvolvimento mais tarde.
-
Default Value: Neste campo, você pode inserir um valor padrão a ser usado para a coluna se um não for fornecido (veja Default values para mais informações).
-
Translatable: Se ativada, esta caixa de seleção ativa traduções para uma determinada coluna, significando que os dados na coluna que são adicionados ou editados através da camada de negócios são traduzidos automaticamente em tempo de execução. Traduzir o pacote da aplicação também traduz todos os dados na coluna.
-
Default values
Colunas no App Builder podem ser criadas com valores padrão. Isso pode ser útil, por exemplo, quando muitos registros devem ter o mesmo valor para uma determinada coluna com poucas ou nenhuma exceção. Neste último caso, usar um valor padrão e desabilitar operações de atualização garantiria completamente a integridade dos dados.
Para demonstrar como dar um valor padrão a uma coluna, usaremos a coluna Country da tabela Employee. Vamos assumir que a maioria dos funcionários da nossa empresa é dos Estados Unidos. Portanto, esse deve ser o padrão da coluna.
-
No App Workbench > Tabelas, localize e selecione a tabela Funcionário.
-
Na aba Colunas, encontre a coluna País e clique no ícone de edição no final da linha. A tela de edição da coluna aparecerá.
-
Na seção Avançado, insira
Estados UnidosouEUAno campo Valor Padrão.
-
Clique em Salvar.
Teste seu trabalho clicando no botão Resultados no painel Tabela. Quando a lista de registros aparecer, clique em Criar e veja se o valor padrão está sendo exibido na coluna correta. Se estiver, sua alteração funcionou e agora, sempre que um novo registro for adicionado à tabela Funcionário, a coluna País terá automaticamente o valor que você inseriu (Estados Unidos ou EUA). Mas se uma entrada individual exigir, você pode editar esse valor manualmente, é claro. Isso ajudará a economizar muito tempo em um cenário onde há poucos ou nenhum funcionário vivendo em outros países.
Hora da prática: Defina um padrão na tabela Produto
Seguindo os passos que usamos acima para a tabela Funcionário, adicione um valor padrão a uma das colunas da tabela Produto. Vamos supor que, quando um novo produto é adicionado ao catálogo da nossa empresa, inicialmente não há unidades em estoque. Portanto, dê à coluna UnidadesEmEstoque um valor padrão de 0. Teste seus resultados após definir o valor padrão.
Uso
Todas as colunas no App Builder têm um campo Tipo de Uso da Coluna (abreviado como Uso na aba Colunas). Este campo permite especificar o propósito pretendido de uma coluna. Embora seja opcional, recomendamos usá-lo se uma das opções predefinidas atender às suas necessidades. Fazer isso permite que o App Builder ative automaticamente recursos relevantes, validação ou componentes de UI para essa coluna, acelerando seu processo de desenvolvimento.
O campo Tipo de Uso da Coluna pode ser encontrado na seção Avançado da tela de edição de uma coluna. A lista completa de opções está disponível em Tipos de uso de coluna, mas as mais frequentemente usadas são as seguintes:
-
Título: Usado para indicar que uma coluna contém um título de lista. Portanto, ao criar objetos de lista para fazer menus suspensos na interface do usuário, o App Builder saberá usar essa coluna.
-
Subtítulo: Usado para fornecer contexto para campos de título. Quando você atribui esse tipo de uso a uma coluna, o App Builder exibirá seu conteúdo abaixo do título.
-
ENUM: Uma abreviação para "enumeração", esse tipo de uso associa um valor de string significativo a um identificador único (como uma chave primária). Isso permite que você use a string enumerada (por exemplo, 'Segunda-feira', 'Terça-feira') para identificar exclusivamente um registro de uma maneira legível para humanos, em vez de depender de um UUID (por exemplo,
a1b2c3d4) que não tem significado para um usuário. -
Adicionado Por/Adicionado Em: Colunas com essa designação são preenchidas com quem criou um registro ou quando isso aconteceu. A função Audit lite cria colunas com esses tipos de uso automaticamente.
-
Alterado Por/Alterado Em: Colunas com essa designação são preenchidas com um registro de quem modificou um registro ou quando isso aconteceu. A função Audit lite cria colunas com esses tipos de uso automaticamente.
-
EstáAtivo: Colunas com essa designação indicam se uma entrada está atualmente ativa ou não. A função Audit lite cria colunas com esses tipos de uso automaticamente.
Hora da prática: Definir tipos de uso de coluna
Para praticar, vamos definir os tipos de uso Subtítulo e ENUM.
-
Nossa tabela Categoria tem uma coluna Descrição. Edite essa coluna e atribua a ela o tipo de uso Subtítulo. Quando você fizer isso, em qualquer componente da interface do usuário que use a coluna Categoria como título, o App Builder sugerirá automaticamente usar Descrição como subtítulo.
-
Ainda na nossa tabela Categoria, adicione uma nova coluna chamada CategoriaStatus com String como seu tipo de dado lógico e atribua a ela o tipo de uso ENUM. Quando você fizer isso, estará sinalizando essa coluna como o identificador legível para humanos da categoria. Enquanto CategoriaID (um UUID) é a chave primária, CategoriaStatus pode ser usado como o valor enumerado único (por exemplo, "Ativo", "Arquivado", "Rascunho") que a lógica de negócios poderia referenciar.
Chaves e índices
Na camada de dados, é importante entender como o banco de dados identifica e organiza registros. Isso é gerenciado por meio de chaves e índices, que são cruciais para garantir a integridade dos dados e otimizar o desempenho.
Chaves
Chaves são colunas (ou conjuntos de colunas) usadas para identificar de forma exclusiva registros em uma tabela. Existem os seguintes tipos:
-
Chave Primária (PK): Este é o identificador principal de uma tabela. Cada registro deve ter um valor para a chave primária, e esse valor deve ser único dentro da tabela. Em nossas tabelas, OrderID, ProductID e EmployeeID são todas chaves primárias, frequentemente configuradas como IDs únicos gerados automaticamente.
-
Chave Estrangeira (FK): Esta é uma coluna em uma tabela que se refere a uma coluna em outra tabela. É o mecanismo por trás das ligações. Por exemplo, a coluna OrderID na tabela OrderDetail é uma chave estrangeira que aponta para o OrderID (a chave primária) na tabela Order.
-
Chave Única (UK): Esta é uma restrição que garante que todos os valores em uma coluna específica (ou conjunto de colunas) sejam únicos, semelhante a uma chave primária. Uma chave única também pode, em alguns sistemas de banco de dados, permitir um único valor nulo, enquanto uma chave primária não pode.
Índices
Um índice é uma estrutura de dados usada pelo banco de dados para encontrar registros mais rapidamente. Em vez de escanear uma tabela inteira em busca de um valor, o banco de dados pode usar um índice para ir diretamente aos registros relevantes.
Você deve adicionar um índice a colunas que são frequentemente usadas em operações de busca, condições de junção ou cláusulas WHERE. Em nosso banco de dados, a coluna OrderNumber na tabela Order é uma boa candidata para um índice porque podemos frequentemente buscar pedidos por esse número.
As chaves primárias são sempre indexadas automaticamente, razão pela qual são tão rápidas para consultas. Adicionar índices a outras colunas, como chaves estrangeiras ou campos comumente pesquisados (como OrderNumber), pode melhorar significativamente o desempenho da aplicação. Você pode ver um símbolo + ao lado de certas colunas no App Builder, que é uma sugestão de que adicionar um índice pode ser benéfico.
Inserir, atualizar e excluir
Na camada de dados do App Builder, cada tabela e coluna pode suportar a inserção, atualização e/ou exclusão de dados. Ao alterar essas opções na camada de dados, os desenvolvedores podem controlar como os dados são manipulados em todas as outras camadas, incluindo a aplicação final. Isso significa que as alterações feitas aqui substituem modificações semelhantes feitas em outras camadas. Por exemplo, mesmo que o controle em uma determinada página mostre um botão de exclusão e um usuário tenha permissões de exclusão, excluir um registro ainda não será possível se a operação de exclusão estiver desativada aqui, e tentar fazê-lo causará um erro.
Para demonstrar como essas opções podem ser controladas, vamos usar como exemplo nossa atual tabela Funcionário.
-
Em App Workbench > Tabelas, localize e selecione a tabela Funcionário.
-
No painel Tabela, clique em Mais > Caso Excepcional. A caixa de diálogo Configurações de Caso Excepcional aparece, e a seção Suporte CRUD mostra três caixas de seleção, atualmente todas marcadas:

-
Inserível: Se habilitado, permite que registros da tabela sejam inseridos via regras CRUD.
-
Atualizável: Se habilitado, permite que registros da tabela sejam atualizados via regras CRUD.
-
Excluível: Se habilitado, permite que registros da tabela sejam excluídos via regras CRUD.
Desmarcar uma das caixas de seleção desabilitaria as operações para essa tabela em todas as camadas. Na tabela Funcionário, no entanto, queremos que todas essas operações sejam possíveis, uma vez que novos funcionários podem ser contratados, os detalhes dos funcionários existentes podem mudar ou eles podem deixar a equipe.
-
Hora da prática: Desabilitar operações CRUD
Outra de nossas tabelas, Produto, contém registros sobre todos os nossos produtos. Essa tabela tem uma coluna chamada IsDiscontinued. Portanto, se algum dia pararmos de vender um determinado produto, precisamos simplesmente mudar o status desse campo de False para True. Portanto, não há necessidade de permitir operações de exclusão nessa tabela. Seguindo os passos descritos acima, desabilite a operação de exclusão para essa tabela.
Relacionamentos
Os relacionamentos no App Builder são uma ferramenta poderosa para garantir a integridade dos dados. Eles definem conexões entre tabelas para evitar que os usuários insiram dados inválidos ou criem registros órfãos (registros em uma tabela que não possuem mais um registro relacionado em outra).
Ao criar um relacionamento, uma tabela é designada como pai (o lado "um" de um relacionamento um-para-muitos) e a outra como filho (o lado "muitos"). O relacionamento vincula colunas que contêm dados correspondentes. Normalmente, isso envolve vincular a chave primária da tabela pai (uma coluna que identifica exclusivamente cada registro) a uma coluna correspondente na tabela filho, que é então chamada de chave estrangeira. Embora os relacionamentos sejam mais frequentemente baseados na chave primária de uma tabela, também é possível defini-los em outras colunas únicas. Um relacionamento também pode ser definido usando várias colunas de cada tabela.
Vamos examinar o relacionamento pai-filho existente entre as tabelas Order e OrderDetail em nosso banco de dados Northwinds.
-
Em App Workbench > Tabelas, localize e selecione a tabela Order.
-
Clique na aba Relacionamentos e observe as informações exibidas:
-
Muitos para Um: Esta seção lista relacionamentos onde a tabela atual (Order) é o filho. Neste caso, muitos pedidos podem estar associados a um cliente, um funcionário e um transportador. As chaves estrangeiras para esses relacionamentos (CustomerID, EmployeeID e ShipperID) existem na tabela Order.
-
Um para Muitos: Esta seção lista relacionamentos onde a tabela atual (Order) é o pai. A tabela OrderDetail é listada aqui porque muitos detalhes de pedidos podem pertencer a um pedido.
Clique no ícone de edição para o relacionamento OrderDetail. O popup Relacionamento se abre:

-
Tabela Primária: Identifica a tabela pai no relacionamento (o lado "um").
-
Colunas Primárias: Mostra a(s) coluna(s) da tabela pai que identificam de forma única os registros para este relacionamento.
-
...Ao Deletar: Este dropdown define o que deve acontecer com os registros filhos na Tabela Secundária quando um registro pai correspondente na Tabela Primária é deletado. As opções são:
-
Cascade: Deleta automaticamente todos os registros filhos correspondentes quando o registro pai é deletado.
-
Default: Define o valor da(s) coluna(s) de chave estrangeira nos registros filhos para seu valor padrão predefinido quando o registro pai é deletado.
-
Null: Define o valor da(s) coluna(s) de chave estrangeira nos registros filhos como
NULLquando o registro pai é deletado. Isso só é possível se a coluna de chave estrangeira não estiver definida como "Obrigatória". -
Prevent: (Padrão) Impede que o registro pai seja deletado se existirem registros filhos. Esta é a opção mais segura para manter a integridade dos dados.
-
-
...Ao Atualizar: Isso define o que deve acontecer com o valor da chave estrangeira nos registros filhos quando o valor da chave correspondente no registro pai é atualizado. As opções (Cascade, Default, Null e Prevent) funcionam de forma semelhante às ações de Ao Deletar.
-
Tabela Secundária: Identifica a tabela filha no relacionamento (o lado "muitos").
-
Colunas Secundárias: Mostra a(s) coluna(s) de chave estrangeira na tabela filha que correspondem à(s) coluna(s) primária(s).
-
Validar: Esta caixa de seleção, habilitada por padrão, garante que o App Builder verifique essas regras de relacionamento (restrições de chave estrangeira) toda vez que uma operação de salvar ou deletar ocorrer. É altamente recomendável manter esta opção habilitada.
-
-
Aprendizado adicional
Isso conclui esta imersão nos detalhes da camada de dados do App Builder. Para uma visão mais detalhada sobre as outras camadas, veja Apêndice B e Apêndice C.