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:
-
Tabela
students:id(Cheie primară)name
-
Tabela
courses:id(Cheie primară)title
-
Tabela intermediară
student_course(sauenrollments):student_id(Cheie externă cătrestudents.id)course_id(Cheie externă cătrecourses.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.