O que é CRUD? 

Diariamente, quando realizamos qualquer tarefa online, como enviar mensagens, fazer compras ou acessar redes sociais, estamos interagindo com sistemas que criam, consultam, modificam e excluem dados. Para garantir que essas operações aconteçam de forma eficiente e segura, entre diferentes dispositivos e sistemas, foram estabelecidos padrões e regras ao longo do tempo. 

O modelo CRUD (Create, Read, Update, Delete) é um desses padrões amplamente adotados no desenvolvimento de sistemas. Ele define quatro operações fundamentais para a manipulação de dados em bancos de dados, tanto relacionais quanto não relacionais. Além de padronizar as operações de processamento de dados, o CRUD também fornece uma estrutura clara para o desenvolvimento de APIs REST, amplamente utilizadas na comunicação entre aplicações e banco de dados. 

Ao longo deste texto, exploraremos o conceito de CRUD em detalhes, incluindo exemplos práticos no MongoDB, e veremos como ele se relaciona com os métodos HTTP e a criação de APIs. Vamos lá? 

1 – Significado de CRUD 

CRUD é um acrônimo para as iniciais que representam as quatro operações básicas de um banco de dados: Create (Criar), Read (Ler), Update (Atualizar), Delete (Excluir).  

Compatível tanto com bancos SQL quanto NoSQL, é por meio dessas operações que sistemas e aplicações recebem e manipulam os dados dos seus usuários. Além disso, outro ponto de destaque do CRUD, é que ele é o padrão adotado em APIs REST para interação com banco de dados, sendo, portanto, amplamente utilizado e conhecido no desenvolvimento de serviços back-end.  

Cada elemento do acrônimo CRUD representa uma operação que pode ser executada em um banco de dados, sendo definidos assim: 

Create (Criar): é a operação utilizada para criar dados em uma base.  

Read (Ler): é a operação de consulta (leitura) de dados de uma base.  

Update (Atualizar): essa operação é responsável por alterar dados registrados em uma base.

Delete (Excluir): essa operação, por sua vez, é responsável por excluir dados de uma base. 

De um modo geral, toda interação com o banco de dados precisa passar por um processo de autenticação, visando garantir a segurança dos dados. A leitura é a operação mais simples de todas, pois, trata-se somente de uma consulta aos dados criados e, geralmente, não possui grandes restrições de acesso. As demais operações são mais críticas e requerem uma atenção maior. Criar, modificar ou excluir dados deve ser restrito para poucas pessoas, as quais devem estar devidamente preparadas para realizar essas ações, pois, uma operação incorreta pode gerar grandes prejuízos para os envolvidos.  

Imagine uma situação em que um usuário inexperiente configura, incorretamente, uma operação de exclusão de dados em uma base de clientes. Era para excluir um cadastro em específico, mas, a operação excluiu a base inteira de clientes. Pense nos desdobramentos que isso poderia gerar. Por isso, é muito importante ter um controle rigoroso de qual operação pode ser executada por qual usuário, evitando que pessoas inexperientes ou, até mesmo, mal-intencionadas causem danos aos dados armazenados em uma base. 

2 – Exemplo de CRUD com MongoDB 

Para facilitar o entendimento do conceito de CRUD vamos criar um exemplo simples usando o MongoDB. Todos os comandos que veremos a seguir são aplicados, diretamente, no shell do MongoDB.  

Vamos começar criando uma collection chamada “funcionarios” para receber os dados:

use funcionarios 

Agora vamos criar os primeiros dados dessa collection usando a função insertMany(): 

db.funcionarios.insertMany([ 
{ matricula: "1000", nome: "Ana Maria Silva", cargo: "Auxiliar administrativo", salario: 2500.00}, 
  { matricula: "1001", nome: "Tiago Oliveira", cargo: "Auxiliar administrativo", salario: 2500.00}, 
  { matricula: "1002", nome: "Marcos Antonio Pereira", cargo: "Analista administrativo", salario: 4000.00}, 
  { matricula: "1003", nome: "Sergio Almeida", cargo: "Gerente", salario: 7000.00} 
]) 

Sua base de dados deve ter ficado assim:

Print do banco de dados Mongo após execução da função insertMany();

Observe que, automaticamente, o MongoDB gerou identificadores (_id) para cada documento registrado. Isso é uma regra do próprio MongoDB, onde todo documento precisa ter um campo _id, que é um identificador único para aquele registro dentro da coleção.  

Após criar os dados, vamos realizar uma operação de leitura (consulta) aos dados gravados usando a função find(): 

