• 0
The_Coder

الدرس الثاني

سؤال

بسم الله الرحمن الرحيم

الدرس الثاني

اسم الدرس : مقدمة عن قواعد البيانات

نوع الدرس : نظري

صعوبة الدرس : * من *****

محتوى الدرس :

- مفاهيم أساسية في قواعد البيانات العلائقية .

- المفتاح الأساسي وبعض الأمثلة البسيطة عليه .

- المفتاح الأجنبي .

- العلاقات ودرجات العلاقات .

ملاحظات :

تحمل , اصبر , وصابر ورابط , واقرأ الدرس , ولا انصح بفهمه مستقبلا . افهم الآن !!!

all_pic_L2.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

11 إجابة على هذا السؤال .

  • 0

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

تحدثنا في الدرس السابق عن قواعد البيانات العلائقية و قلنا انه مجموعة من البيانات مخزنة بطريقة نموذجية دون تكرار والمتصلة مع بعضها وفق علاقات متبادلة .

و أنها ملفات تركيبتها خاصة .... (لماذا لها هذه التركيبة الخاصة ؟) لكي تستوفي بعض الشروط وبعض المميزات والتي ذكرناها والتي حلت مشاكل نظام الملفات المسطحة .

ولا ننسى مكونات قواعد البيانات .

الآن أريدك أن تعرف مسمى للأعمدة .. لان المسميات مزعجة قليلا .. فمثلا Attribute ( خصائص .. او صفات ).... فهي تخص الأعمدة .. أي ان الحقول (Field) هي نفسها خصائص هي نفسها صفات هي نفسها الأعمدة , لا تنسى هذا أبدا .

والصفوف تسمى بـ (Record ) سجلات , أي سجلات أو صفوف كلها نفس المعنى .

مفاهيم أساسية في قواعد البيانات العلائقية :

يجب أن نراعي في قاعدة البيانات العلائقية وجود المفاهيم التالية :

- اسم للجدول : مثل جدول الطالب , جدول المواد , جدول ..... والجداول هي كما قلنا ملفات .

- الصفات : المقصود بها الأعمدة .. تسمى صفات الجدول كما ذكرنا ... مثلا صفات جدول الطلاب هي اسم الطالب , رقم الطالب ..... الخ

مجال القيم (Domain ) : المقصود بها .. القيم الموجودة بداخل اسم الطالب مثلا , كم تأخذ حرف ؟ مثال آخر , رقم الطالب .. ما هو مجاله ؟؟ يعني هل من 0 – 9999 ؟؟ او من 0- 100000 مثلا ؟؟ ويمكننا تحديد مجال القيم لكل صفة على حسب احتياجنا .

مثلا العمود "اسم الطالب" أنا افرض انه يأخذ 15 حرف كحد أقصى .. و3 حروف كحد أدنى بمعنى آخر كم خانة ؟

والعمود "المعدل " افرضه من صفر الى 5 وان يكون كسري

والعمود "راتب المدرس" مثلا .. افرضه من 3500 ريال الى 9000 ريال ... يعني ليس من الممكن ان يكون راتب مدرس صفر ريال أو سالب 500 ريال , إذن مجال راتب المدرس هو من 3500 الى 9000

- العلاقة (Relation) : مثلا جدول المواد وجدول الطلاب , بينهما علاقة (Relation) ماهي هذه العلاقة ؟ سوف تعرف ذلك

- المفتاح الرئيسي للجدول (Primary key) : ماهو هذا المفتاح ؟ مجرد عمود , ولكن هذا العمود له شروط لكي يصبح مفتاح رئيسي للجدول

في نظام قواعد البيانات العلائقية , نشير للمرة المليون إلى أن الجداول هي مجرد ملفات .

قبل ان نبدأ لنرى مثالين على جدولين (ملفين) ... جدول الكتب لنظام مكتبات و جدول الموظفين لنظام شركة:

الصورة L2_P1

L2_P1.jpg

الصورة L2_P2

L2_P2.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

===================================

* المفتاح الأساسي أو الرئيسي (Primary Key) :

اولا هو مجرد عمود , حقل ما , الفائدة منه هي تمييز السجلات عن بعضها .

السجلات ممكن ان تتشابه , ووجب علينا التميز بينها ... كيف ؟ الآن ستعرف . انتبه أولا لشروط المفتاح الأساسي .

الشروط اللازمة لتوفرها في العمود لكي يكون مفتاح أساسي هو :

1- عدم التكرار .

2- أن لا يكون خالي .

لان هذا العمود له غرض مهم جدا . وهو ان نميز الصف من بين الصفوف , أن نفرق بين سجل وسجل .

