أحد أهداف التصميم الجيد لقاعدة البيانات هو إزالة تكرار البيانات. ولتحقيق هذا الهدف، نقوم بتقسيم البيانات إلى العديد من الجداول القائمة على الموضوعات، بحيث يتم تمثيل كل حقيقة مرة واحدة فقط. نقوم بعد ذلك بتزويد (Access) بطريقة لإعادة تجميع المعلومات المقسمة معًا، حيث يمكننا القيام بذلك عن طريق وضع الحقول المشتركة في الجداول المرتبطة. وللقيام بهذه الخطوة بشكل صحيح، على الرغم من ذلك، يجب أن يتم فهم العلاقات بين الجداول، ثم تحديد هذه العلاقات في قاعدة البيانات.
أنواع علاقات الجداول في برنامج اكسس:
بعد أن نحدد الجداول والحقول في كل جدول (عملية التصميم) في قاعدة البيانات، سنجد أنه سيتم تخزين البيانات في أكثر من جدول، وبالتالي إذا كانت هذه البيانات غير مرتبطة بشكل أو بآخر، فهذه البيانات قد لا تكون لها قيمة؛ لأنها مشتتة ولا تعطي صورة واضحة لحقيقة الأشياء. ومن ثم يجب علينا ربط هذه المجموعة من الجداول ببعضها البعض بحيث إذا أضفنا بيانات في جدول معين، سيكون لهذا السجل ارتباط (علاقة) بجداول أخرى. ولربط جدولين معًا في الجدول الأول، نضيف حقلاً جديدًا بنفس نوع حقل المفتاح الأساسي (ID) في الجدول الثاني، بحيث يكون هذان الحقلان هما الرابط بين الجدولين.
علاقة رأس بأطراف A one-to-many relationship:
لو أردنا أن نستخدم قاعدة بيانات تتّبع الطلبات التي تتضمن جدول العملاء وجدول الطلبات كمثال. يمكن للعميل وضع أي عدد من الطلبات، ويترتب على ذلك أنه بالنسبة لأي عميل يتم تمثيله في جدول العملاء، قد يكون هناك العديد من الطلبات الممثلة في جدول الطلبات. العلاقة بين جدول العملاء وجدول الطلبات هي علاقة رأس بأطراف. لتمثيل علاقة رأس بأطراف في تصميم قاعدة البيانات، يجب أخذ المفتاح الأساسي على الجانب “رأس” من العلاقة وأضافته كحقل أو حقول إضافية إلى الجدول الموجود في جانب “الأطراف” من العلاقة، في هذه الحالة، مثلاً يمكن إضافة حقل جديد (حقل المفتاح (id) من جدول العملاء) إلى جدول الطلبات وتسميته مفتاح العميل (Customer ID). يمكن لـ(Access) بعد ذلك استخدام مفتاح العميل (Customer ID) في جدول الطلبات لتحديد موقع العميل الصحيح لكل طلب.
علاقة أطراف بأطراف A many-to-many relationship:
لنأخذ كمثال العلاقة بين جدول المنتجات وجدول الطلبات، يمكن أن يتضمن الطلب الواحد أكثر من منتج واحد، من ناحية أخرى، يمكن أن يتكرر منتج واحد في العديد من الطلبات. لذلك يمكن أن يكون هناك العديد من السجلات في جدول المنتجات. بالإضافة إلى ذلك، لكل سجل في جدول المنتجات، يمكن أن يكون هناك العديد من السجلات في جدول الطلبات.
وتسمى هذه العلاقة علاقة أطراف بأطراف، حيث أنه للكشف عن علاقات أطراف بأطراف الموجودة بين الجداول، من المهم أن نضع بالاعتبار كلا الجانبين من العلاقة. لتمثيل علاقة أطراف بأطراف، يجب إنشاء جدول ثالث، يُسمّى غالبًا جدول الوصلات، والذي يقسم علاقة أطراف بأطراف إلى علاقتين رأس بأطراف. نقوم بإدراج المفتاح الأساسي من كل من الجدولين في الجدول الثالث. نتيجة لذلك، يسجل الجدول الثالث كل تكرار أو مثيل للعلاقة.
علاقة رأس برأس A one-to-one relationship:
في علاقة رأس برأس، يمكن أن يحتوي كل سجل في الجدول الأول على سجل واحد مطابق فقط في الجدول الثاني، ويمكن أن يحتوي كل سجل في الجدول الثاني على سجل مطابق واحد فقط في الجدول الأول. هذه العلاقة ليست شائعة لأنه في أغلب الأحيان يتم تخزين المعلومات المرتبطة بهذه الطريقة في نفس الجدول.
يمكن استخدام علاقة رأس برأس لتقسيم جدول يحتوي على العديد من الحقول، أو لعزل جزء من الجدول لأسباب تتعلق بالأمان، أو لتخزين المعلومات التي تنطبق فقط على مجموعة فرعية من الجدول الرئيسي. عندما تحدد مثل هذه العلاقة، يجب أن يشترك كلا الجدولين في حقل مشترك.
لماذا تم إنشاء علاقات الجدول؟
- يمكن إنشاء علاقات الجداول بشكل صريح باستخدام النافذة “العلاقات”، أو عن طريق سحب حقل من جزء قائمة الحقول. يستخدم (Access) علاقات الجداول (Table relationships) لتحديد طريقة ربط الجداول ببعضها عندما نحتاج إلى استخدامها في قاعدة البيانات. وهناك عدة أسباب وراء إنشاء علاقات الجداول قبل إنشاء كائنات قاعدة بيانات أخرى، مثل النماذج والاستعلامات والتقارير.
- تحدد علاقات الجدول تصميمات الاستعلام (query) للعمل مع سجلات من أكثر من جدول، يتوجب غالبًا إنشاء استعلام يربط الجداول. حيث يعمل الاستعلام عن طريق مطابقة القيم الموجودة في حقل المفتاح الأساسي (ID) للجدول الأول مع حقل مفتاح خارجي في الجدول الثاني. على سبيل المثال، لإرجاع الصفوف التي تسرد جميع الطلبات لكل عميل، يمكنك إنشاء استعلام يربط جدول العملاء بجدول الطلبات استنادًا إلى حقل معرّف العميل (Customer ID).
- في نافذة العلاقات، يمكن تحديد الحقول المراد ضمها يدويًا. ولكن، إذا كان هناك بالفعل علاقة معرّفة بين الجدولين، فإن (Access) يوفر الصلة الافتراضية، بناءً على علاقة الجدول الموجودة. بالإضافة إلى ذلك، إذا تم استخدم أحد معالجات الاستعلام، فسيستخدم (Access) المعلومات التي يجمعها من علاقات الجداول التي تم تعريفها بالفعل للتزويد باختيارات مدروسة وملء إعدادات الخصائص مسبقًا بالقيم الافتراضية المناسبة.
- تقوم علاقات الجدول بإعلام تصميمات النموذج والتقريرعند تصميم نموذج أو تقرير، يستخدم (Access) المعلومات التي يجمعها من علاقات الجداول التي تم تعريفها بالفعل لتقديم اختيارات مدروسة ولإعداد إعدادات الخصائص مسبقًا بالقيم الافتراضية المناسبة.
- علاقات الجداول هي الأساس الذي يمكنك من خلاله فرض التكامل المرجعي للمساعدة في منع السجلات المعزولة في قاعدة البيانات. حيث أن السجل المعزول هو سجل بمرجع إلى سجل آخر غير موجود، على سبيل المثال، سجل طلب يشير إلى سجل زبون غير موجود.
- عندما نقوم بتصميم قاعدة بيانات، فإننا نقسّم المعلومات إلى جداول، لكل منها مفتاح أساسي (ID). يمكن بعد ذلك إضافة مفاتيح خارجية إلى الجداول المرتبطة التي تشير إلى تلك المفاتيح الأساسية. حيث تشكّل أزواج المفاتيح الأساسية الخارجية هذه الأساس لعلاقات الجداول والاستعلامات متعددة الجداول. من المهم أن تظل مراجع المفاتيح الأساسية الخارجية متزامنة. ويساعد التكامل المرجعي الذي يعتمد على علاقات الجداول في ضمان بقاء المراجع متزامنة وموجودة.