[quote=paty_trind]Marcelo
pode me explicar mais sobre tabelas associativas?
:oops:brigada[/quote]
Não tem segredo… suponha que temos um ALUNO que curse uma ou várias MATERIA’s… o ALUNO cursa ‘n’ matérias, assim como a MATERIA é cursada por ‘n’ alunos… é o que chamamos de relacionamento muitos-pra-muitos, onde os dois lados podem referenciar ‘n’ itens entre sí…
Exemplo:
João cursa matemática, portugues e inglês…
Maria cursa matemática e portugues…
César cursa portugues e inglês…
Temos as ‘entidades’, tabelas que representam um objeto único:
ALUNO
João
Maria
Cesar
MATERIA
Matemática
Português
Inglês
Temos a tabela associativa:
ALUNO_MATERIA
João | Matemática
João | Português
João | Inglês
Maria | Matemática
Maria | Português
Cesar | Português
Cesar | Inglês
Se eu fizer um SELECT, algo do tipo “SELECT materia from ALUNO_MATERIA where aluno = ‘João’”, terei apenas as matérias que são cursadas pelo João:
Matemática
Português
Inglês
Se eu fizer o inverso, SELECT aluno from ALUNO_MATERIA where materia = 'Matemática", terei os alunos que cursam matemática:
João
Maria
Basicamente serve pra isso, então você vê que essa tabela não precisa nem ter um ID, pois ela não representa uma “entidade”, não é um registro único de algum objeto do seu sistema, é apenas uma associação entre eles…
O que você pode fazer nessa tabela é criar uma restrição de unicidade (Unique Constraint), pra garantir que não se repitam os valores, por exemplo:
Joâo | Matemática
Joâo | Matemática
Óbvio né? Não precisa cadastrar duas vezes a mesma coisa…
Acho que deu pra entender… se ficou dúvida, grita aí!