السجلات يا عالم دائما تتشابه , فمثلا سجل لطالبين احدهما اسمه احمد محمد مولود في سنة 1986 و طالب آخر اسمه احمد محمد ومولود في نفس السنة

كيف نفرق بينهما ؟ هذه الفكرة .... المفتاح الأساسي وهي ..........

انظر المثال :

يوجد لدينا جدول خاص بالموظفين لأحد الشركات

جدول الموظفين كما يلي

( الصورة L2_P2 السابقة )

L2_P2.jpg

ما رأيك .. ما هو العمود الذي ترى انه مفتاح أساسي .. أي عمود لم يتكرر او لم يكن خاليا ؟

أنا أقول "اسم الموظف الأول " ... هذا العمود هو المفتاح الأساسي !! هل هذا صحيح ؟

ابدأ الآن وغطي الجدول بيدك , وانظر إلى حقل "الاسم الأول" , هل هو جدير بأن يكون هذا الحقل مفتاح أساسي ؟ هل تذكر شروط هذا المفتاح ؟ أن لا يتكرر وأن لا يكون خاليا .

من اختبارنا لهذا الحقل ... أقول لا ليس مفتاح أساسي , لماذا ؟ لأنه تكرر فيه قيمتين .. هما خالد و خالد

كيف نميز بين سجلين إذا اخترنا حقل "الاسم الأول" ؟

كيف نعرف أننا نقصد خالد سعيد وليس خالد نايف لو اخترنا حقل "الاسم الأول " كمفتاح أساسي ؟ فكر قليلا بالله عليك .......

تخيل انه يوجد ألف خالد ! كيف نفرق بينهم ؟

تخيل أننا نريد ترقية احد "الخالدين" , كيف نعرفه من بين هؤلاء الألف ؟؟ ظلم أن نزيد راتب خالد الذي لا نريده , ونترك خالد المسكين الذي نريده .

إذن هذه مشكلة , لا يصلح حقل "الاسم الأول" كمفتاح أساسي نفرق به بين الموظفين ونعرفهم بسيماهم .

نحاول مرة ثانية ونرى عمود أو حقل آخر لعلنا نفلح في اختيار المفتاح الأساسي لهذا الجدول .

هل "اسم الأب " هو المفتاح الأساسي ؟ لا لان سعيد تكرر مرتين

هل حقل "الراتب الإضافي" هو المفتاح الأساسي ؟

نعم , اعتقد انه يصلح ... لم يتكرر ,, ولكن هنالك قيم خالية والراتب الإضافي .. عمود لا يستحق ان يكون مفتاح أساسي . لان به قيم خالية ... فمثلا سعد فادي لا يوجد لديه مكافئة إضافية ( قيمة خالية ) .. بالرغم من أن محمد محمود ليس لديه مكافئة إضافية لكنها ليست خالية ! انتبه ... الصفر ليس قيمة خالية

هل حقل "الراتب" هو المفتاح الأساسي ؟

نعم !! انه أفضل حقل موجود لدينا يصلح كمفتاح أساسي , لأنه لم يتكرر في جدولنا ...

ولكن لحظة !!

قلنا انه من صفات المفتاح الأساسي ان لا يتكرر + ان لا يكون فيه قيم خالية

صحيح انه لم يتكرر في جدولنا هذا ... لكن احتمال انه يوجد موظف جديد راتبه نفس راتب سعد فادي مثلا ,,

هل تاريخ الميلاد هو المفتاح الأساسي ؟ لا ..... من الممكن أن يأتينا موظف تاريخ ميلاده نفس تاريخ ميلاد موظف آخر .

ما الحل ؟ ما العمل ؟

مارأيك في هذه الفكرة :

نأخذ حقل "الاسم الأول " وحقل "اسم الأب " ... ويكونان مفتاح أساسي واحد ؟

هل فهمت ؟ مثلا ندمجهم سوية ...

من السهل أن نجد رجل اسمه سعد ... لكن من الصعب أن نجد رجل اسمه سعد واسم أبوه فادي غير سعد فادي صاحبنا الذي بالجدول , من الممكن دمج حقلين ليكونان مفتاح أساسي .

لكن ... بالنظر إلى المسألة ... لو جاء رجل فعلا اسمه سعد فادي ؟ سنكون في ورطة فعلا , فهذا محتمل .. وأيضا يوجد عيب آخر في هذا الدمج وهو حقلين نصيين وليسا رقمين

الكمبيوتر يحب الأرقام , يحب التعامل مع الأرقام أكثر من الحروف , الأسهل على الكمبيوتر التعامل مع الأرقام , سوف اشرح ذلك فيما بعد , فلا تبتئس .

