O que existe e merece uma tabela própria — e o que descreve essa entidade. Endereço começa como atributo de Cliente, mas se o cliente tem múltiplos endereços, precisa virar entidade.
Como as entidades se conectam e quantos de um lado podem se relacionar com quantos do outro. Se Faixa e Álbum estão na mesma tabela, como armazenar uma faixa em dois álbuns?
Os grupos constroem o modelo ER de um processo de vendas em linguagem de negócio — sem jargão técnico — e comparam com o modelo relacional real ao final.
Tabela desnormalizada — um único modelo para cliente, pedido e produto. Parece simples, mas esconde três armadilhas:
| PedidoID | ClienteID | Cliente | ProdutoID | Produto | Preço | |
|---|---|---|---|---|---|---|
| P001 | C01 | João | joao@email.com | PR01 | Fone BT | R$ 150 |
| P002 | C01 | João | joao@email.com | PR02 | Caixa Som | R$ 300 |
| P003 | C02 | Maria | maria@email.com | PR03 | Headphone | R$ 200 |
Cada célula deve conter um único valor. Sem listas, sem grupos repetitivos dentro de uma coluna.
| ClienteID | Nome | Telefones |
|---|---|---|
| C01 | João | 99999-1111, 88888-2222 |
| C02 | Maria | 77777-3333 |
| ClienteID | Nome | Telefone |
|---|---|---|
| C01 | João | 99999-1111 |
| C01 | João | 88888-2222 |
| C02 | Maria | 77777-3333 |
Todo atributo não-chave deve depender da chave primária inteira. Proíbe dependências parciais em chaves compostas.
| PedidoID | ProdID | NomeProd | Qtd |
|---|---|---|---|
| P001 | PR01 | Fone BT | 2 |
| P002 | PR01 | Fone BT | 1 |
| P002 | PR02 | Caixa Som | 3 |
NomeProd depende só de ProdID — não da chave completa.
| PedidoID | ProdID | Qtd |
|---|---|---|
| P001 | PR01 | 2 |
| P002 | PR01 | 1 |
| ProdID | NomeProd |
|---|---|
| PR01 | Fone BT |
| PR02 | Caixa Som |
Nenhum atributo não-chave pode depender de outro atributo não-chave. Proíbe cadeias de dependência indireta.
| ClienteID | Nome | CEP | Cidade |
|---|---|---|---|
| C01 | João | 01310-100 | São Paulo |
| C02 | Maria | 01310-100 | São Paulo |
| C03 | Pedro | 30112-000 | Belo Horizonte |
ClienteID → CEP → Cidade (dependência transitiva).
| ClienteID | Nome | CEP |
|---|---|---|
| C01 | João | 01310-100 |
| C02 | Maria | 01310-100 |
| C03 | Pedro | 30112-000 |
| CEP | Cidade |
|---|---|
| 01310-100 | São Paulo |
| 30112-000 | Belo Horizonte |
Clique em cada tipo para ver definição e exemplo.
Clique em cada exercício para ver o cenário, as regras de negócio e a tarefa. Use a notação Crow's Foot.
Uma plataforma de streaming deseja organizar seu catálogo de filmes animados e contratou você para projetar o modelo de dados relacional. Para cada filme são registrados um ID, o título, o ano de lançamento e a duração em minutos. Cada filme é dirigido por um único diretor e produzido por um único estúdio — mas um diretor pode ter dirigido vários filmes, assim como um estúdio pode ter produzido vários filmes diferentes. Diretores e estúdios possuem, cada um, um ID e um nome.
Uma instituição de ensino contratou você para desenvolver o modelo conceitual de um sistema acadêmico para um curso oferecido por ela — organizando disciplinas, professores e estudantes, e os relacionamentos entre esses elementos.
Uma clínica médica está desenvolvendo um sistema para gerenciar suas consultas, médicos, pacientes e faturamento. O corpo clínico é composto por diversos médicos, cada um podendo realizar várias consultas ao longo do tempo — ou nenhuma, em determinado momento. As consultas são marcadas com data, hora, duração e motivo, sempre com exatamente um médico e um paciente. Os pacientes são identificados por código, nome, sobrenome, endereço, cidade e estado, e podem agendar uma ou mais consultas. Cada consulta resulta na emissão de uma única fatura, identificada por número, valor, data de envio e status.