TransWikia.com

Como referenciar múltiplas chaves estrangeiras em um campo MYSQL

Stack Overflow em Português Asked by Ricardo Cenci Fabris on September 27, 2021

Estou com um problema que não consigo achar solução, estou fazendo um banco de dados para um sistema escolar, nesse sistema existe a tabela das materias, que possui um ID e um NOME, e os professores que possuem um ID um NOME e a referencia para as materias que eles ministram.

CREATE TABLE db_materias(
id int(4) not null auto_increment,
name varchar(20) not null
primary key(id)
);

CREATE TABLE db_professores(
id int(4) not null auto_increment,
name varchar(20) not null
materias int(4)
primary key(id)

foreign key(materias) references db_materias(id)
);

O problema é que, existem ocasiões que o mesmo professor ministra múltiplas matérias, consigo fazer o professor ter uma matéria mas não consigo varias, de primeira pensei em criar um array para guardar isso, mas descobri que o MYSQL não tem arrays, pensei também em criar varias colunas para matérias mas acredito que não seja o modo mais eficiente de se resolver.
Não consigo achar em lugar algum uma maneira de resolver esse tipo de situação, estou começando a aprender sobre databases, não tenho experiencia com o topico.
Agradeço a ajuda, obrigado.

One Answer

Para fazer esse tipo de relação eu utilizaria outra tabela que seria matérias ministradas professor com os campos matérias podendo ser null assim você poderá fazer o relacionamento com a materias

CREATE TABLE db_materias_professor(
id int(4) not null auto_increment,
professor int(4) not null
materia_a int(4)
materia_b int(4)
materia_c int(4)
materia_d int(4)
primary key(id)

foreign key(professor) references db_professores(id)
foreign key(materia_a) references db_materias(id)
foreign key(materia_b) references db_materias(id)
foreign key(materia_c) references db_materias(id)
foreign key(materia_d) references db_materias(id)
);

e troque a referencia da tabela db_professores de

foreign key(materias) references db_materias(id) 

para

foreign key(materias) references db_materias_professor(id) 

Correct answer by Lucas Pereira de Souza on September 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP