Estrutura do banco e organização de objetos
Schema, ou esquema, pode designar a estrutura do banco: tabelas, colunas, tipos e restrições que definem o armazenamento. Em bancos como PostgreSQL, a palavra também identifica um namespace, um agrupamento nomeado de objetos dentro de um banco. O sentido precisa ser reconhecido na documentação utilizada.
A estrutura de uma tabela determina quais campos existem e quais valores são aceitos. Os registros são o conteúdo armazenado nessa estrutura. Criar uma coluna e preencher uma linha são operações diferentes, embora ambas alterem o banco.
Ao acrescentar um campo ao formulário para gravá-lo no banco, você precisa preparar o armazenamento correspondente e o código que fará a gravação. Publicar apenas o formulário não cria automaticamente a coluna que o backend pretende usar.
Tipos e restrições
CREATE TABLE contatos (
id INTEGER PRIMARY KEY,
nome TEXT NOT NULL,
codigo_externo TEXT UNIQUE
);O exemplo declara uma identidade, um nome não nulo e um código externo com restrição de unicidade. No PostgreSQL, NOT NULL impede nulo, mas não impede sozinho uma string vazia. Uma restrição adicional como CHECK (nome <> '') recusaria a string vazia, embora ainda aceitasse um texto formado apenas por espaços.
Da mesma forma, tipos e restrições devem refletir o significado do campo. Um texto que contém uma data não recebe automaticamente todas as garantias de uma coluna de data. A escolha influencia consultas, validações e alterações futuras.
Schema como namespace no PostgreSQL
Um banco PostgreSQL pode conter vários schemas nomeados. Uma tabela pode ser identificada por um nome qualificado, como atendimento.contatos. Isso permite organizar objetos e usar nomes iguais em schemas distintos.
O caminho de busca, chamado search_path, influencia a resolução de nomes não qualificados. Uma consulta a contatos pode encontrar um objeto diferente conforme essa configuração. Permissões também precisam ser configuradas, pois a separação por nome não garante isolamento de acesso por si só.
Alterações precisam considerar os registros existentes
Acrescentar NOT NULL a uma coluna que já contém valores nulos pode falhar. Antes dessa alteração, você precisa definir como preencher ou corrigir as linhas existentes. Remover uma coluna também afeta o conteúdo armazenado, pois elimina os valores associados a ela.
Migrations permitem registrar e aplicar a evolução de forma controlada. Alterações manuais também mudam o schema, mas podem deixar o ambiente diferente do histórico esperado. A comparação entre definição real e migrations identifica essa divergência.
Como conferir a estrutura
Compare a definição das tabelas nos ambientes que deveriam ter a mesma versão. No exemplo de contatos, tente gravar um nome nulo e repetir um código externo para conferir as restrições declaradas. Verifique também o nome qualificado usado nas consultas, pois iniciar a aplicação não comprova que ela acessa a tabela esperada.
O verbete de migration explica como registrar a evolução dessa estrutura junto do projeto.
Dúvidas frequentes
Perguntas frequentes sobre Schema
- Schema significa sempre a estrutura inteira?
- O termo também pode designar um namespace dentro de um banco, como no PostgreSQL. A documentação da tecnologia determina o sentido utilizado.
- NOT NULL exige um texto preenchido?
- A restrição impede valores nulos, mas permite uma string vazia. Para recusar esse caso, o banco ou a aplicação precisa verificar também o conteúdo do texto.
- Separar tabelas em schemas garante isolamento de acesso?
- A organização por nome não substitui permissões. Você precisa configurar no banco os acessos permitidos a cada usuário ou papel e aos objetos utilizados.
- Alterar a estrutura pode afetar conteúdo existente?
- Novas restrições podem ser incompatíveis com linhas atuais, e remover colunas pode eliminar valores. A evolução precisa considerar os registros já armazenados.
Para continuar
Recursos relacionados
Documentação
Tabelas no PostgreSQL
Descreve a estrutura de linhas, colunas e tipos.
Abrir recursoDocumentação
Restrições no PostgreSQL
Explica restrições de unicidade, referências, valores nulos e condições sobre colunas.
Abrir recursoDocumentação
Schemas no PostgreSQL
Explica namespaces, nomes qualificados, permissões e caminho de busca.
Abrir recursoSite de referência
Desenvolvimento Colaborativo da Dev Side Studio
Conheça o acompanhamento técnico ao vivo para conferir tabelas, tipos e restrições do schema utilizado pela aplicação.
Abrir recursoAplicação na formação
Formação DevOps
O schema descreve a estrutura usada para armazenar os registros e, em bancos como PostgreSQL, também pode nomear um agrupamento de objetos.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.