Guia da Modelagem de Dados: 5 passos para criação do modelo conceitual (parte 1)

Felipe Almeida
3 min readSep 18, 2018

--

Foto por Olu Eletu no Unsplash

Essa etapa da modelagem de dados torna-se trivial por meio de um processo bem definido. Aprenda a fazer o modelo conceitual seguindo um exemplo passo a passo.

Este artigo é parte de uma série de artigos que trata da modelagem de bancos de dados para o desenvolvimento de aplicações. É fortemente recomendada a leitura do texto anterior antes de prosseguir:

Desafio

Foi construída uma nova pizzaria na rua ao lado da sua casa. Estão em seus primeiros dias de funcionamento e o único banco de dados existente é uma planilha. Está nas suas mãos a responsabilidade de desenvolver uma estrutura mais robusta de armazenamento para ser usada em uma futura aplicação.

Banco de dados atual da pizzaria imaginária

Solução

Devem ser levantadas em cada passo perguntas sobre o ambiente do problema a ser resolvido para que seja feita uma boa modelagem. Nossa abordagem leva 5 passos para ser concluída.

  1. Identificar entidades;
  2. Enumerar atributos;
  3. Mapear relacionamentos;
  4. Verificar cardinalidades; e
  5. Avaliar condicionalidades.

Passo #1: identifique as entidades

Nossa primeira pergunta é: de quem ou do que é importante guardar os dados?

Foram registrados na planilha alguns dados referentes aos(às) clientes atendidos(as) e pedidos realizados na pizzaria. Logo, pode ser dito que “Cliente” e “Pedido” são duas entidades do nosso modelo. Um pouco óbvias, sim, mas … acabou?

Não.

É preciso questionar mais: onde ficam registradas as opções de massas e os outros produtos disponíveis para venda?

“Boa pergunta” — via GIPHY

Pois é, não ficam.

Minto: ficam registradas sim, mas o formato não é nem um pouco adequado. Não existe um controle consciente das opções de produtos disponíveis. São registrados apenas quando já saíram nos pedidos e não antes. É identificada por nós a existência de outra entidade, então: “Produto”!

Pode ser observado na planilha que são vendidas tanto massas feitas pelos cozinheiros quanto bebidas industrializadas. Ambas podem sim ser consideradas opções de produtos, mas concorda que existe uma sutil diferença entre elas?

“Muita informação gente, calma!” — via GIPHY

Vamos pensar um pouco: industrializados podem ser guardados no estoque por um bom período de tempo até suas datas de validade chegarem. Seus pesos também são relevantes para definição de preços. Refrigerantes de 2 litros custam bem mais do que latinhas de 266 mililitros, por exemplo.

Duram no máximo até o dia seguinte as pizzas e esfihas, porém. Também não faz sentido ter “galpão” para estocá-las quando são feitas na hora e geralmente não é interessante aos(às) donos(as) de pizzaria saber o peso delas — um tamanho único de massa é frequentemente praticado.

É preciso fazer essa distinção entre esses dois tipos de produtos. Eu não sei vocês, mas acredito que “ProdutoEstocavel” é um nome bem indicativo para descrever essa entidade especial de itens similares aos da entidade “Produto”.

Outras entidades surgirão nas próximas etapas, mas essas são suficientes para início:

  1. Cliente;
  2. Pedido;
  3. Produto; e
  4. ProdutoEstocavel.

Uhu! 😙

Passo #2: enumere os atributos

Nosso trabalho começa a ficar um pouco mais simples e rápido a partir de agora, já que tiramos as entidades do nosso caminho.

Precisamos agora responder a seguinte pergunta: que dados das entidades interessa a nós (ou a terceiros) guardar?

“Toda ajuda é bem vinda nessa hora” — via GIPHY

Percebemos que é interessante à pizzaria saber o nome, dois telefones, endereço e e-mail de cada instância da entidade “Cliente”.

Foram registrados também o valor total, a forma de pagamento usada, as observações e a data e hora de cada ocorrência de “Pedido” no estabelecimento.

Sabemos que toda instância de “Produto” e “ProdutoEstocavel” possuem nome e preço e que são logicamente indispensáveis para fazer comércio.

“Ninguém esperava por essa” — via GIPHY

Já foram apresentados lá em cima, entretanto, alguns atributos essenciais que distinguem instâncias dessas duas entidades. Dados como quantidade no estoque, data de validade, peso e unidade de medida só aparecem nas ocorrências de “ProdutoEstocavel”. Corre-se o perigo, sem eles, de precificar produtos indevidamente e não saber quando estão vencidos ou acabaram, por exemplo!

Estes, por fim, são os atributos que conseguimos descobrir:

  1. Cliente (nome, e-mail, telefone, telefone alternativo e endereço);
  2. Pedido (valor total, forma de pagamento, observação, data e hora);
  3. Produto (nome e preço); e
  4. ProdutoEstocavel (nome, preço, quantidade no estoque, peso, unidade de medida e data de vencimento).

Yay! 🎉

Calma, ainda não acabou!

“Como assim acabou?” — via GIPHY

Prossiga com a leitura deste artigo clicando aqui.

Até mais!

Siga-me no Twitter ou no GitHub.

--

--

Felipe Almeida

Web developer: building amazing websites and applications.