مارأيك لو دمجنا اسم الموظف واسم الأب وتاريخ الميلاد ؟ يوجد احتمال ضئيــــــــــــــل جدا أن يأتي موظف له نفس الاسم ونفس اسم الأب ونفس الميلاد

لكن لا يزال هنالك احتمال , وأيضا عقدنا المسألة في عملية الدمج , ولعله يؤثر كثيرا في أداء النظام كالبحث وما إلى ذلك,,, لكن هنالك حل نموذجي سهل وميسر .

نضيف حقل جديد (عمود جديد ) نجده يصلح بأن يكون مفتاح أساسي .

لماذا نضيف عمود .. ونزيد كمية البيانات بلا داعي؟ أليس هذا تكرارا ؟

يوجد هناك أسباب مقنعة لإضافته , وستعرف كيف نختصر الكثير الكثير من التكرار بوجود هذا التكرار البسيط للبيانات ... اعرف انك ترى هذا تكرارا ليس ببسيط في مثالنا , لكن نحن نعمل على جداول صغيرة جدا بالنسبة إلى التي تستخدم في المؤسسات المتوسطة والكبيرة , فسوف تلاحظ مدى ضئالة هذا النوع من التكرار .

أنا من ناحيتي ... أرى أن نضيف عمود جديد ويسمى "رقم بطاقة الأحوال المدنية" وهو رقم لا يتكرر أبدا بين المواطنين في دولة ما .. ولا يمكن ان يكون خاليا !!

مارأيك ؟ أو اقترح أن نضع أرقام عادية ... مثلا 1 , 2 , ...... الخ

يعني الموظف رقم 16 معروف انه سالم محمد .. والموظف رقم 23 هو سالم محمد آخر , والموظف رقم 3600 هو سالم محمد ثالث , والموظف رقم 1000000 هو سعد مسعود وهكذا , وطبعا لا يمكن أن نوظف شخص ولا نضع له رقم , لنعتبره نظام متبع في هذه الشركة حتى لا تكون هنالك قيم فارغة .

هل ترى عدم التكرار في هذا العمود ؟ هل ترى عدم وجود قيم خالية ؟ أرجو أن يكون ذلك واضح ,,

ماذا تقترح أنت ؟ ما رأيك أن نضيف مثلا عمود يسمى رقم الموظف كما في الجدول التالي

الصورة L2_P3

L2_P3.jpg

إذن المفتاح الأساسي هو رقم الموظف ... لو أتى موظف جديد نعطيه الرقم مثلا 455 وهو رقم غير موجود في جدولنا , وبإمكاننا أن نعمل عداد أوتوماتيكي لأرقام الموظفين , مثلا أول موظف رقم 1 , والثاني رقم 2 .... الخ .

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

* الـعـــــلاقـــــات :

عرفت أن قواعد البيانات العلائقية بها ميزة العلاقات ولكني اعلم انك لم تفهم ما معنى العلاقات هذه ولماذا وكيف تتم .

لدينا مجموعة جداول معينة , في شركة ما مثلا .... لدينا جدول الأقسام ولدينا جدول الموظفين .... الخ .

الفكرة هي انه بين كل جدول وجدول علاقة , فمثلا جدول الموظفين و جدول الأقسام بينهما علاقة

ما هي العلاقة يا ترى ؟ ما علاقة الموظفين بالأقسام ؟ أعطيك مثال لشركة ما .

العلاقة بين جدولي الأقسام والموظفين هي أن الموظف الواحد يعمل تحت قسم واحد

وان القسم الواحد به أكثر من موظف يعمل به

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

ما رأيك أن نفترض هذا الجدول وهو جدول الأقسام والموظفين الذين يعملون تحت هذه الأقسام :

الصورة L2_P4 (جدول الموظفين والأقسام التي يعملون تحتها )

L2_P4.jpg

لاحظ معي هذه المعلومات , اعرف أن الجدول ليس به الكثير من السجلات ولكن تخيل أننا قصصنا هذا الجزء من الجدول .

انظر إلى قسم المحاسبة وهو قسم واحد ويوجد بمكة وبه 50 شخص , ...

انظر إلى قسم الصيانة , يوجد بالمدينة وبه 70 موظف

انظر إلى قسم المبيعات .. يوجد قسمين , قسم بالرياض وقسم بجدة ....

انظر إلى القسم الجديد "تقنية المعلومات" ولا يوجد به أي موظف , والى الآن لم يتم توظيف موظفين به ,,,, لذا لا بد من ذكره في الجدول .... كيف نهمله ؟ لكن ظهرت لنا مشكلة المفتاح الأساسي الذي أصبح خاليا بالرغم من أننا اخترنا عمود جدير باسم "مفتاح أساسي " !! يجب وضع مفتاح أساسي صحيح ؟

