Sobes.tech
Junior
165

Cos'è una relazione molti-a-molti?

Risposta dell'AI

sobes.tech AI

La relazione molti-a-molti (many-to-many) è un tipo di relazione tra due entità (tabelle in un database relazionale), in cui una riga di un'entità può essere collegata a molte righe di un'altra entità, e viceversa, una riga dell'altra entità può essere collegata a molte righe della prima.

Per implementare una relazione molti-a-molti nei database relazionali, si utilizza generalmente una tabella intermedia (di collegamento). Questa tabella contiene chiavi esterne (Foreign Keys) per entrambe le entità collegate, formando una chiave primaria composta (composite primary key).

Un esempio può essere la relazione tra "Studenti" e "Corsi":

  • Uno studente può frequentare più corsi.
  • Un corso può essere frequentato da molti studenti.

Implementazione nel database:

  1. Tabella students:

    • id (Chiave Primaria)
    • name
  2. Tabella courses:

    • id (Chiave Primaria)
    • title
  3. Tabella intermedia student_course (o enrollments):

    • student_id (Chiave Esterna a students.id)
    • course_id (Chiave Esterna a courses.id)
    • (student_id, course_id) — è una chiave primaria composta, che garantisce l'unicità della coppia "studente-corso".

In ORM (ad esempio, SQLAlchemy o Django ORM), la relazione molti-a-molti viene spesso astratta, e la creazione esplicita della tabella intermedia può essere nascosta.

// Esempio di modello Django ORM per relazione molti-a-molti
from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField('Course') // Definizione della relazione "molti a molti"

class Course(models.Model):
    title = models.CharField(max_length=100)
    // Gli studenti saranno accessibili tramite course.student_set

La tabella student_course in questo caso sarà creata automaticamente da Django ORM.