![]() |
|
الدرس الرابع : العلاقات Relationships . - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : سلسلة دروس تعليم أكسيس (http://vb4arb.com/vb/forumdisplay.php?fid=127) +---- الموضوع : الدرس الرابع : العلاقات Relationships . (/showthread.php?tid=5046) |
الدرس الرابع : العلاقات Relationships . - azzamxp - 04-10-12 بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته .
الدروس مقدمة من أحمد جمال العلاقات RelationShip
قبل أن نبدأ نود أن نعرف أولاً لماذا نستخدم العلاقات ؟ لنعرف ذلك لا بد لنا أولاً أن نعرف ما معنى علاقة .
يقصد العلاقة هو اشتراك حقل بين جدولين بحيث تملك كل قيمة في هذا الحقل سجلين ، السجل الأول في الجدول الأول والسجل الثاني في الجدول الآخر .
نعود إلى سؤالنا السابق : نستخدم العلاقة لنضمن شيئين رئيسيين :
أولاً : تحقيق تكامل حقيقي بين جداول قاعدة البيانات . ثانياً : منع تكرار القيم في أي من الجداول لمنع إهدار حجم قواعد البيانات . ربما لم نبدأ بعد ، ولكن لنرى مثالاً سريعاً نضيفه سوياً لقاعدة البيانات التي كنا نعمل عليها الدروس السابقة .
لنقل أننا نريد أن نريد أن نقسم الأصدقاء إلى أربع مجموعات - مثلاً - بحسب السنة الدراسية في الكلية على سبيل المثال ، ونريد أن نعرف عن كل سنة عدد الطلبة فيها وعدد المواد الدراسية . إذا كنا نعمل بالطريقة التقليدية فسنقول : نضيف لكل صديق حقل خاص بالسنة ، وحقل آخر خاص بعدد الطلبة العام وحقل ثالث بعدد المواد . لكن لاحظ كم مرة سنكرر عدد المواد ، وعدد الطلبة . لاحظ أيضاً لو زادت مادة لطلبة أي سنة دراسية ، فهذا يعني أننا سنحدث بيانات جميع الحقول . وقل نفس الأمر بالنسبة للحذف وغير ذلك . ربما لا يتضح موضوع الحذف في مثالنا ( نوتة الهواتف ) ولكن سأخرج - جزئياً - عن الموضوع لأشرح مثالاً صغيراً على عملية الحذف . لنفرض أن لدينا قاعدة بيانات تحتوي على الموظفين ويهمنا فقط اسم الموظف وفرع الشركة التي يعمل فيها ومكان الفرع .
إذا قامت الشركة مثلاً بحذف فرع ... فهذا يعني أن تقوم يدوياً - أو حتى بالكود - بحذف جميع الموظفين الذين ينتمون إلى هذا الفرع . لكن الأمر ليس كذلك مع العلاقات ، فبمجرد حذف القسم سوف يحذف تلقائياً الموظفون التابعون له – طبعاً فقط إذا كنا نرغب في ذلك - . لتلافي ذلك فإننا نستخدم ما يعرف بالعلاقات RelationShip .
أنواع العلاقات :
النوع الأول : One To One - علاقة واحد لواحد . في هذه العلاقة نقول أن لكل سجل في القاعدة الرئيسية سجل واحد يقابله في القاعدة الثانية . مثال على هذه العلاقة ضمن قاعدة بيانات الأصدقاء : بفرض أننا نريد اضافة المعلومات الموجودة ضمن البطاقة الشخصية ( رقم البطاقة - فصيلة الدم - مصدر البطاقة ) نستطيع اضافة هذه الحقول مباشرة إلى الجدول الأول ، ولكن لاحظ كم سيصبح حجم هذا الجدول ، وبالتالي إذا حاولنا استخراج اسماء الأصدقاء فقط فسيستغرق المزيد من الوقت . ربما لن يظهر ذلك مع قاعدتنا البسيطة ولكنه يظهر مع قواعد البيانات الضخمة . إذن سنقوم بانشاء جدول جديد يحتوي على الحقول التالية ( رقم البطاقة - فصيلة الدم - مصدر البطاقة ) PassPort - BClass - From تبقى شيء واحد وهو الحقل الذي يمثل رابطاً بين الجدولين . وهذا الحقل الرابط له شروط هي :
* أن يكون موجوداً في الجدولين . * أن يكون نوعه متطابقاً في الجدولين ( فلا يصلح أن يكون الأول رقم والثاني نص ) . * أن يحتوي على قيم فريدة ( بمعنى أن لا يتكرر ) حتى لا يسبب المشاكل . ولذا فإننا نقول أننا لا نستطيع أن نستخدم حقل الإسم لاخلاله بالشرط الثالث لاحتمال تشابه الأسماء .
لذلك فإن أنسب حقل هو حقل الرقم لأننا ذكرنا أنه سيحتوي على قيم فريدة ( غير متشابهه ) . قم الآن باضافة حقل Number إلى الجدول السابق وعينه كمفتاح رئيسي Primary Key ، وقم بحفظ الجدول تحت اسم Tb_R1 أو أي اسم كما تحب . *** في النهاية لا يستحب استخدام هذا النوع من العلاقات كثيراً ... النوع الثاني : One To Many - علاقة واحد لمجموعة ( والعكس صحيح ) .
في هذه العلاقة نقول إن لكل سجل في الجدول الرئيسي مجموعة سجلات في الجدول الثاني . مثال ذلك المثال الذ قمنا بشرحه في الدرس السابق . لو لاحظت المثال ستجد أن مجموعة من الطلاب يمكن أن يكون لهم سجل واحد في جدول الفرق ، لكن لا يمكن أن يكون لطالب ( سجل ) واحد أكثر من سجل آخر في جدول الفرق ( السنوات الدراسية ) . وهذا هو الفرق بينه وبين النوع التالي . لذا قم بانشاء جدول ثالث تحت اسم Tb_R2 ويحتوي على الحقول التالية : Year - Books - Students السنة - الكتب - الطلاب يمكننا اضافة حقل جديد في الجدول الأول Tb_Main تحت اسم Year حيث سيكون هو الحقل الرابط بين الجدولين . قم بالضغط على الجدول الأول ، ثم اضغط على ( تصميم - Design ) ، ثم قم بالضغط بزر الماوس الأيسر في المكان المطلوب ثم قم بالضغط على ( ادراج صف - Insert Row ) . أيضاً لا تنس أن تجعل حقل Year مفتاح رئيسي في الجدول الثاني ( جدول الفرق الدراسية ) .
*** هذا النوع من علاقات هي الأكثر استخداماً .
النوع الثالث : Many To Many - علاقة مجموعة إلى مجموعة :
هل تتذكر العبارة التالية التي أوردتها في الدرس السابق ؟ لكن لا يمكن أن يكون لطالب ( سجل ) واحد أكثر من سجل آخر في جدول الفرق ( السنوات الدراسية ) . إذا أزلنا ( لا ) فإننا نكون قد حصلنا على النوع الثالث . مثال هذه العلاقة : لو أردنا أن نضيف جدولاً يحتوي على اللغات فإننا سنلاحظ التالي : * يمكن للشخص الواحد أن يكون له أكثر من لغة . * ويمكن للغة الواحدة أن تكون موجودة عند أكثر من شخص . للقيام بهذه النوعية من العلاقات فإننا نحتاج إلى جدول بسيط ، فمثلاً لدينا جدولين في البداية هما : الرقم - الاسم . 1 - أحمد 2 - محمد 3 - خالد 4 - سامي والثاني للغات : الرقم - اللغة 1 - العربية 2 - الانجليزية 3 - الفرنسية أما الجدول الإضافي فهو للعلاقة بين اللغات والأشخاص ، فلكي ندلل على أن أحمد يتحدث العربية والانجليزية ، فيما يتحدث محمد الفرنسية ، أما خالد فيتحدث الثلاث ، بينما لا يتحدث سامي أي لغة ! فإننا سوف نشكل الجدول التالي : رقم الشخص - رقم اللغة 1 - 1 1 - 2 2 - 3 3 - 1 3 - 2 3 - 3 سنقوم الآن ببعض التعديلات على الجداول يصبح كما في المثال المرفق في هذا الدرس ... ===================================== والآن وبعد معرفة الانواع المختلفة سنبدأ الآن بانشاء العلاقات بين الجدول ، وتوجد طريقتين للقيام بذلك : * عن طريق محرر العلاقات . * عن طريق المعالج الموجود في نوع البيانات Data Types الموجود في خصائص الحقل . وسوف نستخدم الطريقة الاولى . سنبدأ الآن بإنشاء العلاقات بين جدول الأصدقاء وجدول معلومات البطاقة الشخصية ( تذكر أن العلاقة من نوع واحد إلى واحد One To One ) . من قائمة ( Tools - أدوات ) اختر ( Relationships - علاقات ) سوف تظهر شاشة فارغة - افتراضياً - ... اضغط بزر الماوس الأيمن واختر Show Tables - إظهار جداول ، وذلك بالشكل التالي : والآن قم باختيار الجداول واحداً تلو الآخر واضغط Add - اضافة ، وبعد الانتهاء اختر Close - إغلاق . سيظهر لك شكل كالتالي : الآن من قائمة Relationships - العلاقات ، اختر تحرير علاقة - Edit Relationship . سوف تظهر لك شاشة اختر منها Create New . سوف تظهر لك شاشة جديدة بالشكل التالي : في خاصية Left Table Name اختر الجدول الذي سيكون مصدراً للبيانات وهو عندنا Tb_Main وفي الجزء الأيمن اختر Tb_R1 وبالنسبة لخاصية Left Column Name اختر الحقل الذي سيكون رابطاً من الجدول الرئيسي ، ولذا سنختار Number وفي الجزء الأيمن سيكون الحقل أيضاً هو Number . وذلك بالشكل التالي : قم الآن بالضغط على زر Ok وستظهر لك شاشة بالشكل التالي : لاحظ ظهور نوع العلاقة في الجزء الأسفل من الشاشة . أما بالنسبة لأزرار الاختيار : 1 - مربع الإختيار الأول : في هذا الخيار تحدد إذا ما كنت تريد منع المستخدم على ادخال حقل في الجدول الثاني دون أن يكون له نظير في الجدول الأول . 2 - مربع الإختيار الثاني : في هذا الخيار تحدد إذا ما كان تحديث بيانات الجدول الثاني عند تغيير قيم حقل المفتاح الرئيسي . 3 - مربع الإختيار الثالث : في هذا الخيار تحدد إذا ما كنت تريد حذف بيانات الجدول الثاني عند حذف نفس السجل في الجدول الرئيسي . هناك زر آخر تحت اسم ( Join Type - نوع الدمج ) وبها ثلاث خيارات لأنواع مختلفة من الدمج . والآن قم بالضغط على زر ( Create - إنشاء ) . ستلاحظ ظهور رسم لعلاقة بين الجدولين وذلك بالشكل التالي : وبهذا نكون قد أنشأنا العلاقة الأولى من نوع One To One ... في العلاقة التالية سوف نستخدم المعالج . للتأكد من عمل هذه العلاقة اذهب إلى Tb_Main وانقر علامة + الموجودة على يساره ... أتمنى أن يظهر لديك الشكل التالي : سوف نقوم الآن بإنشاء العلاقة الخاصة بالسنة الدراسية ... لذا سوف نتجه إلى جدول TB_Main ونضغط Design ومن ثم نذهب إلى الحقل Year ونختار Lookup Wizard ، وذلك بالشكل التالي : أول شاشة تظهر لنا تخيرنا فيما إذا ما كنا نريد أن نختار جدولاً لننشأ معه علاقة ، أم نريد أن نضع قيم ... سوف نترك الخيار الافتراضي وهو الأول ونضغط على التالي . الشاشة التالية سوف تطلب منا اختيار الجدول الذي نريد إنشاء علاقة معه ، وسنختار Tb_R2 . في الشاشة الثالثة سوف يطلب اسماء الحقول التي نريد لها أن تظهر في الجدول ... سوف نختار Year وذلك بالشكل التالي : ومن ثم نضغط على التالي . في الشاشة التالية سوف يظهر لنا بيانات الحقل المختار الموجودة حالياً في الجدول الذي اخترناه ، لذا سوف نختار التالي . أخيراً سوف نختار اسم الحقل الذي نريد له أن يظهر العلاقة ، وسنتركه على ما هو عليه ، ونختار Finish - إنهاء . سيخبرك أن الجدول لا بد أن يحفظ أولاً قبل القيام بضبط العلاقة ... قم بالحفظ ، ومن ثم أغلق شاشة التصميم . الآن قم بتشغيل الجدول واختر الحقل Year ولاحظ ظهور قيم الجدول الثاني في قائمة وبإمكانك الاختيار منها مباشرة ... وذلك بالشكل التالي : أيضاً اختر الجدول Tb_R2 وانقر علامة + سيظهر لك جميع الطلبة الذين ينتمون إلى هذه السنة وذلك بالشكل التالي : أخيراً سوف نلقي نظرة على شاشة العلاقات التي قمنا بتشغيلها في الدرس السابق ... سوف يظهر لك شكل قريب من التالي : الملف المرفق يحتوي على جميع العلاقات اضافة إلى جميع محتويات الدروس السابقة ، والله الموفق ... الدرس الرابع : العلاقات Relationships . - abdoojh - 03-03-13 بارك الله فيك والله افدتني كثيرا ان شاء الله ربي يجزيك كل خير |