Banco de Dados - orivaldosantana/mvp_banco_talentos GitHub Wiki

Prisma

Primsa é um ORM (Object-Relational Mapping) de código aberto (https://www.prisma.io/). ORM significa Object-Relational Mapping (Mapeamento Objeto-Relacional), é uma técnica de programação que converte dados entre sistemas incompatíveis usando programação orientada a objetos. No contexto de bancos de dados, um ORM é uma camada de software que ajuda a converter dados entre o banco de dados (que geralmente é relacional) e o modelo de objeto da linguagem de programação.

Um ORM permite que o programador interaja com banco de dados, como se estivesse trabalhando com objetos JavaScript. Ele abstrai e encapsula as complexidades de operações SQL, permitindo que os desenvolvedores manipulem os dados do banco de dados sem precisar escrever consultas SQL complexas. Além disso, os ORMs fornecem uma série de outros recursos úteis, como rastreamento de alterações, e gerenciamento de migrações de banco de dados.

Para começar a usar o Prisma no projeto execute o seguinte comando:

npx prisma init

Este comando inicializa um novo projeto Prisma no diretório atual (raiz do projeto). Ele cria um novo arquivo prisma/.env para as variáveis de ambiente e um arquivo prisma/schema.prisma que define o esquema do banco de dados.

Note que npx é usado em vez de npm porque npx é uma ferramenta que vem com npm e permite executar pacotes npm que foram instalados globalmente. prisma init é um comando do CLI do Prisma, então ele precisa ser executado com npx se você estiver usando npm.

Esquema

Um esquema de banco de dados é uma representação do seu layout e sua estrutura. Ele define as tabelas, campos, relações entre tabelas e outras propriedades do banco de dados.

No Prisma, o esquema do banco de dados é definido no arquivo schema.prisma. Este arquivo contém as seguintes partes principais:

  1. generator client: Esta seção define a configuração do cliente Prisma. O campo provider é definido como prisma-client-js, o que significa que o Prisma gerará um cliente em JavaScript para projeto.

  2. datasource: Esta seção define a configuração do banco de dados, incluindo o tipo de banco de dados (por exemplo, PostgreSQL, MySQL, SQLite) e a URL do banco de dados. Uma opção de banco de dados postgresql em nuvem e fácil utilização é o https://neon.tech/. A Neon fornece uma conta de banco de dados gratuitamente que é suficiente para uma implementação inicial.

  3. model: Cada modelo representa uma tabela no banco de dados. Os campos do modelo representam colunas na tabela. Os decoradores (por exemplo, @id, @default, @unique) são usados para definir características adicionais para as colunas.

Após a configuração do esquema, o comando prisma generate é executado para gerar o cliente Prisma para fornecer um meio de interação com o banco de dados.

Modelo de Dados para Usuários

O um modelo User representa uma tabela User no banco de dados. Cada campo no modelo representa uma coluna na tabela. Os decoradores como @id, @default, @unique e @updatedAt são usados para definir características adicionais para as colunas.

A linha id String @id @default(cuid()) define uma coluna chamada id na tabela do banco de dados. Detalhadamente:

  • id: Este é o nome da coluna.
  • String: Este é o tipo de dados da coluna. Neste caso, a coluna id armazenará strings.
  • @id: Este é um decorador Prisma que indica que a coluna id é a chave primária da tabela. Cada tabela deve ter exatamente uma coluna com o decorador @id.
  • @default(cuid()): Este é outro decorador Prisma que define um valor padrão para a coluna quando uma nova linha é criada. cuid() é uma função que gera uma string única, o que é útil para IDs.

A linha name String? define uma coluna chamada name do tipo String na tabela do banco de dados. O operador ? é opcional. Isso significa que a coluna name pode conter um valor null.

Relacionamento Muitos para Muitos

Um relacionamento muitos-para-muitos é um tipo de associação entre duas entidades que permite que ambas se relacionem em muitas instâncias. Em outras palavras, uma instância de uma entidade pode estar associada a muitas instâncias de outra entidade e vice-versa. Por exemplo, considere um sistema que gerencia livros e autores. Um livro pode ter vários autores e um autor pode escrever vários livros. Portanto, entre livros e autores, existe um relacionamento muitos-para-muitos.

Exemplo com usuários e projetos, User e Project, existe um relacionamento muitos-para-muitos. Um usuário pode participar de vários projetos e um projeto pode ter várias pessoas.

No Prisma, um relacionamento muitos-para-muitos é representado por um vetor no modelo. Por exemplo, projects Project[] no modelo User e users User[] no modelo Project representam um relacionamento muitos-para-muitos. Um relacionamento muitos-para-muitos é geralmente implementado com uma tabela de junção. No entanto, Prisma abstrai essa complexidade e permite trabalhar diretamente com os relacionamentos muitos-para-muitos.

Migração

Uma migração de banco de dados é uma alteração ou conjunto de alterações feitas na estrutura do banco de dados. As migrações são usadas para adicionar, alterar ou remover tabelas, colunas, índices e outros aspectos do esquema do banco de dados. As migrações são definidas em arquivos de migração, que são scripts que descrevem as alterações a serem feitas no banco de dados. Cada arquivo de migração corresponde a uma versão específica do esquema do banco de dados.

O Prisma Migrate é a ferramenta de migração de banco de dados do Prisma. Ele permite que você defina migrações em seu arquivo schema.prisma e as aplique ao seu banco de dados usando comandos como npx prisma migrate dev (para ambiente de desenvolvimento) e prisma migrate deploy (para ambiente de produção).

Explicação detalhada sobre o comando npx prisma migrate dev:

  1. Ele verifica se há alguma mudança no arquivo schema.prisma que ainda não foi aplicada ao banco de dados.

  2. Se houver alguma mudança, ele cria uma nova migração para essas mudanças.

  3. Ele aplica a nova migração ao banco de dados. Isso atualiza a estrutura do banco de dados para corresponder ao que está definido no arquivo schema.prisma.

  4. Ele gera o Prisma Client com base no esquema atualizado. O Prisma Client é uma biblioteca que permite que seu código interaja com o banco de dados.

Portanto, npx prisma migrate dev é uma maneira conveniente de atualizar o banco de dados e o Prisma Client sempre que você faz uma mudança no esquema de banco de dados.

Prisma Studio

Prisma Studio é uma interface gráfica do usuário (GUI) auto-hospedada para visualizar e editar dados em seu banco de dados. É uma alternativa moderna para as tradicionais interfaces de administração de banco de dados. Prisma Studio fornece uma visão intuitiva dos dados e permite execução de operações CRUD (Create, Read, Update, Delete) diretamente na interface. Ele também fornece recursos para filtrar e ordenar dados, visualizar registros relacionados e muito mais.

Para iniciar o Prisma Studio, use o comando:

npx prisma studio

Este comando abrirá o Prisma Studio no navegador padrão.

Referências