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:
-
studentsjadvali:id(Asosiy kalit)name
-
coursesjadvali:id(Asosiy kalit)title
-
Oraliq jadval
student_course(yokienrollments):student_id(students.idga tashqi kalit)course_id(courses.idga 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.