# Campos, tipos e validação com ASSERT no SurrealDB

> **Resposta Direta:** A Aula 14 de 20 ("Campos, tipos e validação com ASSERT no SurrealDB"), parte do módulo "Schema" do curso gratuito "SurrealDB do zero: fundamentos com um CRM" na Escola de Aplicativos (ministrado por Mauro Mequelussi), ensina na prática: o aluno aprende a estruturar os campos das tabelas do CRM no SurrealDB usando DEFINE FIELD. O conteúdo aborda tipos primitivos, objetos aninhados, arrays, a flexibilidade da cláusula FLEXIBLE e campos opcionais. Também explora validações com ASSERT, automação de datas com DEFAULT e VALUE, além de regras de segurança por campo baseadas no Código de Defesa do Consumidor.

## Ficha Técnica da Aula

- **Curso:** [SurrealDB do zero: fundamentos com um CRM](https://www.escoladeaplicativos.com.br/cursos/surrealdb-do-zero)
- **Escola:** Escola de Aplicativos (https://www.escoladeaplicativos.com.br)
- **Instrutor:** Mauro Mequelussi
- **Módulo 4 de 6:** Schema
- **Posição na trilha:** Aula 14 de 20
- **Duração da videoaula:** 7 min
- **Nível:** Iniciante
- **Idioma:** Português (PT-BR)
- **Custo:** 100% Gratuito (R$ 0)
- **Certificado:** Certificado gratuito verificável incluso ao concluir o curso
- **Acesso ao vídeo:** Resumo técnico aberto; videoaula em HD liberada mediante cadastro gratuito
- **URL canônica:** https://www.escoladeaplicativos.com.br/cursos/surrealdb-do-zero/campos-tipos-e-validacao-com-assert-no-surrealdb

## O que você vai aprender

- Como usar o comando DEFINE FIELD e a cláusula TYPE em tabelas com schema
- A diferença entre tipos simples (string, decimal) e tipos complexos (objetos, arrays e option)
- Como permitir estruturas flexíveis em tabelas rígidas usando a cláusula FLEXIBLE
- A criar restrições e regras de validação personalizadas usando ASSERT
- A diferença prática entre DEFAULT e VALUE para campos de data (created_at e updated_at)
- Como configurar permissões de acesso e edição direto na definição de cada campo

## Pontos-chave da Aula

- O DEFINE FIELD opera de forma independente do DEFINE TABLE e sempre exige indicar a tabela com ON TABLE.
- Valores monetários devem usar o tipo decimal para evitar erros de arredondamento inerentes a números de ponto flutuante.
- A cláusula FLEXIBLE viabiliza armazenar objetos ou listas sem schema pré-definido dentro de tabelas schemafull.
- O ASSERT avalia expressões lógicas usando $value e recusa operações que não cumpram a condição estabelecida.
- DEFAULT roda apenas no momento da criação do registro, enquanto VALUE é recalculado a cada modificação.
- Permissões por campo garantem regras de negócio robustas, como limitar o pedido de reembolso ao prazo do CDC.

## Capítulos e Tópicos da Videoaula

- **[00:00] Por que definir regras e tipos em campos** — Entenda os riscos de deixar um banco sem validação e veja como o comando DEFINE FIELD funciona.
- **[00:56] Tipos simples e tipos complexos no SurrealDB** — Aprenda a definir strings, decimais, objetos com notação de ponto e arrays estruturados.
- **[02:10] Campos FLEXIBLE, record links e option** — Veja como liberar dados sem schema rígido usando FLEXIBLE e como usar record e option para campos opcionais.
- **[03:27] Validação de dados com a cláusula ASSERT** — Garanta a consistência de e-mails e notas numéricas barrando valores inválidos diretamente no banco.
- **[04:19] Diferença prática entre DEFAULT e VALUE** — Descubra quando usar DEFAULT para criação e VALUE para atualização automática de timestamps.
- **[05:01] Permissões de campo e regra de reembolso do CDC** — Implemente regras de negócio complexas como o prazo de 7 dias do Código de Defesa do Consumidor via permissões no campo.
- **[05:59] Resumo das definições de campo** — Recapitulação dos conceitos de campos, tipos, asserções e permissões para preparar o CRUD com schema.

## Destaques Práticos

- **[02:10] Como usar campos FLEXIBLE para dados variáveis**: Precisa salvar dados sem formato fixo dentro de uma tabela com schema rígido? Veja como a cláusula FLEXIBLE resolve isso.
- **[03:27] Evite lixo no banco validando dados com ASSERT**: Descubra como impedir e-mails inválidos e notas fora da escala diretamente na camada de dados com o comando ASSERT.
- **[04:19] DEFAULT versus VALUE na prática**: Entenda de vez a diferença entre DEFAULT e VALUE configurando datas de criação e atualização automáticas.
- **[05:01] Aplicando o CDC com permissões por campo**: Veja como aplicar a regra de 7 dias de arrependimento do CDC direto na permissão do campo de reembolso.

## Conceitos e Tecnologias Abordados

- **Tópicos:** Definição de campos com DEFINE FIELD, Tipos de dados no SurrealDB, Validação com ASSERT, Campos FLEXIBLE e Option, Diferença entre DEFAULT e VALUE, Permissões por campo
- **Ferramentas e Entidades:** SurrealDB, Código de Defesa do Consumidor

## Documentação e Referências Oficiais

- [Documentação do comando DEFINE FIELD no SurrealDB](https://surrealdb.com/docs/surrealql/statements/define/field)
- [Código de Defesa do Consumidor (Lei nº 8.078)](https://www.planalto.gov.br/ccivil_03/leis/l8078compilado.htm)

## Perguntas Frequentes (FAQ)

### O que é ensinado na Aula 14 (Campos, tipos e validação com ASSERT no SurrealDB) do curso SurrealDB do zero: fundamentos com um CRM?

Nesta aula do módulo "Schema" na Escola de Aplicativos, você aprende de forma prática: Como usar o comando DEFINE FIELD e a cláusula TYPE em tabelas com schema; A diferença entre tipos simples (string, decimal) e tipos complexos (objetos, arrays e option); Como permitir estruturas flexíveis em tabelas rígidas usando a cláusula FLEXIBLE; A criar restrições e regras de validação personalizadas usando ASSERT.

### Como assistir ao vídeo completo da aula "Campos, tipos e validação com ASSERT no SurrealDB" gratuitamente?

O resumo técnico estruturado desta aula é público e gratuito. Para assistir à videoaula completa em HD, basta entrar ou criar sua conta 100% gratuita na Escola de Aplicativos — o cadastro leva segundos e libera todas as 20 aulas do curso "SurrealDB do zero: fundamentos com um CRM", controle de progresso, Tutor IA e emissão de certificado gratuito.

### Quais tecnologias e conceitos são abordados em "Campos, tipos e validação com ASSERT no SurrealDB"?

A aula cobre diretamente os seguintes tópicos técnicos aplicados em produção: Definição de campos com DEFINE FIELD, Tipos de dados no SurrealDB, Validação com ASSERT, Campos FLEXIBLE e Option, Diferença entre DEFAULT e VALUE, Permissões por campo.

### O curso "SurrealDB do zero: fundamentos com um CRM" oferece certificado gratuito?

Sim. Ao assistir às 20 aulas do curso gratuito "SurrealDB do zero: fundamentos com um CRM" na Área de Membros da Escola de Aplicativos, você emite gratuitamente um certificado digital em português com código de verificação pública.

## Como assistir à videoaula completa gratuitamente

Crie sua conta gratuita em segundos em https://www.escoladeaplicativos.com.br/login?redirect=%2Fm%2Fcursos%2Fsurrealdb-do-zero%2Faula%2Fcampos-tipos-e-validacao-com-assert-no-surrealdb para assistir ao vídeo completo desta aula em HD na Área de Membros da Escola de Aplicativos, com progresso salvo, Tutor IA e certificado gratuito verificável.

## Navegação do Curso

- **Aula anterior:** [Aula 13: Definindo tabelas com schema, views e changefeeds](https://www.escoladeaplicativos.com.br/cursos/surrealdb-do-zero/definindo-tabelas-com-schema-views-e-changefeeds)
- **Próxima aula:** [Aula 15: CRUD com schema: adicionando, removendo e alterando campos](https://www.escoladeaplicativos.com.br/cursos/surrealdb-do-zero/crud-com-schema-adicionando-removendo-e-alterando-campos)
