You are on page 1of 7

‫التعرف العالقة بين الجداول‪.

‬‬ ‫‪-1‬‬
‫أنواع العالقات‪.‬‬ ‫‪-2‬‬
‫العالقة ‪.One to One‬‬ ‫‪-3‬‬
‫االستفادة من العالقة‪ One to One‬لعمل ‪.Query‬‬ ‫‪-4‬‬
‫العالقة ‪.One to Many‬‬ ‫‪-5‬‬
‫االستفادة من عالقة ‪ One to Many‬في عمل ‪.Form‬‬ ‫‪-6‬‬
‫العالقة ‪.Many to Many‬‬ ‫‪-7‬‬
‫البدء في المشروع المتكامل‪.‬‬ ‫‪-8‬‬

‫تمرين‬
‫مطلوب عمل األتي‪:‬‬
‫مطلوب إنشاء قاعدة بيانات جديدة باسم " العالقات و أهميتها للمبرمج "‪.‬‬

‫‪ -1‬العالقة بين الجداول‬


‫من القواعد األساسية في الـ ‪ Access‬انه على المبرمج تفتيت قاعدة البيانات إلى جداول‬
‫صغيرة ( أي صغيرة في عدد الحقول و ليس صغيرة في عدد السجالت ) و ذلك‬
‫لألسباب اآلتية‪:‬‬
‫‪ )1‬عندما تكون عدد الحقول صغيرة في الجدول يسهل االستعالم منه‪.‬‬
‫‪ )2‬منع تكرار إدخال البيانات المتشابه اكثر من مرة‪.‬‬
‫‪ )3‬األمن و السرية‪.‬‬
‫ثم بعد تفتيت قاعدة البيانات الى جداول عديدة يتم عمل ‪ Relationship‬بينها‪.‬‬

‫أهداف العالقات‪:‬‬
‫‪ )1‬عمل استعالم على اكثر من جدول طالما بينهم ‪.Relationship‬‬
‫‪ )2‬عمل نموذج على اكثر من جدول طالما بينهم ‪.Relationship‬‬
‫‪ )3‬عمل تقرير على اكثر من جدول طالما بينهم ‪.Relationship‬‬

‫‪32‬‬ ‫‪520437302.doc‬‬
‫‪ -2‬أنواع‪ E‬العالقات‬
‫‪. One to One -1‬‬
‫‪.One to Many -2‬‬
‫‪.Many to Many -3‬‬

‫‪ -3‬العالقة ‪One to One‬‬


‫مثال‬
‫‪ ‬بفرض أن لدنا جدول " بيانات شخصية " تصميمه كاألتي‪:‬‬
‫‪Text‬‬ ‫كود الموظف‬
‫‪Text‬‬ ‫اسم الموظف‬
‫‪Text‬‬ ‫العنوان‬

‫‪ ‬جدول " بيانات مالية " تصميمه كاألتي‪:‬‬


‫‪Text‬‬ ‫كود الموظف‬
‫‪Number‬‬ ‫المرتب‬
‫‪Number‬‬ ‫الصافي‬
‫نالحظ أن العالقة بين الجدولين " ‪ " One to One‬حيث ان كل سجل في جدول "‬
‫البيانات الشخصية " يقابله و يكمله سجل في جدول " البيانات المالية‪.‬‬

‫شروط إنشاء هذه العالقة‪:‬‬


‫‪ )1‬أن يكون هناك حقل مشترك ( و هو في حالتنا هذه كود الموظف )‪.‬‬
‫‪ )2‬أن يكــون هنــاك حقـل مشــــترك " ‪ " Primary Key‬في إحـدى الجدولين ‪.‬‬
‫‪ )3‬المقصود بالـ " ‪:" Primary Key‬‬
‫حقل ال يمكن أن تكرر البيانات بداخله‪.‬‬ ‫‪‬‬
‫ال يمكن أن يترك الحقل فارغا ً بدون إدخال بيانات‪.‬‬ ‫‪‬‬
‫شرط من شروط العالقات‪.‬‬ ‫‪‬‬

‫الجدول الذي به ‪ Primary Key‬يسمى " ‪ ،" Primary Table‬الجدول األخر يسمى‬
‫" ‪." Related Table‬‬

‫الخطوات‪:‬‬

