MongoDB هي قاعدة بيانات مستندات ولا تحافظ على العلاقات بين المستندات مثل قواعد البيانات العلائقية مثل PostgreSQL.

ومع ذلك ، فإن MongoDB يسمح لك بإنشاء علاقات بين المستندات. يمكن نمذجة هذه العلاقات إما من خلال الأساليب المضمنة أو المرجعية. دعونا نلقي نظرة فاحصة.

العلاقات المضمنة مقابل. العلاقات المرجعية

في أسلوب مضمّن ، يتم إدراج مستند مباشرةً داخل مستند آخر ، مما ينتج عنه بيانات متداخلة. وتسمى هذه العملية أيضًا "إلغاء التطبيع".

من ناحية أخرى ، يستخدم النهج المرجعي مراجع الوثيقة للإشارة من وثيقة إلى أخرى. هذا النهج يسمى أيضا "التطبيع".

MongoDB: العلاقات الفردية مع المستندات المضمنة

يمكنك إنشاء علاقة رأس برأس بين المستندات باستخدام الطريقة المضمنة. تحدث هذه العلاقة عندما يمكن لكائن مستند واحد أن يرتبط بمستند آخر فقط.

ضع في اعتبارك قاعدة بيانات الطالب. تحتوي قاعدة البيانات هذه على مجموعات الطالب والعناوين مع المستندات التالية.

// مستند الطالب
{
"studentName": "Frodo Baggins"،
"phoneNumber": "987654321" ،
};
// عنوان المستند
{
"studentName": "Frodo Baggins"،
"الشارع": "باجشوت رو" ،
"المدينة": "Hobiton"،
}
instagram viewer

في قاعدة البيانات هذه ، يُسمح للطالب أن يكون لديه عنوان واحد فقط. لاسترداد العنوان ، ستحتاج إلى الاستعلام عن مجموعة العناوين باستخدام اسم الطالب.

متعلق ب: كيفية إنشاء قاعدة بيانات ومجموعة في MongoDB

في الحالات التي يتم فيها استخدام العنوان جنبًا إلى جنب مع تفاصيل أخرى مثل أسم الطالب، سيكون عليك الاستعلام عن قاعدة البيانات عدة مرات. الجانب السلبي لهذا هو العدد الكبير من عمليات القراءة وبالتالي انخفاض أداء الاستعلام.

باستخدام الأسلوب المضمن ، يمكنك إدراج بيانات العنوان في مستند الطالب مباشرةً واستخدام استعلام واحد فقط للحصول على البيانات.

{
"studentName": "Frodo Baggins"،
"phoneNumber": "987654321" ،
"تبوك": [{
"الشارع": "باجشوت رو" ،
"المدينة": "Hobiton"
}],
};

لاسترداد العنوان من خلال أسم الطالب، استخدم هذا الاستعلام.

db.student.findOne ({"studentName": "Frodo Baggins"}، {"address": 1})

علاقات واحد لكثير مع المستندات المضمنة في MongoDB

ضع في اعتبارك موقفًا يكون فيه للطالب عناوين متعددة. تصبح العلاقة بين الطالب والعناوين علاقة رأس بأطراف.

يتيح لك النموذج المضمن إضافة عناوين متعددة إلى مستند الطالب. كما هو الحال في علاقة رأس برأس باستخدام المستندات المضمنة ، فإن هذا الأسلوب له أداء استعلام مرتفع نسبيًا.

{
"studentName": "Frodo Baggins"،
"phoneNumber": "987654321" ،
"تبوك": [
{
"الشارع": "باجشوت رو" ،
"المدينة": "Hobiton"
},
{
"شارع": "صف باجشوت آخر" ،
"المدينة": "Hobiton2"
},
]
};

سيعود الاستعلام أدناه إلى عناوين اسم الطالب المحدد.

db.student.findOne ({studentName: “Frodo Baggins”} ، {العنوان: 1})

متعلق ب: كيفية إنشاء المستندات في MongoDB

الآن ، إذا كان لديك المزيد من العناوين وواصلت إضافتها إلى حقل العنوان ، يمكن أن يصبح المستند مزدحمًا بسرعة كبيرة. أحد الحلول هو استخدام مراجع الوثيقة.

MongoDB: علاقات واحد لأكثر مع مراجع الوثيقة

يمكنك أيضًا تصميم علاقة رأس بأطراف باستخدام النهج المرجعي. في نموذج البيانات هذا ، سيتم الاحتفاظ ببيانات الطالب والعنوان في مجموعات منفصلة. لربط الطالب بعنوانه ، أضف حقلاً يحتوي على معرّفات العناوين إلى مستند الطالب.

{
"studentName": "Frodo Baggins"،
"phoneNumber": "987654321" ،
"تبوك": [
ObjectId ("61fa7bfeebdadf8ac71427ea") ،
ObjectId ("61fa7d19ebdadf8ac71427eb")
]
};

يتضمن الحصول على تفاصيل عنوان الطالب جلب معرّفات العنوان من مستند الطالب واستخدام هذه المعرّفات لجلب العناوين الفعلية من المجموعة.

طالب const = db.users.findOne ({"name": "Frodo Baggins"}، {"address": 1})
عناوين const = db.address.find ({"_ id": {"$ in": student ["address_ids"]}})

الاختيار بين النهج المضمن والمرجع

كل من نموذجي التضمين والمراجع لهما إيجابيات وسلبيات ، وسيتعين عليك التفكير في أمرين قبل اتخاذ القرار.. بالنسبة للمبتدئين ، ستحتاج إلى النظر في حالة الاستخدام. إذا كانت البيانات مرتبطة بمستند واحد فقط ، فقد يكون التضمين هو أفضل خيار لك.

لإنشاء علاقات رأس بأطراف ، يمكنك استخدام النموذج المرجعي أو النموذج المضمن. ينتج عن الرجوع إلى مستند نظيف ومتسق نظرًا لأنك تضيف فقط المعرف المرجعي للمستند الذي تريد الارتباط به.

ومع ذلك ، فإن عدد عمليات القراءة المطلوبة لاسترداد البيانات المتصلة مرتفع نسبيًا ويمكن أن يؤثر على الأداء. قد يؤدي تضمين المستند إلى زيادة الأداء ، ولكن مع العديد من المستندات المتداخلة ، قد ينتهي بك الأمر بمجموعة مزدحمة.

لذلك ، فإن اختيار كيفية تنفيذ علاقات البيانات في وثيقتك متروك لك تمامًا. ضع في اعتبارك كيف ستستخدم المستند ، ومستوى أداء الاستعلام الذي تهدف إليه ، والمفاضلات التي ترغب في إجرائها.

كيف تختلف نمذجة البيانات في MongoDB؟

النظر في نهج مختلف لقواعد البيانات؟ إليك كيفية عمل نمذجة البيانات في MongoDB.

اقرأ التالي

شاركسقسقةبريد الالكتروني
مواضيع ذات صلة
  • برمجة
  • برمجة
  • قاعدة البيانات
عن المؤلف
ماري جاثوني (4 مقالات منشورة)

ماري جاثوني هي مطورة برامج لديها شغف لإنشاء محتوى تقني ليس إعلاميًا فحسب ، بل جذابًا أيضًا. عندما لا تقوم بالبرمجة أو الكتابة ، فإنها تستمتع بالتسكع مع الأصدقاء والتواجد في الهواء الطلق.

المزيد من Mary Gathoni

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك