O que é uma relação muitos-para-muitos?
sobes.tech IA
Resposta da IA
A relação muitos-para-muitos (many-to-many) é um tipo de relação entre duas entidades (tabelas numa base de dados relacional), na qual uma linha de uma entidade pode estar relacionada com muitas linhas de outra entidade, e vice-versa, uma linha da outra entidade pode estar relacionada com muitas linhas da primeira.
Para implementar uma relação muitos-para-muitos em bases de dados relacionais, geralmente é utilizada uma tabela intermédia (de ligação). Esta tabela contém chaves estrangeiras (Foreign Keys) para ambas as entidades relacionadas, formando uma chave primária composta (composite primary key).
Um exemplo pode ser a relação entre "Estudantes" e "Cursos":
- Um estudante pode frequentar vários cursos.
- Um curso pode ser frequentado por muitos estudantes.
Implementação na base de dados:
-
Tabela
students:id(Chave Primária)name
-
Tabela
courses:id(Chave Primária)title
-
Tabela intermédia
student_course(ouenrollments):student_id(Chave Estrangeira parastudents.id)course_id(Chave Estrangeira paracourses.id)(student_id, course_id)— é uma chave primária composta, garantindo a unicidade do par "estudante-curso".
Em ORM (por exemplo, SQLAlchemy ou Django ORM), a relação muitos-para-muitos é frequentemente abstraída, e a criação explícita da tabela intermédia pode estar oculta.
// Exemplo de modelo Django ORM para relação muitos-para-muitos
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=100)
courses = models.ManyToManyField('Course') // Definição da relação "muitos-para-muitos"
class Course(models.Model):
title = models.CharField(max_length=100)
// Os estudantes estarão acessíveis através de course.student_set
A tabela student_course neste caso será criada automaticamente pelo Django ORM.