Prisma de base é um dos recursos mais práticos e elegantes para deixar a modelagem de dados no banco de dados mais clara e segura. Trata-se de uma tabela ou view que serve como ponto de partida para diversas entidades, centralizando atributos que várias outras tabelas podem compartilhar. Se você está construindo um sistema no banco de dados com Prisma, entender como o prisma de base funciona ajuda a evitar repetição, facilita migrações e deixa o schema mais organizado.

O que é um prisma de base

Um prisma de base, no contexto do Prisma ORM, pode ser interpretado como a tabela ou view central que define atributos comuns usados por outras tabelas. Ela funciona como ponto de partida para herança ou para normalizar colunas como createdAt, updatedAt, status ou tenantId. Diferente de um modelo que representa uma entidade de negócio diretamente, o prisma de base é mais uma estrutura de apoio que ajuda a manter o schema coeso e DRY.

Quando usar um prisma de base

Use um prisma de base quando houver vários recursos que compartilhem colunas ou regras comuns, como tabelas de usuários, empresas, produtos ou logs. Ele é especialmente útil em sistemas multilocatários, auditorias, soft deletes ou quando você precisa de um padrão de colunas para garantir consistência em toda a base. Em vez de repetir as mesmas definições em diversos modelos, você centraliza no prisma de base.

Prisma - Geometria Espacial - InfoEscola
Prisma - Geometria Espacial - InfoEscola

Vantagens de adotar um prisma de base

  • Organização: deixa o schema mais limpo e com menos repetição de código.
  • Manutenção simplificada: alterações em colunas compartilhadas exigem apenas uma atualização.
  • Consistência: todos os modelos que herdam ou utilizam o prisma de base seguem o mesmo padrão de colunas.
  • Segurança e auditoria: facilita a inclusão de colunas como createdAt, updatedAt e deletedAt de forma uniforme.

Como modelar um prisma de base no Prisma Schema

No Prisma Schema, você define o prisma de base como um modelo comum com os campos que serão compartilhados. Em seguida, outros modelos podem estender esse modelo ou fazer referência a ele, dependendo da abordagem escolhida. O uso de relações e herança de modelo no Prisma permite criar uma estrutura modular, onde o prisma de base atua como contrato inicial.

Exemplo básico de schema com prisma de base

model BaseEntity {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  active    Boolean  @default(true)
}

model User extends BaseEntity {
  email    String  @unique
  name     String
  role     Role
}

model Product extends BaseEntity {
  sku    String
  price  Float
}

Herança versus composição

Uma das decisões ao usar um prisma de base é escolher entre herança e composição. A herança no Prisma permite que modelos estendam um modelo base, enquanto a composição usa o prisma de base como referência em outros modelos sem herdar diretamente. Cada abordagem tem trade-offs, então avalie se precisa de polimorfismo no banco de dados ou se a composição atende melhor ao seu domínio.

Integração com migrações

O prisma de base também influencia as migrações automáticas. Ao alterar o modelo base, o Prisma pode gerar novas migrações que propagam as mudanças para as tabelas que dependem dele. É importante revisar as migrações geradas para garantir que índices, constraints e colunas sejam atualizados conforme o esperado, especialmente em ambientes de produção com dados já existentes.

Prisma - Geometria Espacial - InfoEscola
Prisma - Geometria Espacial - InfoEscola

Prisma de base com soft delete

Uma aplicação comum do prisma de base é implementar o soft delete. Basta adicionar uma coluna deletedAt opcional no modelo base e, nos selects, filtrar registros onde deletedAt seja nulo. Isso evita a exclusão física de dados e mantém o histórico, tudo de forma transparente e reutilizável em vários modelos.

Dicas práticas e boas práticas

  • Mantenha o prisma de base leve, com apenas colunas realmente compartilhadas.
  • Documente claramente a finalidade do prisma de base no repositório ou no README do projeto.
  • Use índices estrategicamente no prisma de base, especialmente em colunas de consulta frequente como email ou tenantId.
  • Considere adicionar validações no banco para colunas críticas, como active ou tenantId.
  • Teste as migrações que envolvem o prisma de base em ambiente de homologação antes de aplicar em produção.

Como integrar o prisma de base em projetos existentes

Se você já tem um banco em produção e quer introduzir um prisma de base, planeje a migração com cuidado. Comece criando o modelo base, depois atualize os modelos existentes para estendê-lo ou referenciá-lo. Use migrações passo a passo e, se necessário, escreva scripts para preencher valores padrões em colunas novas. A comunicação com a equipe é essencial para evitar interrupções.

Perguntas frequentes

Posso ter mais de um prisma de base no mesmo projeto?

Sim, é possível ter múltiplos prisma de base para diferentes contextos, como um para entidades comuns e outro para entidades de auditoria. O importante é manter a organização e evitar conflitos de nomenclatura.

Prisma: elementos, classificação, fórmulas, exemplos
Prisma: elementos, classificação, fórmulas, exemplos

O prisma de base afeta o desempenho?

Depende de como for modelado. Tabelas com muitas colunas compartilhadas podem aumentar o tamanho das linhas, mas, na maioria dos casos, o benefício em organização e manutenibilidade supera o custo marginal de desempenho.

Como tratar relacionamentos com um prisma de base?

Relacionamentos podem ser definidos normalmente entre modelos que estendem ou referenciam o prisma de base. O Prisma entende as chaves estrangeiras e as relações, desde que os campos estejam corretamente configurados no schema.

É necessário usar herança no Prisma para aproveitar o prisma de base?

Não necessariamente. Você pode usar composição, referenciando o prisma de base em outros modelos, caso a herança não seja adequada para o seu modelo de domínio ou banco de dados.

Prisma - Geometria Espacial - InfoEscola
Prisma - Geometria Espacial - InfoEscola