لاحظ الآن قسم المحاسبة , لاحظ معي أن هذا القسم به 3 موظفين وهم احمد سعيد , و خالد سعيد , وخالد نايف ...

لاحظ معي ان القسم به معلومات خاصة تكررت !! ... هل تتوقع التكرار هذا يؤثر كثيرا على تضخم المعلومات ؟

كم مرة ذكرنا ان قسم المحاسبة موقعه في مكة وبه 50 موظف ؟؟

ولو هناك 1000000 موظف في هذا القسم على سبيل المثال وتخيل أن معلومات القسم كثيرة مثلا في أي شارع وفي أي حي وكم مساحة المبنى الخاص به وما هو رقم المبنى ورقم الدور ومتى انشيء ومن هو مديرة وكيف أوصاف هذا المدير وما لون عينيه ... الخ من التفاصيل المهمة والشبه مهمة والتي تعتمد على النظام نفسه .

لقد مللت وأنا اذكر ان هذا التكرار قد يجعل حجم البيانات ضخم لدرجة الهوس !

و انه يوجد تكرار للمعلومات !! ويجب أن نتحاشى هذا التكرار ..... الآن كيف نتحاشاه ؟

نفكر ... كم شيء مستقل يوجد في نظامنا ؟ نظامنا هو نظام لشركة ما ... به موظفين و أقسام ..... الخ

فكر ماهي الأشياء التي تعتبر مستقلة ولها صفاتها وأعمدتها ؟ ماهي الملفات أو الجداول التي نعتبرها مستقلة بحد ذاتها ؟

سوف اسأل فيما بعد عن هذه النقطة انتبه !

إليك هذا .... الموظفين أول ملف مستقل .. لديه الصفات أو الحقول التالية "الاسم الأول" , "اسم الأب" , "الراتب" , "الراتب الإضافي " , "تاريخ الميلاد" , صفات خاصة به فقط دون غيره .

ملف أو جدول الأقسام , وبها الصفات التالية : "اسم القسم" , "موقعه" , "عدد الموظفين بالقسم" الذي يستوعبهم ........ وغيرها .

أي عندنا كائنين , كائن "الموظفين" وكائن "الأقسام" , وفي كل نظام يوجد مجموعة كائنات , الكائنات كأنها هي الجداول فهمت ؟ أي كأنها تسمية أخرى للجداول .

طبعا الأنظمة الكبيرة (البرامج الكبيرة) من يبرمجها ؟ شخص ؟ شخصين ؟ لا

بل فريق عمل .... أول من يبدأ بالعمل شخص أو شخصية تسمى بـ "محلل النظم" , ثم الشخص الذي يليه "مصمم النظم" (من الممكن أن تتواجد المهمتين في شخص واحد فيصبح محلل ومصمم النظم )

ما عمل محلل النظم ؟ هو أن يقابل الزبون (صاحب النظام الذي يريد هذا النظام ) ويبدأ يستفسر منه عن النظام كي يبدأ يحلل ويخطط ويفكر في النظام كيف سيتم إنشاءه , ويعطي أفكاره لمصمم النظام الذي سوف يرسم نماذج النظام

لعلنا نتكلم فيما بعد إن شاء الله عن هذه المواضيع كثيرا , لكن أردت أن أقول أن كثيرا من المحللين أول مهمة لهم هي تحديد كائنات النظام !

مثلا نظام المدرسة , ماهي الكائنات المتوقعة في هذا النظام ؟ كائن "المدرسين" , كائن "الطلبة" , كائن "المواد" ..... هل يصلح أن نقول "كائن الدرجات" ؟؟؟ لا لا .. الدرجة صفة (أو حقل )من كائن المواد !

مفاهيم الكائنات لا استطيع في درس أو 10 دروس تغطيتها .... تحتاج لدورة كاملة .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نرجع إلى موضوعنا , ماذا كنا نقول ؟

أها ,,, الآن عرفنا انه يوجد ملفين أو جدولين أو كائنين مستقلين في الصورة السابقة , هما كائن أو ملف أو جدول الموظفين , وجدول الأقسام .

الآن نصمم جدول خاص بمعلومات الأقسام . وليكن هذا الجدول :

الصورة L2_P5 (جدول الأقسام)

L2_P5.jpg

أين المفتاح الأساسي ؟ نسيت المفتاح الأساسي .

هل هو حقل "اسم القسم" (أو حقل القسم كما أسميته في الصورة )؟ لا طبعا ... يوجد قسمين اسمهما متشابهين ,ومن الممكن أن نضيف أقسام جديدة أخرى ولها نفس الاسم مستقبلا .

