> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lumi.new/llms.txt
> Use this file to discover all available pages before exploring further.

# Bases de Dados

> Gerir os dados da sua web.

No Lumi, os **dados** são a informação estruturada que alimenta a funcionalidade dinâmica da sua aplicação, incluindo utilizadores, conteúdo, encomendas e muito mais. Esta informação é organizada em **tabelas**, que funcionam de forma semelhante a uma base de dados ou a uma folha de cálculo. Cada tabela consiste em **campos** (colunas), e cada campo contém um tipo específico de informação.

## Trabalhar com dados

### Como adicionar uma base de dados ao seu projeto.

Geralmente, o Lumi analisará automaticamente as suas necessidades e adicionará esta função quando for necessária uma base de dados. Também pode enfatizá-lo no prompt, como por exemplo "Criar um sistema de gestão de encomendas com uma base de dados para armazenar os dados das encomendas."

### Adicionar um registo manualmente

<img src="https://mintcdn.com/blockdance/ynWgEA-zeP9dMZPg/images/4.gif?s=75cbccfd591bb323b1fbd898803601df" alt="4 Gi" width="1276" height="720" data-path="images/4.gif" />

<Steps>
  <Step title="Navegue para a sua Tabela">
    Vá para Área de Trabalho → Dados e selecione a tabela à qual pretende adicionar dados.
  </Step>

  <Step title="Adicionar um Novo Registo">
    Clique no botão “Adicionar” e preencha os campos para o novo registo.
  </Step>
</Steps>

<Tip>
  **Dica:** Para uma experiência mais amigável, pode pedir ao chat para construir um formulário na sua aplicação, permitindo-lhe adicionar novos itens dinamicamente.
</Tip>

### Editar um registo manualmente

<img src="https://mintcdn.com/blockdance/ynWgEA-zeP9dMZPg/images/5.gif?s=5b00a080da6a7e5c3a232793e125aa4b" alt="5 Gi" width="1276" height="720" data-path="images/5.gif" />

<Steps>
  <Step title="Navegue para a sua Tabela">
    Vá para Área de Trabalho → Dados e selecione a tabela que contém o registo que pretende editar.
  </Step>

  <Step title="Editar o Registo">
    Clique no ícone da Caneta ✒️ para o registo desejado e faça as suas alterações.
  </Step>
</Steps>

### Eliminar e operações em lote

* Para eliminar um único registo

<img src="https://mintcdn.com/blockdance/ynWgEA-zeP9dMZPg/images/6.gif?s=62b77edc88b3b420fc6287c79d218ede" alt="6 Gi" width="1276" height="720" data-path="images/6.gif" />

<Steps>
  <Step title="Navegue para a sua Tabela">
    Vá para Área de Trabalho → Dados e selecione a tabela que contém o registo que pretende eliminar.
  </Step>

  <Step title="Eliminar o Registo">
    Clique no ícone do Caixote do Lixo 🗑 para o registo que pretende eliminar.
  </Step>
</Steps>

* Para fazer uma eliminação em lote

<img src="https://mintcdn.com/blockdance/ynWgEA-zeP9dMZPg/images/7.gif?s=0070d8d21b1fb977381a83c8c44b0486" alt="7 Gi" width="1276" height="720" data-path="images/7.gif" />

<Steps>
  <Step title="Navegue para a sua Tabela">
    Vá para Área de Trabalho → Dados e selecione a tabela da qual pretende eliminar registos.
  </Step>

  <Step title="Selecionar e Eliminar Registos">
    Selecione as caixas de verificação dos registos que pretende remover e, em seguida, clique no botão "Eliminar" que aparece junto à contagem da seleção.
  </Step>
</Steps>

<Warning>
  **Aviso:** Tenha cuidado, pois a eliminação é irreversível
</Warning>

## Tipos de campo suportados

1. Tipos de Dados Básicos

* **String**: Uma string codificada em UTF-8 usada para armazenar dados de texto.
* **Integer**: Inclui inteiros de 32 bits e 64 bits para armazenar valores inteiros.
* **Double**: Números de ponto flutuante de 64 bits para armazenar números decimais ou números grandes.
* **Boolean**: Armazena valores lógicos verdadeiro ou falso.
* **Null**: Representa um valor nulo ou um campo inexistente.

2. Tipos de Dados Complexos

* **Array**: Uma coleção ordenada de elementos que pode conter diferentes tipos de dados.
* **Object (Documento Embutido)**: Uma coleção de pares chave-valor que suporta estruturas aninhadas.
* **Date**: Armazena data e hora representadas como milissegundos UTC.

3. Tipos de Dados Especiais

* **ObjectId**: Um identificador único de 12 bytes, usado por defeito para o campo \_id de um documento.
* **Binary Data**: Armazena dados binários (como imagens, ficheiros).
* **Regular Expression**: Armazena expressões regulares para correspondência de texto.
* **JavaScript**: Suporta o armazenamento e a execução de código JavaScript.

4. Tipos de Dados Estendidos

* **Timestamp**: Um carimbo de data/hora de 64 bits onde os primeiros 32 bits são segundos e os últimos 32 bits são nanossegundos, usado para registar tempos de operação.
* **Decimal128**: Um número decimal de alta precisão de 128 bits, adequado para cálculos financeiros.
* **GeoJSON**: Armazena dados geoespaciais.

## Segurança e permissões da tabela

Cada tabela inclui as suas próprias definições de segurança para controlar o acesso aos dados:

* **Acesso de Leitura:** Define quem tem permissão para ver os registos dentro da tabela.
* **Acesso de Escrita/Eliminação:** Determina quem pode criar, atualizar ou eliminar registos.

<img src="https://mintcdn.com/blockdance/ynWgEA-zeP9dMZPg/images/image(44).png?fit=max&auto=format&n=ynWgEA-zeP9dMZPg&q=85&s=ab5d3abaf0caa231d6382f8660faf92e" alt="Image(44) Pn" width="2082" height="1236" data-path="images/image(44).png" />
