ErdDocs

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ímboloNomeComo se lêExemplo
Exatamente umExatamente umBarra + barra: pelo menos um e no máximo umum pedido pertence a exatamente um cliente
Zero ou umZero ou umCírculo + barra: opcional, no máximo umum cliente tem no máximo um cartão fidelidade
Um ou muitosUm ou muitosBarra + pé de galinha: pelo menos umum pedido tem pelo menos um item
Zero ou muitosZero ou muitosCírculo + pé de galinha: qualquer quantidade, inclusive nenhumaum cliente tem zero ou muitos pedidos
Cola da notação pé de galinha com as quatro pontas de linha: exatamente um (barra e barra), zero ou um (círculo e barra), um ou muitos (barra e pé de galinha), zero ou muitos (círculo e pé de galinha)Cola da notação pé de galinha com as quatro pontas de linha: exatamente um (barra e barra), zero ou um (círculo e barra), um ou muitos (barra e pé de galinha), zero ou muitos (círculo e pé de galinha)
As mesmas quatro pontas num único cartão. Salve, ou baixe o SVG na versão clara ou escura.

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:

Na direção de orders: um cliente tem zero ou muitos pedidos. Na direção de customers: um pedido pertence a exatamente um cliente.customersorders
Na direção de orders: um cliente tem zero ou muitos pedidos. Na direção de customers: um pedido pertence a exatamente um cliente.

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

ConceitoChenPé de galinhaUML
Entidade / tabelaRetânguloRetângulo com a lista de colunas dentroCaixa de classe
AtributoOval ligado à entidadeUma linha dentro da tabelaUm campo na caixa de classe
RelacionamentoLosango entre entidadesUma linha com marcas de cardinalidade nas pontasLinha de associação
CardinalidadeLetras 1, N, M perto do losangoBarra, círculo e pé de galinha nas pontasMultiplicidades 1, 0..1, 1..*, *
Chave primáriaAtributo sublinhadoMarca de chave na linha da colunaEstereó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.

A linha tracejada indica que não há FOREIGN KEY no dump e que o relacionamento vem da convenção de nomes.usersposts
A linha tracejada indica que não há FOREIGN KEY no dump e que o relacionamento vem da convenção de nomes.

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.

Seu schema

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