لنختصر الأمر , ونضيف مفتاح أساسي من عندنا ونسمي الحقل "رقم القسم" انظر الجدول :

الصورة L2_P6 (جدول الأقسام النهائي)

L2_P6.jpg

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

الآن لدينا جدولين, جدول الموظفين ( الصورة رقم 4 السابقة ) , وجدول الأقسام (الصورة رقم 7 السابقة )

نريد أن نعرف أن الموظف خالد سعيد بقسم المحاسبة الذي بمكة !! كيف نعرف ؟؟ نريد أن نربط بين الجدولين , كيف نربط بين الجدولين ؟؟ لماذا فصلناهما وتحاشينا التكرار ثم ظهرت مشكلة هي الربط ؟

إليك هذا الحل :

نزيد عمود في جدول الموظفين ونسميه "رقم القسم" ونكتب رقم القسم فيه ... لا تسأل لماذا نضيف عمود في جدول الموظفين ولم نضيفه في جدول الأقسام , ولا تسأل لماذا أضفت لك هذا العمود أصلا .

الآن خالد سعيد الذي يعمل بقسم المحاسبة نضع في سجله رقم القسم 10 .. أي يعمل في القسم رقم 10, وبالرجوع إلى جدول الأقسام نجد القسم رقم 10 هو ماذا ؟ هو قسم المحاسبة .

هل فهمت شيء ؟

بالله عليك قبل أن تنظر إلى الصورة التالية , اعد قراءة بضع السطور التي فوق إذا لم تفهم .

انظر الصورة :

الصورة L2_P7 (جدول الموظفين النهائي وكيفية ربطه بجدول الأقسام)

L2_P7.jpg

خالد سعيد , خالد نايف , و احمد سعيد ,,, يعملون في القسم رقم 10 ... ماهو القسم رقم عشرة يا ترى ؟ تتبع الخط الأحمر وانظر في جدول الأقسام لنكتشف أنهم يعملون في قسم المحاسبة بمكة والذي يستوعب 50 موظف .... الخ

أسف لأني اكرر دائما , و أسف لأني أعيد كلمات (تكرار اكرر مكرر ..... الخ ) , لكن صدقني أنني "طفشت" بنفسي , و أأمل أن ترسخ المادة ,,, لعلي افلح في ذلك .

الآن أريدك أن تلتمس وتشعر باستنتاجاتك النيرة , وان تتناغم مع هذه الدروس .

مارأيك في تكرار حقل "رقم القسم" الموجود في جدول الموظفين ؟ هل تعتقد أن هذا التكرار في جدولنا الضخم صاحب الـ 100000 سجل و 200 حقل , يؤثر كما كان يؤثر التكرار السابق في صورة رقم 5 ؟؟؟

صحيح تكرار , ولكن تكرار ضئيل جدا بالنسبة للتكرار التقليدي .

معلومة إضافية : بعض الأنظمة في بعض المؤسسات تعمل برامج خاصة تولد المفتاح الرئيسي, كيف ؟

مثلا جاءنا الموظف Mike Bill المولود في سنة 1987 فينشئ البرنامج له هذا الرقم MB87_1 على سبيل المثال , يأخذ أول حرف من اسمه , و أول حرف من اسم أبيه , سنة ميلاده , ثم عدد واحد كأول شخص له هذا الرقم

ويأتي موظف آخر Mohammad Bader المولود في نفس السنة , فينشئ البرنامج له هذا الرقم MB87_2 وهكذا ....

مثال آخر , عن الجامعات ... مثلا احد الطلبة رقمه 1234 وهو من دفعة 2004 أي دخل الجامعة سنة 2004 , فإنه يعرف بهذا الرقم "041234" , الرقمين 04 مأخوذة من 2004 ,

وطالب آخر من دفعة 1999 رقمه مثلا 991121 وهكذا ..... , أو يضيفون رقم الكلية إلى رقم القسم إلى ترتيب الطالب بين زملاءه ورقم السنة وينتج "رقم الطالب"

وهذا مجرد مثال .... على حسب المؤسسة على حسب الغرض ينتج الرمز .

الآن تشاهد جدول الموظفين في الصورة L2_P7 السابقة

انظر إلى حقل "رقم القسم" , نفس حقل "رقم القسم" في جدول الأقسام

"رقم القسم" صاحب جدول الأقسام مفتاح أساسي أو رئيسي , لا يتكرر ولا يمكن أن يكون خالي

"رقم القسم" صاحب جدول الموظفين ليس مفتاح أساسي , لأنه تكرر , واعتقد انه من الممكن أن يكون خالي ....

مارأيك في حقل يكون مفتاح أساسي في جدول , وهو نفسه ليس أساسي في الأخر ؟

