إن أحد أهداف التصميم الجيد لقاعدة البيانات هو إزالة تكرار البيانات (البيانات المكررة). لتحقيق هذا الهدف، تقوم بتقسيم البيانات إلى جداول متعددة تستند إلى الموضوع بحيث تتمثل كل حقيقة مرة واحدة فقط. ثم توفر Access طريقة لإعادة جمع المعلومات المقسمة معا — يمكنك القيام بذلك عن طريق وضع الحقول المشتركة في الجداول ذات الصلة. ومع ذلك، لتنفيذ هذه الخطوة بشكلٍ صحيح، يجب أن تفهم العلاقات بين الجداول، ثم تحدد هذه العلاقات في قاعدة البيانات.
في هذه المقالة
مقدمة
بعد إنشاء جدول لكل موضوع في قاعدة البيانات الخاصة بك، يجب أن تعطي Access طريقة لإعادة تجميع هذه المعلومات مرة أخرى عند الحاجة. يمكنك تنفيذ ذلك من خلال وضع الحقول المشتركة في جداول مرتبطة، وتعريف العلاقات بين الجداول. بعد ذلك، يمكنك إنشاء استعلامات ونماذج وتقارير تعرض المعلومات من جداول متعددة في الوقت نفسه. على سبيل المثال، يتضمن النموذج المعروض هنا معلومات من جداول متعددة:
1. تأتي المعلومات في هذا النموذج من جدول "العملاء"...
2. ...وجدول "الطلبات"...
3. ...وجدول "المنتجات"...
4. ...وجدول "تفاصيل الطلب".
يتم استرداد اسم العميل في المربع فاتورة إلى من جدول "العملاء"، وتأتي قيم الحقلين "معرّف الطلب" و"تاريخ الطلب" من جدول "الطلبات"، كما يأتي اسم "المنتج" من جدول "المنتجات"، وتأتي قيم الحقلين "سعر الوحدة" و"الكمية" من جدول "تفاصيل الطلب". يتم ربط هذه الجداول ببعضها بطرق متعددة لاسترداد المعلومات من كل منها إلى النموذج.
في المثال السابق، يجب أن تكون الحقول في الجداول متناسقة بحيث تعرض معلومات حول الطلب نفسه. يتحقق هذا التناسق باستخدام علاقات الجداول. تعمل علاقة الجداول من خلال مطابقة البيانات في الحقول الأساسية — يكون غالباً الحقل الذي له الاسم نفسه في الجدولين. في معظم الأحيان، تكون هذه الحقول المتطابقة المفتاح الأساسي من أحد الجدولين، والذي يوفر معرفاً فريداً لكل سجل، ومفتاح خارجي في الجدول الآخر. على سبيل المثال، يمكن إقران الموظفين بالطلبات التي تم تعيينهم كمسؤولين عنها عن طريق إنشاء علاقة جدول بين حقول "معرّف الموظف" في الجدولين "الموظفون" و"الطلبات".
1. يظهر معرّف الموظف في الجدولين — كمفتاح أساسي ...
2. ... وكمفتاح خارجي.
أنواع علاقات الجداول
هناك ثلاثة أنواع من علاقات الجدول في Access.
-
علاقة رأس بأطراف
لنستخدم قاعدة بيانات تتبع الطلبات التي تتضمن جدول "العملاء" وجدول "الطلبات" كمثال. يمكن للعميل تقديم أي عدد من الطلبات. وتبعاً لذلك، يمكن أن يقابل كل عميل موجود في جدول "العملاء" عدة طلبات في جدول "الطلبات". وهكذا تكون العلاقة بين جدول "العملاء" وجدول "الطلبات" علاقة رأس بأطراف.
لتمثيل علاقة واحد لأكثر في تصميم قاعدة البيانات، استخدم المفتاح الأساسي الموجود في الجانب "واحد" من العلاقة وقم بإضافته كحقل إضافي أو حقول إضافية إلى الجدول الموجود في الجانب "متعدد" من العلاقة. في هذه الحالة، على سبيل المثال، تقوم بإضافة حقل جديد — حقل المعرف من جدول العملاء — إلى جدول «الطلبات» وتسميته "معرف العميل". يمكنAccess بعد ذلك استخدام رقم معرف العميل في جدول الطلبات لتحديد موقع العميل الصحيح لكل طلب.
-
علاقة أطراف بأطراف
الآن دعونا ننظر إلى العلاقة بين جدول المنتجات وجدول الطلبات. قد يتضمن طلب واحد أكثر من منتج واحد. على الجانب الآخر، يمكن أن يظهر منتج واحد في عدة طلبات. لذلك، يمكن أن يكون لكل سجل في جدول "الطلبات" عدة سجلات في جدول "المنتجات". علاوةً على ذلك، يمكن أن يكون لكل سجل في جدول "المنتجات" عدة سجلات في جدول "الطلبات". تسمى هذه العلاقة علاقة أطراف بأطراف. تجدر الإشارة إلى أنه من المهم أخذ جانبي العلاقة بالاعتبار، لاكتشاف علاقات أطراف بأطراف بين الجداول.
لتمثيل علاقة أطراف بأطراف، يجب إنشاء جدول ثالث يسمى غالباً جدول الوصل، يقسّم العلاقة أطراف بأطراف إلى علاقتي رأس بأطراف. وتقوم بإدراج المفتاح الأساسي من كل جدول من الجدولين في الجدول الثالث. ونتيجة لذلك، يسجل الجدول الثالث كل حدوث أو مثيل، للعلاقة. على سبيل المثال، هناك علاقة أطراف بأطراف بين الجدولين "الطلبات" و"المنتجات" يتم تعريفها بإنشاء علاقتي رأس بأطراف مع جدول "تفاصيل الطلب". يمكن أن يحتوي طلب واحد على العديد من المنتجات، ويمكن أن يظهر كل منتج في العديد من الطلبات.
-
علاقة رأس برأس
في علاقة رأس برأس، لكل سجل في الجدول الأول هناك سجل واحد فقط مطابق في الجدول الثاني، ولكل سجل في الجدول الثاني هناك سجل واحد فقط مطابق في الجدول الأول. هذا النوع من العلاقات غير شائع، إذ يتم في أغلب الأحيان تخزين المعلومات المرتبطة بهذه الطريقة في الجدول نفسه. ويمكنك استخدام علاقة رأس برأس لتقسيم جدول يحتوي على عدة حقول، أو لعزل جزء من جدول لأسباب تتعلق بالأمان، أو لتخزين معلومات تنطبق فقط على مجموعة فرعية من الجدول الرئيسي. عند تعريف مثل هذه العلاقة، يجب أن يشترك كلا الجدولين في حقل مشترك.
لماذا تنشئ علاقات الجداول؟
يمكنك إنشاء علاقة جدول بشكل صريح باستخدام النافذة "العلاقات"، أو بسحب حقل من جزء قائمة الحقول. يستخدمAccess علاقات الجدول لتحديد كيفية ربط الجداول عندما تحتاج إلى استخدامها في عنصر قاعدة بيانات. هناك أسباب متعددة لإنشاء علاقات الجداول قبل إنشاء عناصر قاعدة بيانات أخرى، كالنماذج والاستعلامات والتقارير.
-
تؤثر علاقات الجداول على تصميمات الاستعلامات
للعمل مع سجلات من أكثر من جدول واحد، يجب إنشاء استعلام يربط هذه الجداول في أغلب الأحيان. يعمل الاستعلام من خلال مطابقة القيم في حقل المفتاح الأساسي للجدول الأول بحقل مفتاح خارجي في الجدول الثاني. على سبيل المثال، لإرجاع صفوف تسرد كافة الطلبات لكل عميل، يجب أن تنشئ استعلاماً يربط جدول "العملاء" بجدول "الطلبات" استناداً إلى الحقل "معرّف العميل". في النافذة "العلاقات"، يمكنك بشكلٍ يدوي تحديد الحقول المطلوب ربطها. ولكن، إذا كانت لديك بالفعل علاقة معرفة بين الجداول، Access توفر الصلة الافتراضية، استنادا إلى علاقة الجدول الموجودة. بالإضافة إلى ذلك، إذا كنت تستخدم أحد معالجات الاستعلام، Access يستخدم المعلومات التي يجمعها من علاقات الجدول التي حددتها بالفعل لتقديم خيارات مستنيرة وإعدادات الخصائص مسبقا بالقيم الافتراضية المناسبة.
-
تؤثر علاقات الجداول على تصميمات النماذج والتقارير
عند تصميم نموذج أو تقرير، يستخدم Access المعلومات التي يجمعها من علاقات الجدول التي حددتها بالفعل لتقديم خيارات مستنيرة لك ولملء إعدادات الخاصية بالقيم الافتراضية المناسبة مسبقا.
-
علاقات الجداول هي الأساس الذي يمكنك تبعاً له فرض التكامل المرجعي ليساعدك على منع السجلات المعزولة في قاعدة البيانات. السجل المعزول هو سجل ذي مرجع إلى سجل آخر غير موجود — على سبيل المثال، سجل طلب يشير إلى سجل عميل غير موجود.
عند تصميم قاعدة بيانات، تقوم بتقسيم المعلومات إلى جداول، لكل منها مفتاح أساسي. ثم تقوم بإضافة المفاتيح الخارجية إلى الجداول المرتبطة التي تشير إلى المفاتيح الأساسية هذه. تشكل أزواج المفاتيح الأساسية والخارجية هذه الأساس لعلاقات الجداول والاستعلامات متعددة الجداول. من المهم أن تظل مراجع المفاتيح الأساسية الخارجية هذه متزامنة. يساعدك التكامل المرجعي، الذي يعتمد على علاقات الجداول، على ضمان بقاء المراجع متزامنة.
فهم التكامل المرجعي
عند تصميم قاعدة بيانات، تقوم بتقسيم معلومات قاعدة بيانات إلى جداول متعددة تستند إلى الموضوع لتقليل تكرار البيانات. ثم تعطي Access طريقة لإعادة جمع البيانات معا عن طريق وضع الحقول المشتركة في الجداول ذات الصلة. على سبيل المثال، لتمثيل علاقة رأس بأطراف، استخدم المفتاح الأساسي الموجود في الجدول "رأس" وقم بإضافته كحقل إضافي إلى الجدول "طرف". لإعادة جمع البيانات معا، Access يأخذ القيمة في الجدول "متعدد" ويبحث عن القيمة المقابلة في الجدول "واحد". وبهذه الطريقة، تشير القيم الموجودة في الجدول "طرف" إلى القيم المطابقة لها في الجدول "رأس".
افترض أن لديك علاقة رأس بأطراف بين الجدولين "شركات الشحن" و"الطلبات"، وأردت أن تحذف إحدى شركات الشحن. إذا كانت شركة الشحن التي تريد حذفها لها طلبات في جدول "الطلبات"، ستصبح هذه الطلبات "معزولة" عندما تحذف سجل "شركة الشحن". وسيبقى "معرّف شركة الشحن" موجوداً في الطلبات، ولكنه لن يعود صالحاً، لأن السجل الذي يشير إليه لم يعد موجوداً.
الهدف من التكامل المرجعي هو منع السجلات المعزولة والحفاظ على تزامن المراجع بحيث لا يحدث هذا الموقف الافتراضي مرة أخرى أبداً.
يمكنك فرض التكامل المرجعي من خلال تمكينه لعلاقة الجدول. بمجرد فرضها، يرفض Access أي عملية تنتهك التكامل المرجعي لعلاقة الجدول هذه. وهذا يعني أن Access سيرفض كلا التحديثين اللذين يغيران هدف المرجع، والحذف الذي يزيل هدف المرجع. من المحتمل أن تكون لديك حاجة صالحة تماما لتغيير المفتاح الأساسي للشاحن الذي لديه طلبات في جدول الطلبات. بالنسبة لمثل هذه الحالات، ما تحتاجه حقا هو Access لتحديث جميع الصفوف المتأثرة تلقائيا كجزء من عملية واحدة. بهذه الطريقة، يضمن Access اكتمال التحديث بالكامل بحيث لا يتم ترك قاعدة البيانات في حالة غير متناسقة، مع تحديث بعض الصفوف والبعض الآخر لا. لهذا السبب، يدعم Access الخيار تتالي تحديث الحقول ذات الصلة . عند فرض التكامل المرجعي واختيار الخيار تتالي تحديث الحقول ذات الصلة ، ثم تحديث مفتاح أساسي، Access تلقائيا بتحديث جميع الحقول التي تشير إلى المفتاح الأساسي.
من المحتمل أيضاً أن تواجه حالة صحيحة تستوجب حذف صف وكافة السجلات المرتبطة — على سبيل المثال، سجل "شركة شحن" وكافة الطلبات المرتبطة الخاصة بشركة الشحن هذه. لهذا السبب، يدعم Access الخيار تتالي حذف السجلات ذات الصلة . عند فرض التكامل المرجعي واختيار الخيار تتالي حذف السجلات ذات الصلة ، ثم حذف سجل على جانب المفتاح الأساسي للعلاقة، Access تلقائيا حذف كافة السجلات التي تشير إلى المفتاح الأساسي.
عرض علاقات الجداول
لعرض علاقات الجداول، انقر فوق علاقات على علامة تبويب أدوات قاعدة البيانات. تفتح النافذة "العلاقات" وتعرض أية علاقات موجودة. إذا لم يتم تعريف أي علاقات جدول وكنت تفتح نافذة العلاقات للمرة الأولى، Access يطالبك بإضافة جدول أو استعلام إلى النافذة.
فتح النافذة "العلاقات"
-
انقر فوق ملف، وانقر فوق فتح، ثم حدد قاعدة البيانات وافتحها.
-
من علامة التبويب أدوات قاعدة البيانات، في المجموعة علاقات، انقر فوق علاقات.
-
على علامة التبويب تصميم العلاقات ، في المجموعة علاقات ، انقر فوق كافة العلاقات.يعرض هذا كافة العلاقات المعرفة في قاعدة البيانات الخاصة بك. تجدر الإشارة إلى أنه لن يتم عرض الجداول المخفية (الجداول المحددة لها خانة الاختيار مخفي في مربع الحوار خصائص) والعلاقات الخاصة بها إذا لم يكن الخيار إظهار الكائنات المخفية محدداً في مربع الحوار خيارات التنقل.
يتم تمثيل علاقة الجدول باستخدام خط علاقة يتم رسمه بين جدولين في النافذة "العلاقات". تظهر العلاقة التي لا تفرض التكامل المرجعي كخط رفيع بين الحقول المشتركة التي تعتمد هذه العلاقة. وعندما تحدد العلاقة بواسطة النقر فوق الخط الخاص بها، يظهر هذا الخط بشكل أكثر سمكاً للإشارة إلى أنه محدد. أما إذا فرضت التكامل المرجعي لهذه العلاقة، سيظهر هذا الخط بشكل أكثر سمكاً عند كل نهاية. بالإضافة إلى ذلك، يظهر الرقم 1 فوق الجزء السميك من الخط على أحد جانبي العلاقة، ويظهر رمز اللانهاية (∞) فوق الجزء السميك على الجانب الآخر من الخط.
عندما تكون النافذة "العلاقات" نشطة، يمكنك الاختيار من الأوامر التالية الموجودة على الشريط:
في علامة التبويب تصميم العلاقات ، في المجموعة أدوات :
-
تحرير علاقات يفتح مربع الحوار تحرير علاقات. عندما تحدد خط علاقة، يمكنك النقر فوق تحرير علاقات لتغيير علاقة الجدول. يمكنك أيضاً النقر نقراً مزدوجاً فوق خط العلاقة.
-
مسح التخطيط يقوم بإزالة كافة الجداول والعلاقات من العرض في النافذة "العلاقات". تجدر الإشارة إلى أن هذا الأمر يخفي الجداول والعلاقات فقط — ولا يحذفها.
-
تقرير العلاقة ينشئ تقريراً يعرض الجداول والعلاقات في قاعدة البيانات. يعرض التقرير الجداول والعلاقات غير المخفية فقط في النافذة "العلاقات".
في علامة التبويب تصميم العلاقات ، في المجموعة علاقات :
-
إضافة جداول تمكين تحديد الجداول لإظهارها في نافذة العلاقات.
-
إخفاء الجدول يخفي الجدول المحدد في النافذة "العلاقات".
-
العلاقات المباشرة يعرض كافة العلاقات والجداول المرتبطة للجدول المحدد في النافذة "العلاقات"، إذا لم تكن معروضة بالفعل.
-
كافة العلاقات يعرض كافة العلاقات والجداول المرتبطة في قاعدة البيانات في النافذة "العلاقات". تجدر الإشارة إلى أنه لن يتم عرض الجداول المخفية (الجداول المحددة لها خانة الاختيار مخفي في مربع الحوار خصائص) والعلاقات الخاصة بها إذا لم يكن الخيار "إظهار الكائنات المخفية" محدداً في مربع الحوار "خيارات التنقل".
-
إغلاق يغلق النافذة "العلاقات". إذا قمت بإجراء أي تغييرات على تخطيط النافذة "العلاقات"، سيتم سؤالك عما إذا كنت تريد حفظ هذه التغييرات أم لا.