Sobes.tech
Junior

Ce este o relație many-to-many?

sobes.tech AI

Răspuns de la AI

Relația mulți-la-mulți (many-to-many) este un tip de relație între două entități (tabele într-o bază de date relațională), în care o înregistrare dintr-o entitate poate fi legată de multe înregistrări din cealaltă entitate, și invers, o înregistrare din cealaltă entitate poate fi legată de multe înregistrări din prima.

Pentru implementarea relației mulți-la-mulți în bazele de date relaționale, de obicei se folosește o tabelă intermediară (de legătură). Această tabelă conține chei externe (Foreign Keys) pentru ambele entități legate, formând o cheie primară compusă (composite primary key).

Un exemplu poate fi relația dintre "Studenți" și "Cursuri":

  • Un student poate participa la mai multe cursuri.
  • Un curs poate fi participat de mulți studenți.

Implementare în baza de date:

  1. Tabela students:

    • id (Cheie primară)
    • name
  2. Tabela courses:

    • id (Cheie primară)
    • title
  3. Tabela intermediară student_course (sau enrollments):

    • student_id (Cheie externă către students.id)
    • course_id (Cheie externă către courses.id)
    • (student_id, course_id) — este o cheie primară compusă, care asigură unicitatea perechii "student-curs".

În ORM (de exemplu, SQLAlchemy sau Django ORM), relația mulți-la-mulți este adesea abstractizată, iar crearea explicită a tabelei intermediare poate fi ascunsă.

// Exemplu de model Django ORM pentru relație mulți-la-mulți
from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField('Course') // Definirea relației "mulți la mulți"

class Course(models.Model):
    title = models.CharField(max_length=100)
    // Studenții vor fi disponibili prin course.student_set

Tabela student_course în acest caz va fi creată automat de Django ORM.