Sobes.tech
Junior
164

Çoxdan-çox əlaqə nədir?

AI-dan cavab

sobes.tech Süni İntellekt

Çoxdan-çox (many-to-many) əlaqə, iki varlıq (relasiya bazasında cədvəllər) arasında olan bir əlaqə növüdür; burada bir varlığın qeydiyyatı digər varlığın çoxsaylı qeydiyyatları ilə əlaqələndirilə bilər və əksinə, digər varlığın qeydiyyatı ilk varlığın çoxsaylı qeydiyyatları ilə əlaqələndirilə bilər.

Çoxdan-çox əlaqəni relasiya bazalarında həyata keçirmək üçün adətən aralıq (əlaqə) cədvəli istifadə olunur. Bu cədvəl hər iki əlaqəli varlıq üçün xarici açarları (Foreign Keys) ehtiva edir və birləşmiş əsas açar (composite primary key) yaradır.

Məsəl üçün, "Tələbələr" və "Kurslar" arasındakı əlaqəni nəzərdən keçirək:

  • Bir tələbə bir neçə kursa qoşula bilər.
  • Bir kursa çox tələbə qoşula bilər.

Verilənlər bazasında tətbiq:

  1. students cədvəli:

    • id (Əsas açar)
    • name
  2. courses cədvəli:

    • id (Əsas açar)
    • title
  3. Aralıq cədvəl student_course (və ya enrollments):

    • student_id (Xarici açar students.id-yə)
    • course_id (Xarici açar courses.id-yə)
    • (student_id, course_id) — bu, birləşmiş əsas açar olub, "tələbə-kurs" cütlüyünün unikal olmasını təmin edir.

ORM (məsələn, SQLAlchemy və ya Django ORM) daxilində, çoxdan-çox əlaqə tez-tez abstraktlaşdırılır və açıq şəkildə aralıq cədvəlinin yaradılması gizli qala bilər.

// Django ORM üçün çoxdan-çox əlaqə modeli nümunəsi
from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField('Course') // "Çoxdan-çox" əlaqənin təyini

class Course(models.Model):
    title = models.CharField(max_length=100)
    // Tələbələr course.student_set vasitəsilə əlçatan olacaq

Bu halda, student_course cədvəli Django ORM tərəfindən avtomatik yaradılacaq.