تابع الدرس الرابع
* ماهي حقيقة المفتاح الاجنبي (Foreign Key) :
سابقا درسنا مشكلة التكرار ... وحليناها بطريقة ربط الجداول ... ووضع المفتاح الأجنبي في احد هذه الجداول ..
المفتاح الأجنبي مرة ثانية هو عمود يتكرر ولا يمكن ان يكون خاليا ... وهو مفتاح رئيسي في جدول اخر ..
المصيبة
انه لا علاقة له بالجدول .. والمصيبة الأعظم انه يشبه شكليا المفتاح رئيسي
في الجدول الاخراليك مثال : لجدولين .. وتركيبهما صحيح (لاحظ .. صحيح ...)
جدول الموظفين (صورة 134)
وجدول الاقسام (صورة 144)
في جدول الموظفين يوجد مفتاح اجنبي .. وهو رقم القسم ( Dept_no ) لونته باللون الاحمر ...
المفتاح الرئيسي هو عمود لايتكرر ولا يمكن ان يكون خاليا ...وهو رقم الموظف واعطيناه الاختصار (Eno)
على فكرة .... لماذا يلزمنا المفتاح الرئيسي ؟؟
تخيل معي ان صاحبك يدعى سعد Saad .... وهو موظف
سعد
.. كذب عليك وقال " راتبي 4000 دولار وانا في القسم A " ... وانت تريد ان
تتجسس وتطلع على راتب سعد وعلى معلوماته ... تخيل ان عدد الموظفين ضخم جدا
... تخيل عددهم 1000000 موظف (يعني 1000000 صف في الجدول الخاص بالموظفين
(في صورة 134) ) ... 250000 موظف منهم ... يدعون بـسعد (Saad) بالله عليك
قول لي ... كيف نعرف اين معلومات سعد صاحبك ؟؟
عشان نميز بين
الصفوف .. نضع المفتاح الرئيسي .... انظر الصورة 134 .... فالموظف Saad
صاحب الرقم 123333 ليس نفسه Saad صاحب الرقم 123334 ......
لاحظ المفتاح الاجنبي (صورة 134 .. عمود باللون الاحمر)
الان اريدك ان ترى جدول الاقسام (الصورة 144) ,, وان ترى المفتاح الرئيسي (رقم القسم Dept_no) .
اكيـــــــد انك استنتجت عدة نقاط ... اليك هذه النقاط ....
1- المفتاح الاجنبي في جدول الموظفين .. يشبه المفتاح الرئيسي في جدول الاقسام
2- لاحظ ان المفتاح الاجنبي في جدول الموظفين .. رقم ... مثله مثل المفتاح الرئيسي .. وليس كلمة !!
3- هل تلاحظ ان المفتاح الاجنبي لا يمكن ان يكون خالي ؟؟ وايضا المفتاح الرئيسي لا يكون خاليا ؟
4-هل تلاحظ ان المفتاح الاجنبي ... تكون قيمه في هذا النطاق (1 , 2 , 3) ؟ هل شاهدت اعداد غير هذه ؟؟
وهي الاعداد نفسها الموجودة في المفتاح الاساسي .... أي ان نطاقه هو نفس نطاق المفتاح الرئيسي في الجدول الاخر ....
5- هل تلاحظ ان المفتاح الاجنبي يتكرر .. بينما المفتاح الرئيسي لا يتكرر
6-
هل تلاحظ ان المفتاح الاجنبي .. لا يمت صلة بالجدول .. يعني بالله عليك ..
هل رقم القسم صفة للموظف ؟؟ لاحظ ان رقم القسم وهو مفتاح اجنبي ... ليس
صفة تابعة لجدول الموظفين ...
هذه ملاحظات مهمة جدا .... وهي قوانين المفتاح الاجنبي
يتكرر
.. لا يكون خالي .. لا يكون مفتاح رئيسي .. يشبه للمفتاح الرئيسي في
الجدول الاخر كثيرا .. لا تخرج نطاق قيمه عن نطاق قيم المفتاح الرئيسي في
الجدول الاخر ...
سوف ندرس في الدرس القادم ان شاء الله
.... بعض مفاهيم قواعد البيانات المتماسكة .. والتي تجعلك تتجنب خلخلة
موازين قوانين المفتاح الاجنبي .. وبعض القوانين الاخرى .... وسوف ندرس
مالذي سيحصل لو خلخلنا هذه القوانين ان شاء الله ,,
لماذا نضع المفتاح الاجنبي في جدول دون جدول اخر ؟
يعتمد على نوع العلاقة .. هل هي واحد لمتعدد .. ام متعدد لمتعدد .. ام واحد لواحد ....
لنجرب ثلاث امثلة .. مارايك ؟؟
لنفكر معا .. ونستنتج هذه القواعد ...
عن اذنكم بروح اشرب موية ...