‫‪33‬‬ ‫‪520437302.doc‬‬
‫‪ )1‬يفتح جدول " البيانات الشخصية " في وضع الـ ‪.Design View‬‬
‫‪ )2‬نضيء حقل " كود الموظف "‪.‬‬
‫‪ )3‬نـضـغـط عـلى عالمة المـفتاح " ‪ " Primary Key‬فيكـون بالتالـي " ‪Primary‬‬
‫‪" Table‬‬
‫‪ )4‬نغلق هذا الجدول‪.‬‬
‫‪ )5‬يفتح جدول " البيانات المالية " في وضع الـ ‪.Design View‬‬
‫‪ )6‬نضيء حقل " كود الموظف "‪.‬‬
‫‪ )7‬نجعل كود الموظف مفهرس مع عدم التكرار ( ‪ ) No Duplicates‬و ذلك من‬
‫خالل خاصية " ‪ " Indexed‬الموجودة بـ " ‪" Field Properties‬ثم نغلق الجدول‪.‬‬
‫‪ )8‬نفتح قائمة ‪ Tools‬و نختار ‪.Relationships‬‬
‫‪ )9‬تظهر نافذة " ‪ " Show Table‬بها أسماء الجدولين‪.‬‬
‫‪ )10‬أشير إلى جدول " البيانات الشخصية " ثم ‪.Add‬‬
‫‪ )11‬أشير إلى جدول " البيانات المالية " ثم ‪ Add‬ثم بعد ذلك ‪.Close‬‬
‫‪ )12‬نسحب كود الموظف من جدول " البيانات الشخصية " و نضعه على كود‬
‫الموظف الموجود في جدول " البيانات المالية "‪.‬‬
‫‪ )13‬تظهر نافذة " ‪ " Relationships‬بها األتي‪:‬‬
‫‪ :Enforce Referential Integrity‬نشـــطها ( أي فرض تكــامـل مرجـعـي بـين‬ ‫‪‬‬
‫الجدولين )‪.‬‬
‫‪ :Cascade Update Related Fields‬أنشطها ( بمعنى إذا عدلنا كود الموظف‬ ‫‪‬‬
‫في جدول " البيانات الشخصية " يتغير أيضا ً كود الموظف في جدول " البيانات المالية‬
‫"‪.‬‬
‫‪ :Cascade Delete Related Record‬أنشــطها ( إذا حـذفنا سجل من جدول "‬ ‫‪‬‬
‫البيانات الشخصية " يحذف تلقائيا ً سجل من جدول " البيانات المالية"‪.‬‬
‫‪ )14‬ثم ‪.Create‬‬
‫‪ )15‬نالحظ ظهور عالقة " ‪ " One to One‬ثم ‪ ،Save‬بعد ذلك نغلق هذه الشاشة (‬
‫‪.) Relationships‬‬

‫‪ -4‬االستفادة من العالقة‪ One to One‬لعمل ‪Query‬‬


‫الخطوات‪:‬‬
‫‪.Query‬‬ ‫‪New‬‬ ‫‪Design View )1‬‬
‫‪ )2‬نعمل ‪ Add‬لجدول "البيانات الشخصية " و ‪ Add‬لجدول " البيانات المالية " ثم‬
‫‪.Close‬‬
‫‪ )3‬نسحب كود الموظف و اسم الموظف من جدول" البيانات الشخصية "‪.‬‬

‫‪34‬‬ ‫‪520437302.doc‬‬
‫‪ )4‬نسحب المرتب من جدول" البيانات المالية "‪.‬‬
‫‪ )5‬نكتب أمام " ‪Criteria " 100‬‬
‫‪ )6‬يحفظ الـ ‪ Query‬باسم مناسب‪.‬‬

‫‪ -5‬العالقة ‪One to Many‬‬


‫يقصد بها أن كل سجل في جدول ما‪ ،‬يقابله اكثر من سجل في الجدول األخر‪.‬‬

