Sobes.tech
Junior

Ko'pdan-ko'pga bog'lanish nima?

sobes.tech AI

AIdan javob

Ko‘pdan-ko‘p (many-to-many) bog‘lanish — bu ikki mavjudotlar (relatsion bazadagi jadvallar) o‘rtasidagi turdagi bog‘lanish bo‘lib, bunda bir mavjudotdagi yozuv boshqa mavjudotdagi ko‘p yozuvlar bilan bog‘lanishi mumkin, va aksincha, boshqa mavjudotdagi yozuv birinchi mavjudotdagi ko‘p yozuvlar bilan bog‘lanishi mumkin.

Ko‘pdan-ko‘p bog‘lanishni relatsion bazalarda amalga oshirish uchun odatda oraliq (aloqa) jadval ishlatiladi. Bu jadval ikkala bog‘langan mavjudot uchun tashqi kalitlar (Foreign Keys) ni o‘z ichiga oladi va yig‘ma asosiy kalit (composite primary key) hosil qiladi.

Misol uchun, "Talabalar" va "Kurslar" o‘rtasidagi bog‘lanishni ko‘rib chiqamiz:

  • Bir talaba bir nechta kursga qatnashishi mumkin.
  • Bir kursga ko‘p talaba qatnashishi mumkin.

Ma’lumotlar bazasida amalga oshirish:

  1. students jadvali:

    • id (Asosiy kalit)
    • name
  2. courses jadvali:

    • id (Asosiy kalit)
    • title
  3. Oraliq jadval student_course (yoki enrollments):

    • student_id (students.id ga tashqi kalit)
    • course_id ( courses.id ga tashqi kalit)
    • (student_id, course_id) — bu ko‘pdan-ko‘p bog‘lanishni ta’minlovchi yig‘ma asosiy kalit.

ORM (masalan, SQLAlchemy yoki Django ORM) da ko‘pdan-ko‘p bog‘lanish ko‘pincha abstraktsiya qilinadi, va ochiq-oydin oraliq jadval yaratish yashirilishi mumkin.

// Django ORM uchun ko‘pdan-ko‘p bog‘lanish modeli misoli
from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField('Course') // "Ko‘pdan-ko‘p" bog‘lanishni aniqlash

class Course(models.Model):
    title = models.CharField(max_length=100)
    // Talabalar course.student_set orqali mavjud bo‘ladi

Bu holda, student_course jadvali Django ORM tomonidan avtomatik ravishda yaratiladi.