المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الخامس : العلاقات – الجزء الأول : نظري - دورة Microsoft Access 2003


khaledbelal
03-30-2010, 10:02 PM
بسم الله الرحمن الرحيم

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

ملاحظة /سيكون هذا الدرس نظري لتفهم فكرة العلاقات فقط إذا لم تفهمه تابع الدرس العملي اللي بعده وراح تفهمه..

العلاقات :قبل أن نبدأ نود أن نعرف أولاً لماذا نستخدم العلاقات ؟
لنعرف ذلك لا بد لنا أولاً أن نعرف ما معنى علاقة .

يقصد بالعلاقة هي اشتراك حقل بين جدولين بحيث تملك كل قيمة في هذا الحقل سجلين ، السجل الأول في الجدول الأول والسجل الثاني في الجدول الآخر .

نعود إلى سؤالنا السابق :نستخدم العلاقة لنضمن شيئين رئيسيين :
أولاً :تحقيق تكامل حقيقي بين جداول قاعدة البيانات .
ثانياً :منع تكرار القيم في أي من الجداول لمنع إهدار حجم قواعد البيانات .

ربما لم نبدأ بعد ، ولكن لنرى مثالاً سريعاً نضيفه سوياً لقاعدة البيانات التي كنا نعمل عليها الدروس السابقة .
لنقل أننا نريد أن نقسم الأصدقاء إلى أربع مجموعات - مثلاً - بحسب السنة الدراسية في الكلية على سبيل المثال ، ونريد أن نعرف عن كل سنة عدد الطلبة فيها وعدد المواد الدراسية .
إذا كنا نعمل بالطريقة التقليدية فسنقول : نضيف لكل صديق حقل خاص بالسنة ، وحقل آخر خاص بعدد الطلبة العام وحقل ثالث بعدد المواد .
لكن لاحظ كم مرة سنكرر عدد المواد ، وعدد الطلبة .
لاحظ أيضاً لو زادت مادة لطلبة أي سنة دراسية ، فهذا يعني أننا سنحدث بيانات جميع الحقول .
وقل نفس الأمر بالنسبة للحذف وغير ذلك .
ربما لا يتضح موضوع الحذف في مثالنا ( نوتة أصدقائنا ) ولكن سأخرج - جزئياً - عن الموضوع لأشرح مثالاً صغيراً على عملية الحذف .


لنفرض أن لدينا قاعدة بيانات تحتوي على الموظفين ويهمنا فقط اسم الموظف وفرع الشركة التي يعمل فيها ومكان الفرع .
إذا قامت الشركة مثلاً بحذف فرع.. فهذا يعني أن تقوم يدوياً - أو حتى بالكود - بحذف جميع الموظفين الذين ينتمون إلى هذا الفرع .
لكن الأمر ليس كذلك مع العلاقات ، بمجرد حذف القسم سوف يحذف تلقائياً الموظفون التابعون له – طبعاً فقط إذا كنا نرغب في ذلك - .


لتلافي ذلك فإننا نستخدم ما يعرف بالعلاقات (RelationShip) .

أنواع العلاقات :

- النوع الأول :One To One - علاقة واحد لواحد :
في هذه العلاقة نقول أن لكل سجل في الجدول الرئيسي سجل واحد يقابله في الجدول الثاني .
مثال على هذه العلاقة ضمن قاعدة بيانات الأصدقاء :
نفرض أننا نريد إضافة المعلومات الموجودة ضمن البطاقة الشخصية ( رقم البطاقة - فصيلة الدم - مصدر البطاقة ) نستطيع إضافة هذه الحقول مباشرة إلى الجدول الأول ، ولكن لاحظ كم سيصبح حجم هذا الجدول..؟؟
وبالتالي إذا حاولنا استخراج أسماء الأصدقاء فقط فسيستغرق المزيد من الوقت..
ربما لن يظهر ذلك مع قاعدتنا البسيطة ولكنه يظهر مع قواعد البيانات الضخمة كتلك التي تبرمج للشركات والمؤسسات التعليمية الكبيرة.
إذن سنقوم بإنشاء جدول جديد يحتوي على الحقول التالية ( رقم البطاقة - فصيلة الدم - مصدر البطاقة ) قم بإنشائه بنفس طريقة الجدول السابق ، تبقى شيء واحد وهو الحقل الذي يمثل رابطاً بين الجدولين .


وهذا الحقل الرابط له شروط هي :

