Símbolos do diagrama entidade relacionamento
Os diagramas entidade relacionamento usam três famílias de símbolos. O pé de galinha é a notação das ferramentas de banco de dados. Chen é a que se aprende na faculdade, e UML são diagramas de classe usados para dados. Nas três, uma tabela ou entidade é um retângulo e um relacionamento é uma linha entre retângulos. O que muda é como se escreve a cardinalidade, ou seja, quantas linhas de um lado correspondem a uma linha do outro. O pé de galinha a marca nas pontas da linha, e cada linha é lida duas vezes, uma na direção de cada tabela. Abaixo, cada símbolo aparece com a sua leitura. Quem o desenha é o ErdDocs, na mesma notação que ele usa no seu próprio schema, na ferramenta abaixo.
O que significam as pontas do pé de galinha?
No pé de galinha tudo acontece nas pontas da linha. Cada ponta empilha até duas marcas. A mais perto da tabela é o máximo, e a de fora, o mínimo.
| Símbolo | Nome | Como se lê | Exemplo |
|---|---|---|---|
| Exatamente um | Barra + barra: pelo menos um e no máximo um | um pedido pertence a exatamente um cliente | |
| Zero ou um | Círculo + barra: opcional, no máximo um | um cliente tem no máximo um cartão fidelidade | |
| Um ou muitos | Barra + pé de galinha: pelo menos um | um pedido tem pelo menos um item | |
| Zero ou muitos | Círculo + pé de galinha: qualquer quantidade, inclusive nenhuma | um cliente tem zero ou muitos pedidos |
Como ler uma linha inteira
Uma linha de relacionamento é lida duas vezes, uma na direção de cada tabela. O exemplo clássico de uma loja:
As regras de leitura completas, inclusive o que as marcas significam quando o schema só é conhecido pela metade, estão na página da notação pé de galinha. Qual combinação escolher é uma questão de cardinalidade.
Chen, pé de galinha e UML
| Conceito | Chen | Pé de galinha | UML |
|---|---|---|---|
| Entidade / tabela | Retângulo | Retângulo com a lista de colunas dentro | Caixa de classe |
| Atributo | Oval ligado à entidade | Uma linha dentro da tabela | Um campo na caixa de classe |
| Relacionamento | Losango entre entidades | Uma linha com marcas de cardinalidade nas pontas | Linha de associação |
| Cardinalidade | Letras 1, N, M perto do losango | Barra, círculo e pé de galinha nas pontas | Multiplicidades 1, 0..1, 1..*, * |
| Chave primária | Atributo sublinhado | Marca de chave na linha da coluna | Estereótipo ou propriedade |
Uma regra prática. Enquanto o schema é só uma ideia, use Chen. Se o diagrama fica junto do código da aplicação, use UML. Quando já existe um banco de dados, use o pé de galinha. É ele que o ErdDocs desenha a partir do schema que você cola.
Um símbolo que os livros não trazem: a linha tracejada
Dumps reais muitas vezes vêm sem chaves estrangeiras. Aplicações em Rails, Django e Laravel costumam controlar os relacionamentos no código, então o banco não declara nada. Para esse caso, o ErdDocs acrescenta um símbolo próprio. A linha contínua é um relacionamento que o banco declara. A tracejada é um relacionamento deduzido do nome da coluna, como user_id → users. O primeiro é garantido por uma restrição, e o segundo é um palpite bem fundamentado.
Os símbolos num schema de verdade
Cole o seu SQL na ferramenta abaixo. Ela procura as chaves estrangeiras e as restrições únicas e, com elas, marca o lado «muitos» de cada linha.
Perguntas frequentes
O que significam os símbolos do pé de galinha?
Cada ponta da linha empilha até duas marcas. A mais perto da tabela indica o máximo. Uma barra é «no máximo um» e o pé de três pontas é «muitos». A de fora indica o mínimo. Uma barra é «pelo menos um» e um círculo é «pode ser zero». Assim, círculo + pé se lê «zero ou muitos» e barra + barra, «exatamente um».
Qual notação usar: Chen ou pé de galinha?
Chen serve para ensinar e para o modelo conceitual (MER). Os losangos transformam o relacionamento num elemento próprio, e é disso que uma aula precisa. O pé de galinha serve para bancos reais (DER). Ele desenha um retângulo por tabela com as colunas dentro, que é a forma real de um schema.
Qual é o símbolo de um relacionamento muitos para muitos?
Um pé de galinha nas duas pontas. Num schema físico, o muitos para muitos é implementado por uma tabela associativa, como order_items entre orders e products. Por isso, ferramentas que desenham bancos reais mostram dois relacionamentos um para muitos chegando nessa tabela.
Por que as ferramentas de banco de dados não desenham os losangos e ovais de Chen?
Porque num banco de dados físico o que Chen desenha separado se reduz a tabelas e colunas. Um oval de atributo é uma linha dentro da caixa da tabela. Um losango de relacionamento é uma coluna de chave estrangeira ou uma tabela associativa. Desenhá-los como formas à parte dobraria o tamanho do diagrama sem mostrar nada a mais.
Veja também
- Diagrama ER: entidades, relacionamentos e o ponto em que um modelo conceitual vira tabelas.
- Notação pé de galinha: as regras de leitura, com exemplos resolvidos.
- Cardinalidade no diagrama ER: como um banco real determina quais marcas uma linha recebe.
- Exemplos de diagrama ER: catorze schemas completos, cada um com o diagrama e o dicionário.