Como os conceitos se associam
Relacionamento é uma associação definida entre entidades ou suas ocorrências. Um estudante pode participar de turmas, e cada turma pode reunir vários estudantes. O modelo precisa descrever esse vínculo e as quantidades permitidas de cada lado.
Essas quantidades são chamadas de cardinalidade. Relações um para um, um para muitos e muitos para muitos representam combinações diferentes. A obrigatoriedade também importa, pois permitir zero vínculos não equivale a exigir pelo menos um.
Considere um produto que permite cadastrar participantes antes de escolherem uma turma e abrir turmas ainda sem inscrições. Nesse caso, ambos os cadastros precisam existir sem uma matrícula associada. Quando o produto exige uma inscrição já no cadastro, essa exigência também precisa aparecer no comportamento da aplicação.
Um para muitos e muitos para muitos
Em um modelo com uma organização responsável por vários contatos, cada contato pode guardar a referência a essa organização. A coluna do lado dos contatos permite representar a relação um para muitos. A chave estrangeira pode conferir a existência da organização indicada.
Já um estudante pode participar de várias turmas, e cada turma pode reunir vários estudantes. Em um banco relacional, uma tabela de associação, como matriculas, representa cada vínculo. Ela também pode guardar informações próprias, como a data da inscrição.
CREATE TABLE matriculas (
estudante_id INTEGER NOT NULL REFERENCES estudantes(id),
turma_id INTEGER NOT NULL REFERENCES turmas(id),
PRIMARY KEY (estudante_id, turma_id)
);O exemplo pressupõe a existência das tabelas referenciadas. A chave composta impede repetir a mesma combinação de estudante e turma. Se o produto permitir várias matrículas históricas nesse mesmo par, a estrutura precisará representar essa condição de outra forma.
Um para um exige uma restrição adequada
Uma chave estrangeira sozinha normalmente permite que várias linhas apontem para o mesmo registro. Para representar um vínculo um para um, pode ser necessária uma restrição de unicidade na referência. A declaração precisa corresponder à cardinalidade pretendida.
Também é preciso definir o efeito da exclusão. Remover um lado pode ser recusado, propagar alterações ou encerrar o vínculo, conforme a política adotada. Essas consequências não devem ser deduzidas apenas pelo nome das tabelas.
Modelo e consulta não são a mesma coisa
O relacionamento descreve a associação, enquanto uma consulta escolhe como ler os registros. Um JOIN pode combinar linhas mesmo sem uma chave estrangeira declarada. Isso não significa que o banco esteja garantindo a validade daquele vínculo nas gravações.
Como conferir a cardinalidade
Teste zero, um e vários vínculos conforme os casos permitidos. Faça a leitura nos dois sentidos e confira se o modelo preserva todas as ocorrências necessárias. Inclua duplicidade e exclusão nos testes de desenvolvimento.
O verbete de chave estrangeira explica a restrição usada para conferir referências no banco.
Dúvidas frequentes
Perguntas frequentes sobre Relacionamento
- Chave estrangeira sozinha cria um vínculo um para um?
- Ela confere a referência, mas pode permitir várias linhas apontando ao mesmo registro. Uma restrição de unicidade pode ser necessária para o vínculo um para um.
- Como representar muitos para muitos?
- Em bancos relacionais, uma tabela de associação costuma guardar cada vínculo entre os dois lados. Ela pode incluir atributos próprios da relação.
- JOIN exige uma chave estrangeira?
- A consulta pode combinar linhas sem essa restrição. A chave estrangeira atua na validade da referência, enquanto JOIN define como os resultados são lidos.
- Cardinalidade também considera ausência de vínculo?
- A obrigatoriedade precisa ser definida além da quantidade máxima. Permitir zero relações difere de exigir pelo menos uma.
Para continuar
Recursos relacionados
Documentação
Restrições de tabela no PostgreSQL
Documenta chaves, unicidade, referências e restrições de valores.
Abrir recursoDocumentação
Tabelas no PostgreSQL
Apresenta linhas, colunas e tipos na definição de tabelas.
Abrir recursoSite de referência
Desenvolvimento Colaborativo da Dev Side Studio
Conheça o acompanhamento técnico ao vivo para revisar os vínculos entre cadastros e as quantidades permitidas de cada lado.
Abrir recursoAplicação na formação
Formação DevOps
Relacionamentos orientam a representação dos vínculos entre cadastros e a escolha das restrições das tabelas.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.