هذا النوع من الحقول يسمى بالمفتاح الأجنبي Foreign Key ....

أعيد ......

هذا النوع من الحقول يسمى بالمفتاح الأجنبي Foreign Key .

ما فائدة هذا الحقل ؟؟ وكيف اعرف ما إذا كان هذا العمود مفتاح أجنبي أو لا ؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

* المفتاح الأجنبي (Foreign Key) :

غرضه هو ربط جدولين ... وكما في مثالنا السابق .. ربطنا جدول الموظفين بجدول الأقسام ... وجعلنا المفتاح الأجنبي في جدول الموظفين وهو العمود الخاص برقم القسم .

كيف تميز المفتاح الأجنبي ؟ المفتاح الأجنبي هو مفتاح أساسي في جدول آخر .. أي انه مفتاح أساسي في جدول الأقسام , وهو في جدول الموظفين أجنبي !!

المفتاح الأجنبي هو مفتاح أساسي في جدول ما , وليس مفتاح أساسي في آخر , لماذا هذه العباطة ؟ ما غرضه ؟ الغرض هو ربط جدولين بالطريقة التي اشرنا إليها .

لعل في ذهنك هذا السؤال المهم , لماذا وضعنا مفتاح أجنبي في جدول الموظفين ولم نضعه في جدول الأقسام ؟ سؤال ذكي ..

الجواب عند صاحبتنا "درجة العلاقات" , ابحث عنها , أو اصبر حتى الدرس القادم .

* درجــــــة الـــعـــلاقــــات(Relation Degree) :

سوف أتكلم نظريا عن مفاهيم هذه الدرجات , هناك ثلاث درجات وهي /

1- واحد لواحد (one to one) : مثل علاقة المسافر بالتذكرة ... فالمسافر الواحد يملك تذكرة واحدة للرحلة الواحدة.. والتذكرة الواحدة يمتلكها مسافر واحد للرحلة الواحدة

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

مثال آخر ...

الشخص الواحد لديه روح واحدة .... الروح الواحدة في شخص واحد ...

إذن العلاقة : الملكية

الشخص يملك روح واحدة .... الروح الواحدة في شخص واحد

2- واحد لمتعدد أو متعدد لواحد (one to many or many to one ) : مثلا ان يعمل الموظف الواحد في قسم واحد .. والقسم الواحد يعمل تحته مجموعة موظفين (موظفين متعددين .. يعني ممكن يكون موظف واحد ويمكن أكثر ) هل استنتجت لماذا أضفنا المفتاح الأجنبي في جدول الموظفين ؟

إذن العلاقة في مثالنا :العمل

الموظف الواحد يعمل تحت قسم واحد .... القسم الواحد يعمل تحته مجموعة موظفين .

مثال آخر .. العلاقة بين رجل وامرأة الزواج .. الرجل يتزوج أكثر من امرأة ( في المرة الواحدة ) وان المرأة لا تتزوج إلا رجل واحد (في المرة الواحدة )....

إذن العلاقة في مثالنا : زواج

الرجل يتزوج امرأة أو أكثر في المرة الواحدة ..... المرأة تتزوج رجل واحد فقط في المرة الواحدة

أشير فقط أن علاقة واحد لمتعدد ومتعدد لواحد هي أكثر العلاقات رواجا وسهولة في نظم قواعد البيانات , ابحث دائما عنها .

3- متعدد لمتعدد (many to many) : مثل .. الطالب يدرس تحت مجموعة معلمين ... والمعلم الواحد يدرس أكثر من طالب

العلاقة في المثال : دراسة

مثال آخر .....

الكابتن الواحد يقود أكثر من طائرة ... والطائرة الواحدة يقودها أكثر من كابتن

العلاقة في مثالنا : قيادة

انتهى درس اليوم ولله الحمد بعد أن تكلمنا قليلا عن العلاقات ودرجاتها , وعن المفتاح الأجنبي ... و بقي لدينا الكثير الكثير عن قواعد البيانات العلائقية , توقع أمثلة كثيرة وتطبيق أكثر في الدروس القادمة أن شاء الله .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الواجب :

س1 : اضرب لي 3 أمثلة لم اذكرها لدرجة العلاقات (3 أمثلة لعلاقة واحد لواحد ... و3 أمثلة متعدد لمتعدد ... و 3 أمثلة لمتعدد لواحد أو واحد لمتعدد)

س2:في رأيك ... عندنا جدولين .. ويلزمنا أن نربط بينهما ... هما جدول المدينة وجدول الدولة

أين نضع المفتاح الأجنبي ؟ في أي جدول ؟

لم اشرحها ؟؟؟؟ إذن استنتج وخمن واشرحها لي أنت .

