الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

علاقة رأس بأطراف على نفس الجدول

مغلق
بدأه omhassan في 10 مايو 2005 · 3 رد · 2,856 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته عليكم:

أعمل قاعدة بيانات عن الموظفين والمدراء ولأن الموظفين هم مدراء فأن معلوماتهم في نفس الجدول كيف أمثل هذه العلاقة داخل Access يعني كيف أمثل علاقة رأس بأطراف على نفس الجدول

كذلك إذا أنشأت علاقة رأس بأطراف بين جدولين ولم أرد إدخال قيمة للمفتاح الأجنبي فإن Access لا يقبل فكيف أعمل مثل هذه الحالة في العلاقات

#2

تفضل اخي الكريم

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

1. تم انشاء جدول وحيد للموظفين ووضع فيه حقل الاسم والرقم والوظيفه

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

اختكم

زهره

الموظفين والمدراء.rar

تم تعديل هذه المشاركة بواسطة zahrah في 10 مايو 2005 في 23:49

#3

هذا الردّ تم تقديمه حسب فهمي للسؤال ، لذا أرجو التصحيح إذا كان فهمي مغايراً .

* بالنسبة للشطر الأول من السؤال :

يمكنك بناء هذه العلاقة بعدة طرق و لكن للتسهيل جرّبي الخطوات التالية :

- قومي بفتح نافذة العلاقات ، تأكدي من و جود جدول الموظفين

- قومي بإعادة إدخال جدول الموظفين مرة أخرى ( إضافية ) و ستلاحظين أن أكسس أعطى للجدول المستنسخ نفس الاسم مضافاً إليه رقم 1

- أوصلي العلاقة بين حقل رقم الموظف ( من الجدول المستنسخ ) بحقل رقم المدير ( في الجدول الأصلي )

• بمعنى أن حقل رقم الموظف في الجدول المستنسخ هو المفتاح الأساسي ، أمّا حقل رقم المدير في الجدول الأصلي هو المفتاح الثانوي .

• وجود الجدول المستنسخ و جود منطقي و ليس وجود مادي حقيقي ، لذلك لن يفرض أكسس التكامل المرجعي بينهما رغم وجود علامة صح عند ( فرض التكامل المرجعي Enforce Referential Integrity ) و لن تتأثر العلاقة ( واحد لمتعدد ) .

و لكن لمزيد من تجويد العمل يمكنك عمل الآتي :

قومي بعمل استعلام على جدول الموظفين ثم ربطه بجدول الموظفين بنفس الطريقة المذكورة أعلاه مع استحسان مراعاة ما يلي :

1 - حيث لا يعقل أن تكون قائمة المدراء تحتوي على جميع الموظفين ( من المدير للخفير ) و كذلك لا يعقل أن يكون المدير تحت إدارة نفسه إذاً :

- من الأفضل أن يكون الاستعلام على جدول الموظفين لاستخلاص من هو بوظيفة مدير فقط و رقمه لا يساوي رقم الموظف في النموذج ( في المثال المرفق استعلام Mngrs ).

- اجعلي هذا الاستعلام مصدراً لقائمة منسدلة في حقل المدير في نموذج الموظفين . ( في المثال المرفق نموذج Emp ) و ستلاحظين أثناء التنقل بين السجلات أن اسم المدير يختفي من القائمة إذا كان السجل الحالي عائد له.

2 – بإضافة ماكرو بسيط للتحديث تحصلين على نتائج جيدة .

3 - لمعاينة البيانات حسب العلاقة أنظري النموذجين ( Mngrs-1 , Mngrs-1-Sub) حيث النموذج الأساسي مبني على استعلام المدراء فقط Mngrs-1 ، و النموذج الفرعي مبني على استعلام Mngrs-1-Sub ( فقط للتجويد )

الرابط بين النموذجين ( المفتاح الأساسي ( رقم الموظف ) للمدير = المفتاح الفرعي ( رقم المدير ) للموظف )

4 – طبعاً يمكن تطوير النموذجين للقيام بعملية إدخال البيانات إن شئت .

* بالنسبة للشطر الثاني من السؤال :

إذا كان هناك احتمال لوجود سجلات لا تستوجب إدخال قيمة للمفتاح الثانوي ، حينئذ السؤال الذي يطرح نفسه هو ، ما جدوى و جود هذه العلاقة ؟

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

و لكن إذا كانت هناك ضرورة لوجود هذا النوع من العلاقات ، حينها يمكنك عمل الآتي :

- قومي بفتح نافذة العلاقات

- اختاري العلاقة التي بين الجدولين

- بالنقر المزدوج عليها ستظهر نافذة تحرير العلاقات

- قومي بإلغاء علامة صح عند ( فرض التكامل المرجعي Enforce Referential Integrity ) و لن تتأثر العلاقة ( واحد لمتعدد )

في الملف المرفق :

قاعدة بيانات Self-Relation تم فيها ربط الجدول المستنسخ بالجدول الأصلي ( مع النماذج و الاستعلامات المذكورة )

قاعدة بيانات Self-Relation2 تم فيها ربط الاستعلام بالجدول الأصلي .

مع تمنياتي لك بدوام التوفيق .

Self-Relation.zip

#4

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

هذا الموضوع مغلق.

مواضيع مشابهة