Pular para o conteúdo

Data Builder

O Archie Core Data Builder é uma interface de modelagem de dados para definir tabelas de banco de dados, tipos de campos e relacionamentos entre tabelas.

Para abrir o Data Builder, clique em Data Model (Modelo de Dados) na barra lateral, selecione a tabela na qual deseja trabalhar e, em seguida, clique na guia Schema (Esquema).

alt text

Para cada tabela definida, o motor GraphQL do Archie Core cria automaticamente tipos de objetos de esquema GraphQL e os campos de consulta, mutação e assinatura correspondentes com resolvedores.

Isso significa que todas as ações Criar, Ler, Atualizar e Excluir (CRUD), bem como conexões em tempo real (websockets), estão imediatamente disponíveis para uso através do endpoint de API exclusivo do espaço de trabalho.

Em segundo plano, o Archie Core provisiona uma instância de banco de dados PostgreSQL dedicada para seu espaço de trabalho. O PostgreSQL é um banco de dados relacional de objetos de código aberto avançado, conhecido por sua confiabilidade e integridade de dados. Ele lida eficientemente com consultas complexas e suporta totalmente a conformidade ACID (Atomicidade, Consistência, Isolamento, Durabilidade).

Clique no botão + Add Table (+ Adicionar Tabela) para criar uma nova tabela. O nome padrão para novas tabelas é “untitled_table”. Todas as tabelas exigem nomes únicos (os nomes attribute, workspace e sua forma plural são reservados e não podem ser usados em nenhum caso de letra).

Assim que uma tabela é criada, os tipos de esquema GraphQL correspondentes e os resolvedores de consulta, mutação e assinatura serão gerados automaticamente.

alt text

Após uma tabela ser criada, campos e relacionamentos podem ser definidos. Todas as atualizações em uma tabela são publicadas em tempo real, proporcionando uma experiência perfeita entre definir um modelo de dados e tê-lo altamente disponível.

Assim que uma tabela é atualizada, seus tipos de esquema GraphQL correspondentes e os resolvedores de consulta, mutação e assinatura serão atualizados automaticamente.

Para garantir que erros e enganos relacionados a tabelas sejam minimizados, o Archie Core protege contra muitas ações prejudiciais. Algumas delas incluem:

  • Um aviso exigindo um Default Value (Valor Padrão) aparecerá ao alterar um campo não obrigatório para obrigatório.
  • Valores dos campos Data, Número e Texto são convertidos automaticamente quando um tipo de campo existente é atualizado.
  • Ao alterar um campo não único para único, os registros atuais são validados para ter valores únicos.

Para excluir uma tabela:

  1. Vá para o nome da tabela e clique em ...
  2. Clique em Delete this Table (Excluir esta Tabela).
  3. Uma caixa de diálogo de confirmação é aberta. Digite o nome da tabela e clique em Delete (Excluir).

Perigo: Tabelas excluídas não podem ser restauradas e quaisquer registros de tabela existentes serão perdidos. Além disso, se houver tabelas relacionadas à tabela sendo excluída - pertence a (belongs to) e tem muitos (has many), especificadas como obrigatórias ou não - esses relacionamentos serão rompidos.

alt text

O Archie Core suporta três tipos de relacionamentos de tabela a serem definidos que são congruentes com o que se espera de bancos de dados relacionais:

TipoA para BB para A
um-para-umRegistros na tabela A podem ter_um (have_one) ou pertencer_a (belong_to) registros na tabela B.Registros na tabela B podem ter_um (have_one) ou pertencer_a (belong_to) registros na tabela A.
um-para-muitosO registro na tabela A pode ter_muitos (have_many) registros na tabela B.Registros na tabela B podem ter_um (have_one) ou pertencer_a (belong_to) registros na tabela A.

alt text

Definir um relacionamento entre duas tabelas pode ser realizado arrastando e soltando uma tabela sobre outra ou selecionando Table (Tabela) como o Tipo de Dados ao criar um novo campo de tabela.

Para especificar relacionamentos tem muitos, tem um e pertence a entre tabelas.

Configurações

  • Name: Para selecionar qual tabela deve ser relacionada.
  • Related Table: O nome do relacionamento como aparece na tabela correspondente.
  • Type: Se o relacionamento é tem um ou tem muitos.
  • Description: Uma caixa de texto opcional onde você pode escrever informações sobre o campo.
  • Mandatory: Se o relacionamento do campo é obrigatório.

Existem três tipos de tabelas: Personalizada (Custom), Visão (View) e Tipo de Dados (Data Type).

Tabelas personalizadas são as tabelas criadas em qualquer espaço de trabalho por um administrador. Elas são totalmente personalizáveis.

Tabelas de Visão são tabelas virtuais que agregam campos de várias tabelas em uma única visão. Nos bastidores, elas são baseadas no conjunto de resultados de uma instrução SQL. Em um espaço de trabalho, elas podem ser criadas usando a mutação GraphQL viewCreate no API Explorer.

Tipos permitem definir um conjunto estático e ordenado de valores mutuamente exclusivos. Ao contrário dos campos de texto padrão, um Enum restringe a entrada de dados a uma lista específica de constantes predefinidas.

Exemplos comuns incluem indicadores de status (por exemplo, RASCUNHO, PUBLICADO, ARQUIVADO), funções de usuário ou rótulos de categoria.

O uso de Enums no esquema do seu banco de dados oferece várias vantagens principais:

  • Integridade de Dados: Enums impõem validação de dados rigorosa no nível do banco de dados. Como o campo aceita apenas valores da lista definida, ele elimina erros causados por erros de digitação ou convenções de nomenclatura inconsistentes (por exemplo, impedindo uma mistura de “Alto”, “alto” e “Oi” para um campo de prioridade).
  • Consistência de Código: Eles fornecem uma única fonte de verdade para valores permitidos, tornando a lógica da aplicação mais previsível e fácil de manter.
  • Legibilidade: Enums tornam os dados autodescritivos. Um valor como PAGAMENTO_FALHOU é muito mais significativo para desenvolvedores e analistas do que um código numérico arbitrário como codigo_erro: 3.
  • Desempenho: No PostgreSQL, Enums são armazenados de forma eficiente nos bastidores, mas apresentados como strings legíveis, oferecendo um equilíbrio entre desempenho e legibilidade humana.