‫مثال‬
‫‪ ‬بفرض أن لدينا جدول " اجماليات الفواتير " تصميمه كاألتي‪:‬‬
‫) ‪Text ( Primary Key‬‬ ‫كود الفاتورة‬
‫إجمالي قيمة الفاتورة ‪Number‬‬
‫يتم إدخال البيانات األتية‪:‬‬
‫كود الفاتورة إجمالي قيمة الفاتورة‬
‫‪8000‬‬ ‫‪100‬‬
‫‪3000‬‬ ‫‪200‬‬
‫‪2000‬‬ ‫‪300‬‬

‫‪ ‬جدول " تفاصيل الفواتير " تصميمه كاألتي‪:‬‬


‫‪( Text‬مفهرس مع الكرار)‬ ‫كود الفاتورة‬
‫‪Text‬‬ ‫اسم الصنف‬
‫‪Number‬‬ ‫القيمة‬
‫يتم إدخال البيانات األتية‪:‬‬
‫القيمة‬ ‫كود الفاتورة اسم الصنف‬
‫‪4000‬‬ ‫سجاد‬ ‫‪100‬‬
‫‪3000‬‬ ‫موكت‬ ‫‪100‬‬
‫‪1000‬‬ ‫ستائر‬ ‫‪100‬‬
‫‪2000‬‬ ‫سجاد‬ ‫‪200‬‬
‫‪1000‬‬ ‫موكت‬ ‫‪200‬‬
‫‪2000‬‬ ‫سجاد‬ ‫‪300‬‬
‫نالحظ أن العالقة بين الجدولين " ‪" One to Many‬‬

‫الخطوات‪:‬‬
‫‪ )1‬يفتح جدول " إجمالي الفواتير " في وضع الـ ‪.Design View‬‬
‫‪ )2‬نضيء حقل " كود الفاتورة" و نجعله ‪ ،Primary Key‬نغلق هذا الجدول‪.‬‬
‫‪ )3‬يفتح جدول " تفاصيل الفواتير " في وضع الـ ‪.Design View‬‬
‫‪ )4‬نضيء حقل " كود الفاتورة "‪ ،‬ثم نجعل كود الفاتورة مفهرس مع التكرار (‬
‫‪،) Duplicates Ok‬ثم نغلق هذا الجدول‪.‬‬

‫‪35‬‬ ‫‪520437302.doc‬‬
‫‪ )5‬نفتح قائمة ‪ Tools‬و نختار ‪.Relationships‬‬
‫‪ )6‬نفتح نافذة " ‪ " Show Table‬من خالل قائمة ‪.Relationships‬‬
‫‪ )7‬أشير إلى جدولي " اجماليات الفواتير " و " تفاصيل الفواتير " ثم ‪ Add‬ثم بعد‬
‫ذلك ‪.Close‬‬
‫‪ )8‬نسحب كود الفاتورة من جدول " اجماليات الفواتير " و نضعه على كود الفاتورة‬
‫الموجود في جدول " تفاصيل الفواتير "‪.‬‬
‫‪ )9‬تظهر نافذة " ‪ " Relationships‬ثم ‪.Create‬‬
‫‪ )10‬نالحظ ظهور عالقة " ‪ " One to Many‬ثم ‪ ،Save‬بعد ذلك نغلق هذه الشاشة‬
‫( ‪.) Relationships‬‬

‫‪ -6‬االستفادة من عالقة ‪ One to Many‬في عمل ‪Form‬‬


‫الخطوات‪:‬‬
‫‪ )1‬يتم عمل نموذج تلقائي ‪ Columnar‬على جدول "اجماليات الفواتير " و حفظه‪.‬‬
‫‪ )2‬يتم عمل نموذج تلقائي ‪ Tabular‬على جدول "تفاصيل الفواتير " و حفظه‪.‬‬
‫‪ )3‬يفتح نموذج " اجماليات الفواتير " في وضع الـ ‪ Design View‬و يتم توسيع‬
‫القسم الخاص بالـ ‪.Details‬‬
‫‪ )4‬انشط ‪ Wizard Control‬في صندوق األدوات‪ ،‬ثم اختار أداة ‪ Subform‬ثم‬
‫أضعها إلى الـ ‪ Form‬ثم احفظ هذا العمل‪.‬‬
‫‪ )5‬تظهر نافذة " ‪ "Subform/Subreport Wizard‬ثم افتح الـ ‪ Combo‬و‬
‫اختار " تفاصيل الفواتير " ثم ‪.Next‬‬
‫‪ )6‬أعطى اسم للـ ‪ Subform‬ثم ‪.Finish‬‬
‫‪ )7‬للتأكد أتحول إلى وضع الـ ‪.Design View‬‬
‫‪ )8‬نالحظ األتي‪:‬‬
‫القسم العلوي بها اجماليات الفواتير‪ ،‬و القسم السفلي به تفاصيل الفواتير‪.‬‬ ‫‪‬‬
‫وجود عدد (‪.Data Control )2‬‬ ‫‪‬‬

‫‪ -7‬العالقة ‪Many to Many‬‬


‫هي عبارة عن عالقتين ‪.One to Many‬‬

‫مثال‬

‫جدول " الدارسين " تصميمه كاألتي‪:‬‬ ‫‪‬‬

