Até aqui, produtos viveu sozinho, como se fosse a única coisa que existe no universo. Mas pense num sistema de loja de verdade, existem:
Esse é, sem dúvida, o capítulo mais importante do curso. Dominar relacionamentos é o que separa quem só sabe criar tabelas soltas de quem sabe modelar um sistema de verdade.
Vamos usar como exemplo um mini-sistema de pedidos de uma loja, com três entidades: clientes, pedidos e produtos.
No Modelo ER, quando duas entidades se relacionam, precisamos definir a cardinalidade — ou seja, quantos registros de uma entidade se conectam com quantos registros da outra.
Existem três tipos principais:
Um registro de A se relaciona com no máximo um registro de B, e vice-versa.
graph LR
A["Pessoa"] ---|"1"| B["1"]
B --> C["Carteira de Identidade"]
style A fill:#3b82f6,color:#fff
style C fill:#3b82f6,color:#fff
Exemplo: uma pessoa tem um único CPF, e um CPF pertence a uma única pessoa.
Um registro de A pode se relacionar com vários registros de B, mas cada registro de B se relaciona com apenas um registro de A.
graph LR
A["Cliente"] -->|"1 cliente<br>faz N pedidos"| B["Pedido"]
style A fill:#3b82f6,color:#fff
style B fill:#22c55e,color:#fff
Exemplo: um cliente pode fazer vários pedidos, mas cada pedido pertence a um único cliente.
Vários registros de A podem se relacionar com vários registros de B, ao mesmo tempo.
graph LR
A["Pedido"] -->|"N pedidos<br>têm N produtos"| B["Produto"]
style A fill:#22c55e,color:#fff
style B fill:#f59e0b,color:#fff
Exemplo: um pedido pode ter vários produtos, e um mesmo produto pode aparecer em vários pedidos diferentes.