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

Felipe Almeida
3 min readOct 2, 2018

--

Foto por rawpixel no Unsplash

Será demonstrado neste artigo como se faz o reconhecimento de relacionamentos entre entidades por meio do ambiente de uma pizzaria fictícia.

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 dos textos anteriores antes de prosseguir:

  1. Guia da Modelagem de Dados: introdução & modelo conceitual; e
  2. Guia da Modelagem de Dados: 5 passos para criação do modelo conceitual (parte 1).

Contexto

Foram identificadas por meio dos passos anteriores as seguintes entidades com os respectivos atributos:

  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).

Permanecem desconhecidos os relacionamentos (assunto de hoje!) e as suas devidas cardinalidades e condicionalidades.

Passo #3: mapeie os relacionamentos

A pergunta da vez é: quais eventos ou fenômenos significativos ocorrem entre as instâncias das entidades listadas por nós?

Podemos descobrí-los ao imaginar o tipo de atendimento geralmente realizado pelas pizzarias, por exemplo:

— Boa noite, é da pizzaria xyz?
— Boa noite. É sim!
— Ah tá, é que eu gostaria de fazer um pedido.
— Qual seu nome?
— Joana D’Arc.
— Telefone pra contato?
— +33 08 2033–2424.
— Ok. Pois não?
— Eu quero duas pizzas de muçarela e uma Pepsi de 2 L.
— Para qual endereço?
— É na rua ABC, casa número 123 na Vila Rochosa.
— Deu R$ 65. Precisa de troco?
— Troco pra R$ 100, por favor.
— Certo. Vai levar 40 minutos, tá?
— Tudo bem.
— Seu pedido já está sendo feito.
— Ok. Obrigada! 😁

“Bom, o que você gostaria?” — via GIPHY

Perceberam uma interação logo no início da conversa envolvendo duas entidades? Vamos pensar um pouco: a cliente ligou pra pizzaria para fazer um pedido. Já sabemos que Cliente e Pedido são entidades nossas, mas a novidade está na ação de fazer um pedido: é um evento significativo entre elas, portanto, é um relacionamento!

São expostos pela nossa cliente os produtos que deseja logo após a solicitação de seus dados pessoais. Analisemos: o que a pessoa atendente faz depois de ouví-los? Ela inclui os produtos como itens do pedido, não é? É nesse momento que é efetivada outra relação — entre as entidades Pedido e Produto do nosso modelo!

É recomendável definir um verbo e formar uma sentença com as entidades afim de formalizar qualquer relacionamento que apareça na nossa frente. Optemos pelo simples, “Cliente faz Pedido” e “Pedido inclui Produto”.

De boa, né? 😙

Lembram-se do artigo passado quando foi dito que existiam dois tipos de produtos nessa pizzaria? Produto e ProdutoEstocavel são entidades que possuem atributos em comum e, para quem está começando, um fato não é nada óbvio: existe um relacionamento entre elas por causa disso. 😱

“Muita calma nessa hora!” — via GIPHY

Quando atributos repetem-se em mais de uma entidade, deve ser criada uma super-entidade genérica que reúna todos eles para que outras entidades sejam capazes de herdar esses atributos através de um relacionamento especial chamado “e” (leia-se “é”).

Produto é a super-entidade de ProdutoEstocavel, em nosso caso, e compartilham os atributos “Nome” e “Preco” por meio de uma relação “Produto e ProdutoEstocavel”!

Estes, enfim, foram os relacionamentos mapeados por nós:

  1. Cliente faz Pedido”;
  2. Pedido inclui Produto”; e
  3. Produto e ProdutoEstocavel”.

Vale lembrar: não é porque o relacionamento significa “e” que obrigatoriamente toda instância da entidade x é uma instância da entidade y. Seu uso expressa a possibilidade de ser. Passa mais sensação de certeza na hora da modelagem uma relação escrita “e” do que uma “pode ser”, entretanto.

Belezinha? ✌️

Estamos quase lá, falta pouco!

“Não pode ser!” — via GIPHY

Prossiga com a leitura deste artigo clicando aqui (em breve).

Até mais!

Siga-me no Twitter ou no GitHub.

--

--

Felipe Almeida

Web developer: building amazing websites and applications.