‫‪36‬‬ ‫‪520437302.doc‬‬
‫)‪Text (Primary Key‬‬ ‫كود الدارس‬
‫‪Text‬‬ ‫اسم الدارس‬
‫‪Text‬‬ ‫التليفون‬
‫على أن يتم إدخال ‪ 4‬سجالت على األقل‪.‬‬
‫‪ ‬جدول " الدورات " تصميمه كاألتي‪:‬‬
‫)‪Text (Primary Key‬‬ ‫كود الدورة‬
‫‪Text‬‬ ‫اسم الدورة‬
‫على أن يتم إدخال ‪ 3‬دورات‪.‬‬

‫‪ ‬العالقة بين هذين الجدولين ‪ ،One to Many‬حيث أن الدارس يمكن ان يدرس‬


‫اكثر من دورة‪ .‬و من ناحية أخرى يمكن أن يلتحق بالدورة اكثر من دارس‪.‬أي أن‬
‫هذه العالقة ‪ Many to Many‬بشرط إنشاء جدول ثالث يربط بين هذين الجدولين‬
‫يسمى هذا الجدول " جدول رابط "‪.‬‬
‫‪ ‬الجدول الرابط تصميمه كاألتي‪:‬‬
‫‪( Text‬مفهرس مع التكرار)‬ ‫كود الدارس‬
‫‪( Text‬مفهرس مع التكرار)‬ ‫كود الدورة‬
‫يتم إدخال البيانات اآلتية في الجدول الرابط‪:‬‬
‫كود الدورة‬ ‫كود الدارس‬
‫‪200‬‬ ‫‪1‬‬
‫‪300‬‬ ‫‪1‬‬
‫‪300‬‬ ‫‪2‬‬
‫‪200‬‬ ‫‪2‬‬
‫‪100‬‬ ‫‪3‬‬
‫‪200‬‬ ‫‪3‬‬

‫‪ ‬عند عمل عالقة نربط كود الدارس في جدول " الدارسين " مع كود الدارس في‬
‫الجدول " الرابط "‪.‬‬
‫‪ ‬عند عمل عالقة نربط كود الدورة في جدول " الدورات " مع كود الدورة في‬
‫الجدول " الرابط "‪.‬‬

‫‪ -8‬البدء في المشروع المتكامل‬


‫تمرين‬
‫مطلوب عمل اآلتي‪:‬‬
‫‪ )1‬إنشاء قاعدة بيانات جديدة باسم "مشروع المخازن "‪.‬‬
‫‪ )2‬يتم عمل نموذج من وضع الـ ‪: Design‬‬

‫‪37‬‬ ‫‪520437302.doc‬‬
‫‪ ‬و ال يكون مؤسس على ‪ Table‬أو ‪.Query‬‬
‫‪ ‬على أن يوضع بها ‪ Label‬مكتوب عليه آية قرآنية ‪.‬‬
‫‪ ‬يحفظ هذا النموذج باسم " ‪." F1‬‬
‫‪ .3‬عمل جدول باسم " األقسام الرئيسية " تصميمه كاألتي‪:‬‬
‫)‪Text (Primary Key‬‬ ‫كود القسم‬
‫‪Text‬‬ ‫اسم القسم‬
‫‪ ( OLE‬صورة تعبر عن القسم و ليكن صور أقسام السوبر ماركت )‬ ‫صورة القسم‬
‫‪ ‬على أن يتم إدخال بيانات ‪ 4‬أقسام ( قسم رجالي – قسم حريمي – قسم أطفال –‬
‫قسم أغذية و مشروبات )‪.‬‬
‫‪ .4‬عمل جدول باسم " العمالء " تصميمه كاألتي‪:‬‬
‫كود العميل )‪Text (Primary Key‬‬
‫اسم العميل ‪Text‬‬
‫‪Text‬‬ ‫العنوان‬
‫‪ ( Text‬القاهرة ‪ -‬المنصورة – المحلة … وهكذا )‬ ‫المدينة‬
‫‪Text‬‬ ‫التليفون‬
‫‪ ‬يتم إدخال سجالت على أن تكون أكواد العمالء ( ‪.( ... 300-200-100‬‬
‫‪ ‬مراعاة التكرار للمدينة‪.‬‬
‫‪ .5‬عمل جدول باسم " الموردين " تصميمه كاألتي‪:‬‬
‫كود المورد )‪Text (Primary Key‬‬
‫اسم المورد ‪Text‬‬
‫‪Text‬‬ ‫العنوان‬
‫‪ ( Text‬القاهرة ‪ -‬المنصورة – المحلة … وهكذا )‬ ‫المدينة‬
‫‪Text‬‬ ‫التليفون‬
‫‪ ‬على أن يتم إدخال بيانات ‪ 7‬سجالت‪.‬‬

‫‪38‬‬ ‫‪520437302.doc‬‬

You might also like