س3 : فكر في جدولين (مثال من عقلك لأي جدولين ) وأضف مفتاح أساسي , و أضف مفتاح أجنبي ... , و أتمنى لو تكون علاقة الجدولين واحد لمتعدد أو متعدد لواحد كما ذكرت في مثال اليوم .

التحديات :

س1 : هل تذكر الصورة L1_P2 في الدرس الأول ؟؟ وحاول أن تتحاشى تكرار البيانات , بمعنى آخر ... ذلك كان ملف مسطح , أريد أن تحول قاعدة البيانات تلك إلى قاعدة بيانات علائقية .... تستطيع ؟؟؟

المهام :

- أحضر برنامج الفيزيو VISIO .. من شركة مايكروسوفت .... وهو خاص برسم الـنماذج ... حاول أن تحصل عليه ... فهو مفيد جدا جدا ... في دروسنا .. وله مأرب أخرى ,,,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
س1 : اضرب لي 3 أمثلة لم اذكرها لدرجة العلاقات (3 أمثلة لعلاقة واحد لواحد ... و3 أمثلة متعدد لمتعدد ... و 3 أمثلة لمتعدد لواحد أو واحد لمتعدد)

علاقة واحد لواحد :

1- المواطنين والبطاقات الشخصية ... علاقة ثبتوتيه .. ( لكل مواطن بطاقة تثبت شخصيته ولكل بطاقة مواطن تمثله )

2- العواصم والمدن .... علاقة انتمائية ... ( لكل دولة عاصمة تنتمي لها ولكل عاصمة تمثلها )

3- الأراضي والصحكوك .. علاقة ثبوتية ايضا .. ( كل أرض لها صك يثبت ملكيتها , وكل صك يحدد حدود وأبعاد ارض واحدة ويثبتها )

علاقة متعدد لمتعدد

1- علاقة الطلاب بالدكاتره .. علاقة تدريس .. ( لكل طالب مجموعة دكاتره يدرسونه , ولكل دكتور مجموعة طلاب يدرسهم )

2- علاقة الطلاب بالمواد .. علاقة تعليم ... ( لكل طالب مجموعة مواد يدرسها , ولكل مادة مجموعة طلاب يدرسونها )

3- الدورات التعليمية والمتدربين ( من الممكن ان يلتحق كل متدرب بعدة دورات تعليمية , وأيضا لكل دورة تعليمية متدربين يتعلمون فيها ) .. علاقة تدريب.

4- الطائرات والمطارات .. ( في المطار تهبط عدة طائرات وكل طائرة لها عدة مطارات هبوط وليس مطار واحد)

5- الكتب والمعدين ( من الممكن أن يعد الكاتب عدة كتب وايضا من الممكن ان يكون للكتاب عدة معدين ) .. علاقة اعداد.

6- البرامج والمشاهدين .. الخ

متعدد لواحد او العكس

كثيره جدا

1- السائقين والمركبات .. لايمكن للمركبة ان يقودها اكثر من سائق والعكس صحيح

2- الأحياء والبيوت .. علاقة انتماء ( الحي ينتمي له عدة بيوت ولا يمكن للبيت ان يكون في اكثر من حي واحد).

3- الأندية والاعبين ... انتماء .. ( النادي ينتمي عدد من اللاعبين ولكن الاعب لا يستطيع ان ينتمي لأكثر من نادي).

س2:في رأيك ... عندنا جدولين .. ويلزمنا أن نربط بينهما ... هما جدول المدينة وجدول الدولة

أين نضع المفتاح الأجنبي ؟ في أي جدول ؟

لم اشرحها ؟؟؟؟ إذن استنتج وخمن واشرحها لي أنت .

نضع المفتاح الأجنبي في جدول المدن , لأن جدول الدول هناك سجلات كثيرة فيه , السجل الواحد منها مرتبط بعدة سجلات من جدول المدن ولكي نمنع التكرار وتظخم البيانات نقوم بوضع مفتاح اجنبي في جدول المدن يمثل مفتاح اساسي في جدول الدول وذلك لتوفير بعض الحقول أو الأعمدة.

س3 : فكر في جدولين (مثال من عقلك لأي جدولين ) وأضف مفتاح أساسي , و أضف مفتاح أجنبي ... , و أتمنى لو تكون علاقة الجدولين واحد لمتعدد أو متعدد لواحد كما ذكرت في مثال اليوم .

في قاعدة بيانات لأحدى دور الأيتام , نفترض ان هناك جدولين من عدة جداول

جدول الأيتام - جدول اصحاب الكفالة

جدول الأيتام يتكون من الأعمدة ( الحقول ) التالية:

