Olá gente e como eu relaciono 3 tabelas?
Olá gente e como eu relaciono 3 tabelas?
Oi, João! Tudo bem?
Desde já, peço desculpas pela demora em retornar.
O relacionamento entre três tabelas é, de certa maneira, comum quando estamos trabalhando com banco de dados. Para desenvolvê-lo, usaremos o nosso conhecimento sobre chaves estrangeiras!
Para construção desse tipo de relacionamento, imagine o seguinte caso: uma escola online que disponibiliza cursos deseja construir um banco de dados para um gerenciamento interno. Neste banco, existirão duas tabelas: aluno
e curso
.
No entanto, durante a construção, as pessoas que trabalham nessa escola notaram uma dificuldade em relacionar os alunos aos cursos e vice e versa, haja vista que:
Tentar usar somente uma chave estrangeira, nesse caso, parece meio complicado, não acha?
Quando estamos modelando um banco de dados, chamamos o relacionamento visto acima de muitos para muitos. Caso ele aparece em um projeto, é recomendada a criação de uma nova tabela, a qual será uma ponte entre as outras duas tabelas. Dessa forma, evitamos o surgimento de anomalias em nosso banco de dados.
Sendo assim, a equipe resolveu criar uma nova tabela chamada aluno_curso
, a qual conectará a tabela aluno
com a tabela curso
. Após essa conclusão, chegou-se nas seguintes tabelas:
CREATE TABLE aluno (
id SERIAL PRIMARY KEY,
primeiro_nome VARCHAR(255) NOT NULL,
ultimo_nome VARCHAR(255) NOT NULL,
data_nascimento DATE NOT NULL
);
CREATE TABLE curso (
id SERIAL PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
categoria_id INTEGER NOT NULL REFERENCES categoria(id)
);
CREATE TABLE aluno_curso (
aluno_id INTEGER NOT NULL REFERENCES aluno(id),
curso_id INTEGER NOT NULL REFERENCES curso(id),
PRIMARY KEY (aluno_id, curso_id)
);
Observe que, durante a criação de aluno_curso
, os únicos campos determinados foram aluno_id
e curso_id
, que são, respectivamente, as chaves primárias das tabelas aluno
e curso
. A forma com que estabelecemos esses campos indica que eles serão chaves estrangeiras.
Dessa maneira, João, chegamos a um cenário em que há o relacionamento entre três tabelas!
Espero ter ajudado com a explicação! Caso surja alguma dúvida, fico à disposição.
Um forte abraço.