* أن يكون موجوداً في الجدولين .
* أن يكون نوعه متطابقاً في الجدولين ( فلا يصلح أن يكون الأول رقم والثاني نص ) .
* أن يحتوي على قيم فريدة ( بمعنى أن لا يتكرر ) حتى لا يسبب المشاكل .

ولذا فإننا نقول أننا لا نستطيع أن نستخدم حقل الاسم لإخلاله بالشرط الثالث لاحتمال تشابه الأسماء .
لذلك فإن أنسب حقل هو حقل الرقم لأننا ذكرنا أنه سيحتوي على قيم فريدة ( غير متشابهه ) .
قم بإضافة حقل الرقم إلى الجدول الثاني اللي سويته وعينه كمفتاح رئيسي ، وقم بحفظ الجدول واختر له اسم Tb_R1 مثلاً .

*** في النهاية لا يستحب استخدام هذا النوع من العلاقات كثيراً ***

ـــــــــــــــــــــــــــــــــ

النوع الثاني :One To Many - علاقة واحد لمجموعة ( والعكس صحيح ) :
في هذه العلاقة نقول إن لكل سجل في الجدول الرئيسي مجموعة سجلات في الجدول الثاني .
مثال ذلك المثال الذي قمنا بشرحه سابقاً :
لو لاحظت المثال ستجد أن مجموعة من الطلاب يمكن أن يكون لهم سجل واحد في جدول الفرق ، لكن لا يمكن أن يكون لطالب واحد أكثر من سجل آخر في جدول الفرق ( المراحل الدراسية ).
وهذا هو الفرق بينه وبين النوع التالي .
قم بإنشاء جدول ثالث تحت اسم Tb_R2ويحتوي على الحقول التالية :
(المرحلة الدراسية - عدد الكتب - عدد الطلاب)

يمكننا إضافة حقل جديد في الجدول الأول Rabia تحت اسم (المرحلة الدراسية) حيث سيكون هو الحقل الرابط بين الجدولين .
قم بالضغط على الجدول الأول أي ظلله فقط ، ثم اضغط من الأعلى (تصميم) ، ستفتح لك خانة الحقول مع نوع بياناتها أضف حقل (المرحلة الدراسية) ونوع البيانات له نص.

أيضاً لا تنسى أن تجعل حقل (المرحلة الدراسية) مفتاح رئيسي في الجدول الثالث (جدول المراحل الدراسية).

*** هذا النوع من العلاقات هي الأكثر استخداماً ***

ــــــــــــ

النوع الثالث :Many To Many - علاقة مجموعة إلى مجموعة :
هل تتذكر العبارة التالية التي أوردتها سابقاً وهي :
- لكن لا يمكن أن يكون لطالب (سجل) واحد أكثر من سجل آخر في جدول الفرق (السنوات الدراسية) -.
إذا أزلنا ( لا ) فإننا نكون قد حصلنا على النوع الثالث.
سنضع مثال على هذه العلاقة وأهم شيء أن تفهم الفكرة من المثال:


- لو أردنا أن نضيف جدولاً يحتوي على اللغات فإننا سنلاحظ التالي :

* يمكن للشخص الواحد أن يكون له أكثر من لغة .
* ويمكن للغة الواحدة أن تكون موجودة عند أكثر من شخص .

للقيام بهذه النوعية من العلاقات فإننا نحتاج إلى جدول بسيط ، فمثلاً لدينا جدولين في البداية هما :

الرقم - الاسم .
1 - أحمد
2 - محمد
3 - خالد
4 - سامي

والثاني للغات :
الرقم - اللغة
1 - العربية
2 - الانجليزية
3 - الفرنسية

أما الجدول الإضافي فهو للعلاقة بين اللغات والأشخاص ، فلكي ندلل على أن أحمد يتحدث العربية والانجليزية ، فيما يتحدث محمد الفرنسية أما خالد فيتحدث الثلاث ، بينما لا يتحدث سامي أي لغة ! فإننا سوف نشكل الجدول التالي :

رقم الشخص - رقم اللغة
1 - 1
1 - 2
2 - 3
3 - 1
3 - 2
3 - 3

- أتمنى أن تكون الفكرة قد وصلت..






تم بحمد الله ، ونلتقي بالدرس القادم وسيكون تطبيقي (عملي) إن شاء الله..


تحياتي :أبو ربيع

--------------------

المصدر (http://www.gryati.com/vb/showthread.php?t=14333)