اسم اليتيم ...................... جنسة ................. ميلادة .......... جنسيته ......... رقم الكفيل

جدول اصحاب الكفالة :

اسم الكفيل ............ جنسيته ........ ميلادة ........... جنسة ....... رقم الكفيل

والمفتاح الأجنبي هو رقم الكفيل وهو اجنبي في جدول الأيتام واساسي في جدول اصحاب الكفالات

التحديات :

س1 : هل تذكر الصورة L1_P2 في الدرس الأول ؟؟ وحاول أن تتحاشى تكرار البيانات , بمعنى آخر ... ذلك كان ملف مسطح , أريد أن تحول قاعدة البيانات تلك إلى قاعدة بيانات علائقية .... تستطيع ؟؟؟

حاولت أن اقسم الملف المسطح إلى جدولين : الدكاترة والطلاب , ولكن هناك حقل لم اعرف ماذا افعل به , وهو حقل الدرجة.

وايضا , فكرت في انشاء قاعدة بيانات آخرى للمواد حيث تحتوي على جداول , كل جدول فيها يعتبر مادة وكل مادة تحتوي على سجلات وهي الطلاب ودرجاتهم , ولكن هذا سوف يزيد التكراااااار والتشعب.

وأنت قد علمتنا في الدرس كيفية انشاء مفتاح اجنبي ومفتاح اساسي في جداول تكون العلاقة فيها واحد لمتعدد أو العكس , ولكنك لم تخبرنا عن طريقة منع التكرار في الجداول التي تكون العلاقات فيها متعدد لمتعدد حيث ان العلاقة بين الدكاترة والطلاب هي متعدد لمتعدد!!

اذن , اتمنى ان تخبرني , كيف اقوم بالربط بين هذين الجدولين ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هناك مشكلة

المهام :

- أحضر برنامج الفيزيو VISIO .. من شركة مايكروسوفت .... وهو خاص برسم الـنماذج ... حاول أن تحصل عليه ... فهو مفيد جدا جدا ... في دروسنا .. وله مأرب أخرى ,,,,

لقد بحثت عن هذا البرنامج فلم اجده , واشتريت برامج حزمة المياكروسوفت 2003 والموافقة للبرامج المحملة على الجهاز , ولكنه يقول ان هناك ملف ناقص لكي يتم التحميل ( A56140101.CAB ) .. بحثت عن هذا الملف ومن المؤكد انه غير موجود , فمالحل فأنا ليس لدي خبرة في هذه البرامج , ارجوا المساعدة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

ماشاء الله عليك اخي CoMinG

الله يعطيك العافية , شكرا لحلك الاسئلة ...

من ناحية الفيزيو ... شكل الفيزيو مش مع الحزمة , لأن الملف الذي ذكرته هو اول ملف , ... والله ما ادري شو العمل ..... الملف ليس بالصغير , ولا ادري هل يوجد موقع يستوعب الملف واستطيع ان ارفع فيه هذا الملف او لا ...

ولا ادري هل شركة مايكروسوفت توفر البرنامج عبر الموقع ؟

حاول ان تجد لي موقع جيد للرفع ..... حتى ارسله لك ....

احاول اشوف لك حل ...

الصورة التي بالدرس السابق .... كان مقصدي بس ان تفكر ...

لأني فيما بعد شرحت علاقة المتعدد للمتعدد

ممتاز انك حددت الكائنات او بمعنى اخر .. الجداول , وواضح انك فهمت الدرس جيدا

هنالك ثلاث جداول ... جدول الطالب , جدول الدكتور , وجدول المواد ..... ليس كما ذكرت "حقل الدرجة"هو المشكلة ...

المشكلة ايضا تكمن في حقل المادة اصلا ....

يطول شرحها , لكن ستجدها في الدروس القادمة ...

اسف لأني جعلتك تفكر , لكن اردت ان ارى الذين اصلا يحلون الواجب .

شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سلام ...

نسيت ان اشكرك من كل قلبي على حلك للواجب بهذا الابداع ...

شكرا لك اخي , شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

لفتح صفحة دروسي ...

1- اضغط على الوصلة التالية : http://www.4shared.com/

2- ادخل اسم المستخدم [email protected]

3- ادخل كلمة السر 999999999

4- بامكانك استعراض جميع دروسي في الصفحة التي ستعرض لديك

ارجوووو رجاء خاص ان لا ترفع ملفات ... استحلفك بالله ان لا تضع ملفات تسيء الينا جميعا , ولا تحذف شيء او تضيف شيء او تعدل شيء خارج عن

موضوعاتي ... الا لأهمية قصوى تخصنا .

بامكانك التسجيل مجانا ووضع ملفاتك التي تريد ....

و اني بريء مما يعملون ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .