علاقات قواعد البيانات

العلاقات قاعدة البيانات هي العمود الفقري لجميع قواعد البيانات العلائقية

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

كيف يعمل المفتاح الأجنبي لإقامة علاقة

دعونا مراجعة أساسيات المفاتيح الأساسية والأجنبية. يعرّف المفتاح الأساسي بشكل فريد كل سجل في الجدول. وهو نوع من مفتاح المرشح الذي يكون عادةً العمود الأول في جدول ويمكن إنشاؤه تلقائيًا بواسطة قاعدة البيانات للتأكد من أنه فريد.

المفتاح الخارجي هو مفتاح مرشح آخر (وليس المفتاح الأساسي) يستخدم لربط سجل بالبيانات في جدول آخر.

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

هنا ، المفتاح الأساسي لجدول الدورات التدريبية هو Course_ID. مفتاحه الخارجي هو Teacher_ID:

الدورات
معرف بالطبع اسم الدورة التدريبية Teacher_ID
Course_001 مادة الاحياء Teacher_001
Course_002 الرياضيات Teacher_001
Course_003 الإنجليزية Teacher_003

يمكنك أن ترى أن المفتاح الخارجي في الدورات يتطابق مع مفتاح أساسي في المدرسين:

معلمون
Teacher_ID TEACHER_NAME
Teacher_001 كارمن
Teacher_002 فيرونيكا
Teacher_003 خورخي

يمكننا أن نقول أن المفتاح الخارجي للمعلم_المعلم قد ساعد في إنشاء علاقة بين الدورات وجداول المدرسين.

أنواع علاقات قواعد البيانات

باستخدام المفاتيح الأجنبية أو مفاتيح الترشيح الأخرى ، يمكنك تنفيذ ثلاثة أنواع من العلاقات بين الجداول:

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

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

أطراف بأطراف : تسمح علاقة رأس بأطراف بربط سجل واحد في جدول واحد بسجلات متعددة في جدول آخر.

جرب عمل مع قاعدة بيانات تحتوي على جداول Customers (العملاء) و Orders (الطلبيات).

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

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

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

ما هي العلاقات قاعدة البيانات الهامة؟

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

المعلمين والدورات
Teacher_ID TEACHER_NAME دورة
Teacher_001 كارمن علم الأحياء ، الرياضيات
Teacher_002 فيرونيكا الرياضيات
Teacher_003 خورخي الإنجليزية

هذا التصميم غير مرن وينتهك المبدأ الأول لتطبيع قاعدة البيانات ، النموذج الأول العادي (1NF) ، والذي ينص على أن كل خلية جدول يجب أن تحتوي على قطعة واحدة منفصلة من البيانات.

أو ربما قررنا ببساطة إضافة سجل ثانٍ لكارمن ، لكي نفرض 1NF:

المعلمين والدورات
Teacher_ID TEACHER_NAME دورة
Teacher_001 كارمن مادة الاحياء
Teacher_001 كارمن الرياضيات
Teacher_002 فيرونيكا الرياضيات
Teacher_003 خورخي الإنجليزية

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

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

كسر هذا الجدول إلى جدولين ، ينشئ المعلمون والدورات التدريبية (كما هو موضح أعلاه) العلاقة الصحيحة بين البيانات ، وبالتالي يساعد على ضمان اتساق البيانات ودقتها.