db.funcionarios.find() 

O resulta dessa função será visto no próprio shell do MongoDB: 

Print do banco de dados Mongo após execução da função find();

Agora vamos atualizar alguns dados de um registro da base, usando a função updateOne(): 

db.funcionarios.updateOne( 
     { matricula: "1001" },  # Critério de seleção 
     { $set: { cargo: "Assistente Administrativo" , salario: 3000.00 }} # Campos a serem atualizados ) 

Com a execução da operação acima, o resultado será esse: 

Print do banco de dados Mongo após execução da função updateOne();

Por fim, vamos excluir um registro da base, usando a função deleteOne(): 

db.funcionarios.deleteOne({ matricula: "1000"}) 

A função acima, irá gerar o seguinte resultado: 

Print do banco de dados Mongo após execução da função deleteOne();

As operações CRUD são a base para manipulação dos dados em bancos de dados. De um banco de dados para outro somente o que muda são os comandos utilizados para realizar as operações.   No entanto, o conceito fundamental permanece o mesmo, seja trabalhando com bancos de dados relacionais como MySQL ou PostgreSQL, ou com bancos NoSQL como MongoDB, que exemplificamos aqui. 

3 – O CRUD e os métodos HTTP 

Embora tenhamos demonstrado exemplos simples no MongoDB, em aplicações reais, estas operações geralmente são implementadas através de APIs REST ou interfaces de usuário, proporcionando uma camada adicional de segurança e controle da informação.  

Quando falamos de APIs REST, existe uma correspondência direta entre as operações CRUD e os métodos HTTP. Os métodos HTTP, também conhecidos como verbos HTTP, são utilizados para indicar a ação desejada ao interagir com um recurso em um servidor. Cada verbo HTTP tem um propósito específico que se alinha naturalmente com uma operação CRUD, como podemos ver na tabela abaixo: 

CRUD MÉTODO HTTP 
CREATE (Criar) POST 
READ (Ler) GET 
UPDATE (Atualizar) PUT / PATCH 
DELETE (Excluir) DELETE 

Na tabela acima, é possível perceber que para cada operação CRUD existe um método HTTP correspondente. Há uma observação no caso da operação UPDATE, que têm dois métodos HTTP: o PUT e o PATCH. 

A diferença entre eles é que, o verbo PATCH é usado para atualizações parciais de recursos, enquanto o verbo PUT é usado para substituição completa de um recurso existente. 

Entender claramente essa relação entre as operações CRUD e os métodos HTTP traz diversos benefícios para o desenvolvimento e consumo de APIs. Ao utilizar os verbos HTTP apropriados, obtemos uma semântica clara, onde a intenção de cada requisição se torna imediatamente explícita para outros desenvolvedores. 

A adoção do CRUD também permite a padronização de diferentes sistemas e frameworks, facilitando a comunicação entre eles e promovendo a interoperabilidade. 

Utilizar o CRUD no desenvolvimento de suas APIs permite construir uma comunicação simples, eficaz e segura com o seu banco de dados. Além disso, sua API será composta por serviços funcionais, robustos e escaláveis, pois, ao utilizar padrões de desenvolvimento consolidados no mercado será mais fácil de mantê-la em longo prazo, bem como aplicar melhorias. 

Conclusão 

O modelo CRUD é fundamental para a organização e manipulação de dados, garantindo simplicidade e consistência nas operações. Além de ser um conceito central em bancos de dados, ele também é essencial na construção de APIs REST e outras aplicações que lidam com dados. 

Adotar esse padrão facilita a criação de serviços mais eficientes e seguros, permitindo que desenvolvedores mantenham boas práticas de design e comunicação entre sistemas. Ao entender a relação entre as operações CRUD e os métodos HTTP, é possível construir interfaces intuitivas e escaláveis, alinhadas às melhores práticas da arquitetura de software. Em um mundo onde cada vez mais dados são criados e consumidos, o domínio desse conceito se torna indispensável para quem deseja desenvolver sistemas robustos, eficientes e bem estruturados. 

Espero que este artigo seja útil de alguma forma para você. Em caso de dúvidas, sugestões ou reclamações, fique à vontade para entrar em contato. 

E se você quer aprender mais sobre programação, acesse aqui a seção que tenho dedicada ao assunto.   

Referências: 

https://apidog.com/pt/blog/http-put-vs-patch/
https://blog.betrybe.com/tecnologia/crud-operacoes-basicas/
https://coodesh.com/blog/dicionario/o-que-e-crud/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *