شايف الجدول السابق ؟(الصورة 264 السابقة )
أول صف .. ضم القيمتين .... وش يصير الناتج ؟
يعني 123336 نضمها مع 105 يصبح لدينا .... 123336105 واو .... هذا المفتاح الاساسي لأول صف !! والمفتاح الأساسي لا يمكن ان يكون خالي او أن يكون مكرر .... صح ؟؟
طيب ... ضم الصف الثاني ..
يصير الناتج ... 123331106 همممممم .... مختلف تماما عن السابق .. ^^ .. لا يوجد قيمة خالية .. ولا يوجد قيمة مكررة ^^ ,,,
لأنه اختلف رقم الزبون ومعاملته مع الموظف عن رقم الزبون الأخر عن الموظف الأخر
...
طيب ضم الصف الثالث ... أوه .. رقم الزبون نفس رقم الزبون في الصف السابق !!
بعد أن ضمينا ... 123335106 ..... رقم مخالف عن
123331106 في الصف الثاني ...
بالرغم من أن رقم الزبون تكرر مرتين .. ولكن اختلف رقم الموظف !!
الزبون 106 تعامل مع موظفين مختلفين ^^
ونتج قيمتين مختلفتين حل رائع صح ^^ !!
الصف الرابع .. تكرر رقم الموظف ثانية !! ... هل سيؤثر ؟؟ هل تعتقد انه سوف يكرر المفتاح الاساسي ؟
الناتج من ضم الصف الرابع هو 123335102 يشبه (من ناحية رقم الموظف ) ناتج الصف الثالث 123335106
ولكن يشبهه قليلا ^^ ..
تعامل الموظف 123335 مع الزبون 106 ومع الزبون 102 ومافيه أي اشكال ^^
هذا حل قوي جدا ....
ولكن ... لا نستخدمه في كل الاحيان .. ليييييييش ؟ هناك حالة لو صارت ... لا تستخدم هذا الحل ... ماهي الحالة الجديدة ؟؟
حالة جديدة على حسب المتطلبات
:
نتماشى مع القاعدة رقم واحد .. أي جاءتك متطلبات جديدة من مديرك حمزة ...ويخبرك بأنه يريد عدد المرات التي تقابل او تعامل فيها الموظفون مع الزبائن ولا اريد ان تضيف مفتاح اساسي .. ماذا تفعل ... ؟؟
هل تذكر الصورة 244 ؟؟
قال لك المدير حمزة ... ان لا تضيف مفتاح أساسي .. وأنت اقترحت أن يكون العمودين معا... مفتاح أساسي صح ؟
انظر الصورة 244 ... لو تعامل الزبون 105 مع الموظف 123336 (الصف الاول ) ثم تعامل الزبون نفسه مع الموظف نفسه !! ( الصف الثاني).. مالذي يحدث !!
ضم الصف الأول .. وضم الصف الثاني وتطلع نتيجة متساوية وهي ... 123336105
مصيبة .... تكرر المفتاح الأساسي ... والعمل ؟؟ مالعمل ؟؟ المدير سوف يطردك لو قلت له انك تريد ان تضيف عمود جديد كمفتاح أساسي
... ولاحظ انه لا يريد المفتاح الأساسي ... (أي بمعنى آخربإمكانكإضافة حقول ولكن لا يجب ان تكون مفتاح أساسي)
لهذه الحالة يجب ان نضيف حقل ويدعى ..عدد المرات
"no_of_time" ... وهو اقتراح ليس الا ......
انظر الجدول (الصورة رقم 274)
كم مرة تقابل الموظف 123336 مع الزبون 105 ؟؟ مرتين ^^ ...
لو تعامل الموظف 123336 مع الزبون 105 مرة ثالثة ؟؟ يصبح عدد المرات ثلاثة .... وهلم جر ,,,,
لخبطت راسك صح ^^
... أناأعلمكالآن شيء .. لم أتعلمه من كتاب .. بل من خبير قواعد بيانات ..
(سوف أتطرق إليه في الدروس القادمة إن شاء الله ) وبعض من خبرتي المتواضعة جدا ,,
انتهينا من الثلاث الامثلة للعلاقات .. وانتهينا من دراسة المفتاح الاجنبي .. وبقي سوال .. لماذا المفتاح الاجنبي لا يكون خاليا ؟؟ لو جعلناه خاليا .. مالذي يحصل ؟؟
اتحداك ان تعرف ,, (التحدي الاول )
* تحويل الوصف الى نماذج :
في هذا الدرس سوف تتعلم تحويل أي وصف الى نموذج ER
وجدت بعض الأمثلة و إليك هذه الأمثلة وأرجو أن تتبع كل كلمة فيها (تذكر القاعدة رقم 1)... وسوف نحولها الى نموذج ER , وبكل دقة , سوف افصل لك الحل .. واعلمك مادة لن تجد لها شرح كشرحي !! لاني وجدت حلول بدون شرح كيفية التحويل , وستعرف طريقة التحويل , بسيطة للغاااااية , ولكن المشكلة لا تتعلق بتعليمك اياها او لا ... المشكلة انها بالمنطق ,, ولا اعتقد انها صعبة لدى المعظم من الناس .
مثــال 1 :
* تحويل من وصف الى نموذج ER :
شركة تهتم بتسجيل معلومات عن الاقسام والمشاريع التي تنفذها الشركة وكذلك عن الموظفين العاملين فيها والتابعين لهؤلاء الموظفين ,
1- تقسم الشركة الى عدة اقسام ولكل قسم اسم واحد ورقم ولا يجوز ان يكون هناك اكثر من قسم بنفس الاسم او الرقم , لكل قسم موظف يدير هذا القسم ويجب معرفة التاريخ الذي بدأ فيه هذا الموظف بادارة القسم , ولكل قسم موقع واحد فقط .
2- القسم يمكن ان يدير عدة مشاريع , ولكل مشروع رقم واسم , ومكان تنفيذ .
3- يمكن ان يعمل في القسم موظف او اكثر ولكن الموظف يجب ان يتبع لقسم واحد فقط ,ونحتفظ بالمعلومات التالية عن الموظف الرقم ( لكل موظف رقم يميزه عن بقية الموظفين ) , الاسم (الاسم الاول , الثاني ,العائلة ) ,الجنس , الراتب , العنوان
4- الموظف يمكن ان يعمل في عدة مشاريع (ليس بالضرورة ان يدار المشروع من نفس القسم الذي يتبع اليه الموظف ) ونحتفظ بعدد الساعات التي عملها الموظف في كل مشروع .
5- تحتفظ الشركة بمعلومات عن التابعين لكل موظف (التابعين هم الأشخاص الذين يتبعون الموظف مثل الزوجة , الأبناء .... ) هذه المعلومات هي الاسم , تاريخ الميلاد , الجنس , صلة القرابة .
6- تهتم الشركة لمعرفة عدد الموظفين في القسم الواحد
7-المدير لكل قسم يدير جميع الموظفين تحت قسمه .
8- الموظفين نوعين , موظف ثابت ويأخذ راتب ثابت , وموظف يعمل بنظام الساعات ويأخذ نسبة عدد الساعات التي عمل بها .
الحـــــــــــــل :
الاحمر= علاقة
البني = كيان
الازرق = صفات
بالنظر في التحليل استطعنا ان نستخرج العلاقات + الكيانات + الصفات
اشير الى انه عادة (لاحظ .. عادة وليست دائما ) ..... الاسماء تكون صفات او كيانات ,, والافعال تكون علاقات ^^
استخدم هذه بذكاء ,,
الان نأتي للشرح المفصل ,,,
1- تقسم الشركة الى عدة اقسام ولكل قسم اسم واحد ورقم ولا يجوز ان يكون هناك اكثر من قسم بنفس الاسم او الرقم , لكل قسم موظف يدير هذا القسم ويجب معرفة التاريخ الذي بدأ فيه هذا الموظف بادارة القسم , ولكل قسم موقع واحد فقط .
استخرجنا الاقسام ككيان , واستخرجنا الموظف ككيان , لماذا لا تكون الشركة مثلا كيان ؟
لاحظ انه قال "لكل قسم اسم ورقم " وان الكيانات لديها صفات .... اسم قسم , رقم قسم .. صفات للقسم .. اذن القسم كيان , وصفاته اسم القسم ورقم القسم وموقعه .
لم يقل "الشركة لها أسماء الأقسام , أسماء الموظفين ..." ولكن قال "الشركة تنقسم الى عدة اقسام ...."
لاحظ انه لم يركز في صفات للشركة ... لذا استبعدنا كون الشركة كيان ,,,
استخرجنا موظف ككيان ... هنا لا توجد صفات للموظف ... لماذا استخرجناه ككيان ؟ لانه يوجد علاقة بين الموظف والقسم , وهي الفعل "يدير" , أي ان الموظف الواحد يدير قسم واحد , وان القسم الواحد يدار من موظف واحد , انتبه الى نقطة مهمة ... ذكر " التاريخ الذي بدأ فيه هذا الموظف بادارة القسم " , هذه صفة غريبة بعض الشيء , لانها لا توجد في القسم لوحده , ولا توجد في الموظف لوحدة , أي اذا اجتمع الموظف والقسم وصار بينهما علاقة الادارة , فتنتج هذه الصفة الغريبة !! فلنسميها صفة مشتركة لانها لا يمكن ان تكون موجودة الا بوجود علاقة الكيانين ... كيان القسم وكيان الموظف , ونضعها على العلاقة نفسها اليك النموذج الذي استنتجناه ولا تنسى ان تلاحظ الصفة الغريـبة (الصفة المشتركة ) ( الصورة 14)
سوف اركز قليلا على اللغة الانجليزية في النماذج لانها لغة standard ,,,
Manage = يدير
Start_date = التاريخ الذي بدأ فيه الموظف بادارة القسم
Dept_no = رقم القسم وهو مفتاح اساسي ( Primary Key )Dept_name = اسم القسم
Loc = اختصار لـ location واعني بها الموقع
ملاحظة مهمة جدا : لاحظ الصفات جميعها بسيطة ,, وليست مركبة او ماشابه !!!.
2- القسم يمكن ان يدير عدة مشاريع , ولكل مشروع رقم واسم , ومكان تنفيذ .
هنا استنتجنا الكيان "مشروع " لان له صفات وله علاقة بالقسم وهي علاقة تحكم وإدارة , القسم الواحد يتحكم في عدة مشاريع , المشروع الواحد يتحكم (بضم الياء فعل مضارع مبني للمجهول) من قبل قسم واحد .
3- يمكن ان يعمل في القسم موظف او اكثر ولكن الموظف يجب ان يتبع لقسم واحد فقط ,ونحتفظ بالمعلومات التالية عن الموظف الرقم ( لكل موظف رقم يميزه عن بقية الموظفين ) , الاسم (الاسم الاول , الثاني ,العائلة ) ,الجنس , الراتب , العنوان
هنا ظهر صفات للكيان موظف ... ولكن ظهرت لنا علاقة جديدة بين القسم والموظف .. لاحظ انها كانت علاقة ادارة .. والان علاقة عمل !!
صفات الموظف هي : الرقم وهو مفتاح اجنبي كما يظهر لانه قال "لكل موظف رقم يميزه"
الاسم ... صفة مركبة , الجنس والراتب والعنوان .. صفات بسيطة ...
4- الموظف يمكن ان يعمل في عدة مشاريع (ليس بالضرورة ان يدار المشروع من نفس القسم الذي يتبع اليه الموظف ) ونحتفظ بعدد الساعات التي عملها الموظف في كل مشروع .
توجد علاقة بين كيان الموظف وكيان المشروع ... وهي علاقة العمل (يعمل في ) , وهنا يوجد صفة مشتركة بين الموظف وبين المشروع , وهي عدد الساعات التي عملها الموظف في كل مشروع , وكما قلنا لولا هذان الكيانان لما وجدت (بضم الواو وكسر الجيم ) هذه الصفة ,,, اذن نضع هذه الصفة المشتركة على العلاقة نفسها ..
اليك النموذج الذي استنتجناه (الصورة 24)
لاحظ الصفة عدد الساعات "Hours" الموجودة في العلاقة "works on" , وهي علاقة مشتركة ,,
5- تحتفظ الشركة بمعلومات عن التابعين لكل موظف (التابعين هم الأشخاص الذين يتبعون الموظف مثل الزوجة , الأبناء .... ) هذه المعلومات هي الاسم , تاريخ الميلاد , الجنس , صلة القرابة .
تابعين هم بشر ... وهم كيان لهم الصفات اسم , تاريخ الميلاد , جنس , وصلة القرابة ,,
هؤلاء التابعين للموظف في الشركة , لو ان الموظف غير موجود بالشركة ... هل تهتم الشركة بمعلومات التابعين لهذا الموظف ؟
كيان التابعين لن يكون له وجود في النظام طالما ان كيان الموظف لا يكون له وجود في النظام
,
لذا فكيان التابعين هو كيان ضعيف "weak entity "
6- تهتم الشركة لمعرفة عدد الموظفين في القسم الواحد
هذه صفة لاي كيان ؟
هل للكيان موظف ام للكيان القسم ؟
هذه الصفة بامكاننا ان نجعلها بسيطة , ولكنها في الحقيقة ... مشتقة لانه بامكاننا ان نوجدها من عدد الموظفين في أي قسم , هذه الصفة تخص الكيان القسم وليس الكيان موظف , تخيل معي :
قسم أ وبه 50 موظف , قسم ب وبه 60 موظف .... اذن صفة مشتقة وخاصة بالكيان "قسم"
7-المدير لكل قسم يدير جميع الموظفين تحت قسمه .
هنا علاقة كيان الموظف مع كيان الموظف نفسه وهي الادارة (سوبر_فيزر )
8- الموظفين نوعين , موظف ثابت ويأخذ راتب ثابت , وموظف يعمل بنظام الساعات ويأخذ نسبة عدد الساعات التي عمل بها .
كيان الموظف له اكثر من نوع , موظف ثابت وموظف يعمل بنظام الساعات !!
اذن فكيان الموظف كيان رئيسي , سنضطر الى حذف الصفة "راتب " ونضيف صفة راتب ثابت الى الكيان الموظف الثابت , وصفة راتب بنسبة الساعات الى الموظف الذي يعمل بنظام الساعات .
الان انظر النموذج النهائي .. ولا تنسى ان تلاحظ علاقة السوبر فيزر بين الكيان الموظف مع نفسه ,,
... واي سوال أي استفسار احنا حاضرين ( الصورة 34 )