Artigo original: Crow's Foot Notation – Relationship Symbols And How to Read Diagrams
Diagramas de entidade-relacionamento (ERD - do inglês, Entity-Relationship Diagram) são como mapas que mostram a relação entre diferentes "coisas" dentro de um sistema.
Pense em um banco de dados, por exemplo. Ele é como um armário gigante com várias gavetas (tabelas) para guardar informações sobre clientes, produtos, pedidos etc. O ERD serve para visualizarmos como essas gavetas se conectam.
Para entender a relação entre as entidades em um ERD, usamos símbolos e notações. Uma das mais populares é a notação pé de galinha (em inglês, crow's foot), que vamos desvendar neste tutorial.
Ao final, você será capaz de:
- Entender o que são entidades e atributos em um ERD.
- Decifrar os símbolos da notação pé de galinha.
- Ler e interpretar diagramas como um profissional.
- Criar seus próprios ERDs!
Vamos usar os termos "notação", "indicadores" e "símbolos" como sinônimos, ok?
O que é uma entidade em um ERD?
Entidade é cada "coisa" importante no nosso banco de dados, como clientes, produtos ou pedidos.
Dica: use nomes no singular (cliente, produto) e não no plural (clientes, produtos).
Olha um exemplo:
![entity](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/entity.png)
Aí, temos a entidade "Cliente". É nela que guardaremos as informações sobre cada cliente cadastrado.
O que são os atributos?
Atributos são as características de uma entidade, como nome, endereço e telefone do cliente.
![attributes-2](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/attributes-2.png)
Nesse exemplo, a entidade "Cliente" tem 3 atributos: nome de usuário, idade e e-mail.
Relacionamento entre Entidades: conectando as peças do quebra-cabeças
Na maioria dos casos, um banco de dados tem várias entidades interligadas. Para mostrar essas relações, usamos linhas com símbolos que indicam o tipo de relação entre elas.
Símbolos da notação pé de galinha e seus significados
Antes de mostrar os símbolos, precisamos entender o conceito de cardinalidade.
A cardinalidade define quantos "elementos" de uma entidade se relacionam com quantos "elementos" de outra entidade. Parece complicado, mas você vai entender rapidinho!
Zero
![zero-crow](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/zero-crow.png)
A bolinha na ponta da linha indica "zero" ou "nenhum".
Um
![one-crow](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/one-crow.png)
A perninha reta indica "um" e somente um.
Muitos
![crows-crows-foot](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/crows-crows-foot.png)
O "pé de galinha" indica "muitos".
Combinando esses símbolos básicos, podemos representar diferentes tipos de relações:
Zero ou Muitos
![zero-and-many-crow](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/zero-and-many-crow.png)
Um ou Muitos
![one-and-many-crow](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/one-and-many-crow.png)
Um e Somente Um
![one-and-one-crow](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/one-and-one-crow.png)
Hora da prática: exemplos de ERD com notação pé de galinha
Vamos usar a notação para modelar um banco de dados simples.
Exemplo nº 1: professores e cursos
Passo 1: entidades
Imagine um sistema de cursos on-line com duas entidades: "Professor" e "Curso".
![teacher-course-crow](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/teacher-course-crow.png)
Passo 2: relação professor-curso
Regra: cada professor só pode ministrar um curso por vez.
Usamos o indicador "um e somente um" do lado do "Curso".
![teacher-course-crow2](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/teacher-course-crow2.png)
A cardinalidade do lado do "Professor" é 1:1 (mínimo 1, máximo 1).
Passo 3: relação curso-professor
Regra: cada curso pode ter um ou vários professores.
Usamos o indicador "um ou muitos" do lado do "Professor".
![teacher-course-crow3](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/teacher-course-crow3.png)
A cardinalidade do lado do "Curso" é 1:N (mínimo 1, máximo N, ou seja, vários).
Exemplo nº 2: clientes e pizzas
![crows-foot-example](https://www.freecodecamp.org/portuguese/news/content/images/2024/07/crows-foot-example.png)
Aqui, uma pizza pode ser pedida por zero ou muitos clientes (quem nunca dividiu uma pizza com a galera?).
Da mesma maneira, um cliente pode pedir zero ou muitas pizzas (a fome bate, certo?).
A cardinalidade em ambos os lados é 0:N (mínimo 0, máximo N).
Conclusão
A notação pé de galinha facilita a vida na hora de modelar bancos de dados. Com ela, você consegue visualizar as entidades e seus relacionamentos de maneira clara e organizada.
Os exemplos que vimos são simples, mas a lógica se aplica a sistemas complexos. Agora, é só praticar e se aventurar no mundo da modelagem de dados!