مضى على الشبكة و يوم من العطاء.

تصميم أنظمةالمعلومات -Merise conception

MinaMina is verified member.

{ | مشرف قسم لغات البرمجة | }
.:: طاقم المشرفين ::.
.:: كاتب تقني ::.

السمعة:

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

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علمًا.

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

كيف نقوم بانشاء نظام المعلومات الخاص بنا ? ومن أين نبدأ ?


بالبداية سنحتاج إلى خطة عمل أو computerization method, وسنختار Merise Method
إذا كنا سنقوم بإنشاء نظام معلومات من ثم قاعدة بيانات ثم التطبيق الخاص بنا من الصفر سنحتاج أولا أن نقوم بدراسة تحليلية ,هذه الدراسة ستحدد لنا كل ما يوجد في هذا النظام من معلومات

ومن أين نأخذ المعلومات ?

من الجهات المعنية فإذا كنت اريد محاكاة نظام حجز المواعيد عند االطبيب فنحن بحاجة أن نسألهم عن آلية عملهم ونأخذ منهم كل المعلومات اللازمة ثم نبدأ بخطوة التحليل وهي إيجاد العلاقة بين هذه المعلومات.
هنا يأتي دور MERISE METHOD الذي يعتمد على على فصل المعلومات(data) عن المعالجة (traitements) فهو يحتوي على مجموعة من المراحل وفي كل مرحلة سنحدد الModel الذي نعتمد عليه يوجد نوعين من Models اساسين سنعتمد عليهما هما :
  1. CDM(conceptual data model) : كما يوحي اسمه فهذه المرحلة الاولية , تعتبر اساسية ونقوم بها اثناء التحليل وهو غير قابل للتنفيذ not implementable اي انه لايعتبر database بل المخطط فقط.
  2. lDM logical data model :وهذا يعتبر implementable ويمكن اخذه واستعماله ك database مباشرة,يعتبر استنتاجي فبتطبيق مجموعة من القواعد البسيطة يمكن الانتقال من CDM إلى lDM.


CDM
يعرف كذلك ب( Entity-Relationship Diagram (ERD
طيب دعونا من الاسم نستخرج المعنى :
مامعني Entity : هو كل كيان مستقل في النظام الخاص بنا وركزوا على كلمة مستقل .
ناخذ مثال :
في نظام البيع والشراء لمتجر نقوم بإنشاء فاتورة لكل عملية بيع ناجحة بمعلومات المشتري
المشتري
فاتورة
لماذا اعتبرت هذين الاثنينEntity ? يوجد العديد من الزبائن وكلهم بببيانات ومعلومات مختلقة وهم مستقلين فكل شخص يمتلك بيانات مختلفة عن الآخر
بالنسبة للمعلومات التي اود ان احتفظ بها لجميع المشترية نفسها اليس كذلك ?

هذا يعتبر prototype الذي سنقوم فيما بعد بانشاء جميع clients وفقا له :

AD_4nXdZ2u43lQEbBMCulL8U1AJwAxM_kzSxvLMqfMrmeBBAlRXE51TIQAuhjLSr8rRHAtyfsXlce4iBx6f4NqsjfDSofUfAGLwgEpF-nXgjamh7VP-HPRLwzitPIvKlwkEdwkNHrZNxlFYUb5PFuixzYden3o5u
طيب الان جاء مشتري بنفس الاسم واللقب وهذا وارد جدا (شخصيا انا في العائلة امتلك نفس الاسم واللقب مع شخص آخر 😂 )

AD_4nXe1hKTsrlGdJ0010-NGcaEVpulOL4X-B3gh5r3VECisK1viSNT14cvx2OK_fss51DEUOBJJ7Nc_jfFU5EIhrbcJGlhS67G2IkJFLyXjdYoFlX7Lgd5oYxVNybOXqLLLVQ-zhGv6ewy1JloSY2Nx9EtGnaKv

وأين المشكل ?


ألم ننشئ الفاتورة على أساس بيانات المشتري ? الاختلاف الوحيد بين client1 و client 3 هو رقم الهاتف ولا يمكننا الاعتماد على رقم الهاتف في تحديد الاختلاف بين client 1 و client 3 لماذا? لانه ببساطة رقم الهاتف عرضة لأن يتم تغييره في اي وقت ,ممكن ان يقوم كل منهما بتغير رقم هاتفه عد فترة .

AD_4nXfywmh4XiVkubgL16rgCm09ZhHKW8g5muJB6bElOIFqLn-CdNZ2ZsVKh0aV1XPjycU94d1mvrxYRQDBItDAsyhz6lRdPapnjTdjNZT2HFIoo0F49UYpB9NdZLKeSQyph6E_FYxHQLmcHDPzxPUzbBNWt_M
طيب من Mina صاحب الرقم 799-55-897 هل هو نفسه Mina الاول ? صاحب الرقم 987-457-123 ? ومن Mina صاحب الرقم 891-987-129 هل هو نفسه Mina صاحب الرقم 478-897-597 ?
بالنسبة للعناوين client1, client3,client2 وضعتها للتوضيح فقط لذا لا يمكنكم التفريق بين المشترية عن طريقها
-طيب ماهته المعلومات المتداخلة ومن هم هولاء المشترية 😂بأرقام الهواتف الجديدة ? في هذه النقطة حرفيا لايمكننا التفريق بينهم ولا يمكننا معرفة من هم هؤلاء بالضبط
الان سنظطر ان نضيف معلومة منها نستطيع التفريق بين المشترية ? هل نضيف تاريخ الميلاد ?
AD_4nXeiGGUAUcQS8hT03p0n3zxMbD_5rZQj7cwtonfhZCriGZTjYBIUPcrAEo1hDgfKnv4gYy9-Tg7QFzADELvK3y217sK0EFepf9Gk_eypG1SJ1HvqnADGCm0AhRlYRNgVnGs-xPLnWU3FjM_NGtOnnyoA_RF2
بهذه الطريقة نستطيع ان نفرق بينهم ? لا والله مازلنا سنقع في نفس المشكل هل توجد احتمالية ان يكون لهم نفس الاسم ونفس اللقب ونفس تاريخ الميلاد ? اذا كانت توجد احتمالية
0.000000000001% ان تتحق , حتى وان كانت جد ضئيلة في عالم الحاسوب لا يمكننا اعتمادها.
الان حتى نستطيع معرفة كل زبون يجب ان تتوفر لدينا المعلومات التالية الاسم اللقب رقم الميلاد ,مذا لو نضيف معلومة واحد فقط بها يمكننا معرفة كل مشتري ?
وهذا مايعرف بال ( identifiant )ID يعتبر رقم التعريف وهو وحيد(يمكننا الضمان بانه وحيد) ونعبر عنه بالشكل التالي

AD_4nXdqJZOVASc0UsUDGJlfoMQlHTEj_dg9NaXhYL6zrABt2UqkDubk6m5xbpoy1kIXkT8dfpBu4zmfSqml3g4zVbSrzAbPHpS_tyQuBt73zOqnC0kT0pdG8_t1MBSF23c8pf-Q7eyirzFSksIBFhcBIU7_SEY
( أي كلمة تحتها خط تعتبر id بدون الحاجة لذكر كلمة id )
الان مهما غيرنا في رقم الهاتف يمكننا دائما معرفة من هو الشخص بالضبط عن طريق id لانه وحيد ولا يتغير


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

كرقم تعريف لكنها ليست عملية, ينصح ألا يتجاوز 3 إلى 4 عناصر



اذا ماذا نقصد بوحيد ? كي نفهم اكثر client هي عبارة عن table و تحتوي على اعمدة وصفوف الاعمدة هي table attributes مذا نقصد بال atributes ? هم عناصر table باختصار ومذا يوجد في الصفوف هيا client1 ,client2 ,client3…..

AD_4nXcxHMaUOCj-O91uVsoFjA9TSwvrVg4e9RdOLc3o8VfvXXQJal9Z-Q92WOEUnNvhyHmymIyO072ty6IiTsA9TLG6rUEfoUDMNCydo3Z2-9zZaPH4auj5iFjHXFPdnxrp41N0Pu3QJgi31kQzf-9MRAXjtHRS

هل يجب ان نعرف شي بخصوص atributes ?


نعم كل atribute يعتبر atomic بننتقل الان إلى علوم الذرة ام ماذا?😂
لا لا صبرا بس ,هنا كلمة atomic تعبر على ان كلatribute لا يمكن ان يحمل اكثر من قيمة ( يحمل قيمة واحدة فقط).
اذا كان الشخص يمتلك رقمين هاتف لايمكننا تسجيل الا قيمة واحدة في phone يمكن تصوره variable يحمل قيمة واحدة واذا اردت تغييرقيمتها ستظطر ان نقوم ب overwrite وبالتالي سنفقد القيمة السابقة .


الان مذا نقصد بكلمة وحيد ?
AD_4nXdPS3ppn1dy0LIlqF2UWkQbGeMr8erOJnQpLJ48rIU_YnSTDxxrug55tdttGHNM_pbN0GtRKWPyAnjDCbFnJo7QOlvwoHOKV1YmkOcBtFNaBZqJmDqH-Qr4JCoBHIRrmbJlEF1UaD8H6Ydf2rRLPGhzIrJ9

اي ان رقم id يجب ان لا يتكرر بأي شكل من الاشكال

طيب بنختبر فهمنا لل id ناخذ firstname+lastname ك id


AD_4nXeb1mCOABY4UYC7vH5y45_Yp1I-YSVz3Lwfl3OypK_ZhfhUWZbOlcJ_lm-jYvbnA5a4RVrgqm6QizRdheqeZMStVCDDSMumztij3VcqkbsA_vQ_Fan9CZvj9Un2SEZ1QZLpVLB3g_UCpH1xl-vfOAZiUfzI
بعد ان اخترنا id هو firstname+lastname يجب على هذه القيمة الا تتكرر ولا تهمنا اي قيمة عداها إن تكررت ام لا .


الان المصطلح Relationship يعني العلاقة ,العلاقة بين مذا ومذا ?
العلاقة بين Entity وEntity(او اكثر ),الم نقل ان كل عملية بيع ناجحة ننشئ منها فاتورة اذا العلاقة بين client و الفاتورة انه يمتلك هذه الفاتورة
AD_4nXcMvLERdW3v7X8sDuex5k0bfuVtPHGa3dDS41Gi6GuJJh7Alb2sci243M5C6QNWMlMR4SGRZrn4mgvV2UdDfF2Xh06L4In0uMkDpQoTk2BoBtByjR2q13CspoDqFuMWoVKYnZ79YZqbp4vVlwN31UsyHBY

-ال client يمتلك فاتورة (اتجاه القراءة من client table نحو invoice table)
-الفاتورة تنتمي لل client ( اتجاه القراءة من invoice table نحو client table )

ماهي العلاقة الحقيقية بينهما اذا كبرناالصورة شوي
AD_4nXeBhu2eQvCPIdZSDniBUdNc_M6lvNLKk8WScco2x1ZTIlx6p_1t2RMjoNlehNCAXcdjY_Rw8L0S6X1srzJETYk7a_KBt1gAT-DEmL5jS9-W06wZZKQbtCkNPii965--o2_Bnv3EaUtYLL1lFN9DFlUVoLv9
انا كزبون يمككني الشراء العديد من المرات صحيح اذا يمكنني امتلاك أكثر من فاتورة? مادام العديد سنعبر عنها ب n.

بالنسبة للفاتورة لمن تنتمي ? هل نفس الفاتورة -فرضا invoice 1- يمكن ان تنتمي لل client1 و client2 في نفس الوقت? لا هي بطبيعة الحال تنتمي لشخص واحد ووحيد .
طيب عند تسجيل client 1 هل يجب ان تكون له فاتورة ? من المنطقي لا نسجل اولا الزبون .
وهل يمكن انشاء فاتورة بدون وجود الزبون ? طبعا لا
بهته الطريقة قمنا باستخراج cardinalities التي تمثل بثنائية (min-max)
ونطرح السؤال التالي
كم يمكن ان يحصل الزبون على فاتورة --> O-N
0هي اول مرة يسجل فيها الزبون وفي هذه اللحظة هو يمتلك 0 فاتورة و N عند قيامه بالشراء أكثر من مرة.

بالنسبة 1-1 اقل قيمة يمكن قراءتها هل يمكن تسجيل فاتورة دون زبون ? لا اذا اقل قيمة ياخذها هي 1 واكبر قيمة هي 1 كذلك لان نفس الفاتورة لا يمكن ان تنتمي لأكثر من شخص
يمكن تلخيصه في المخطط التالي
AD_4nXfaYSvgfFmtsXK6IQyTMmI-1_YrTv8Ydexchv7xrTg-IjVDkfF6MZ2vVpQxn-O_KbY63vJJRxw8c_5RmbA1ALVA-Kg42_X9kHNHAFYwu2x5I5GqltfMjeSSNUeIBBLAi8C2dSlUhbEFThZ7FHgppczzzc0n




مذا يمكننا ان تستنتج من هذا المخطط ?



-يمكننا الاستنتاج ان client1 قام بالضبط بالشراء مرتين
-بالنسبة لل client3 قام بالضبط بالشراء مرة واحدة
-اما client2 فقد سجل للتو
-بالنسبة لل invoice4 لايمكن انشاءه لانه لا ينتمي لاي زبون
-وبالنسبة لل invoice1 لا يمكن ان تنتمي ل client1 و client3 في نفس الوقت .
سنقوم في قادم الدروس بالتعمق اكثر وايجاد العلاقات لاكثر من Entities 2 .


دمتم بخير🦋
 
التعديل الأخير بواسطة المشرف:
السلام عليم جميعا
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما


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

كيف نقوم بانشاء نظام المعلومات الخاص بنا ? ومن أين نبدأ ?


في الاول سنحتاج إلى خطة عمل أو computerization method , وسنختار Merise Method
إذا كنا سنقوم بإنشاء نظام معلومات من ثم قاعدة بيانات ثم التطبيق الخاص بنا من الصفر سنحتاج أولا أن نقوم بدراسة تحليلية ,هذه الدراسة ستحدد لنا كل ما يوجد في هذا النظام من معلومات

ومن أين نأخذ المعلومات ?

من الجهات المعنية فإذا كنت اريد محاكاة نظام حجز المواعيد عند االطبيب فنحن بحاجة أن نسألهم عن آلية عملهم ونأخذ منهم كل المعلومات اللازمة ثم نبدأ بخطوة التحليل وهي إيجاد العلاقة بين هذه المعلومات.
هنا يأتي دور MERISE METHOD الذي يعتمد على على فصل المعلومات(data) عن المعالجة (traitements) فهو يحتوي على مجموعة من المراحل وفي كل مرحلة سنحدد الModel الذي نعتمد عليه يوجد نوعين من Models اساسين سنعتمد عليهما هما :
  1. (CDM(conceptual data model : كما يوحي اسمه فهذه المرحلة الاولية , تعتبر اساسية ونقوم بها اثناء التحليل وهو غير قابل للتنفيذ not implementable اي انه لايعتبر database بل المخطط فقط.
  2. lDM : logical data model :وهذا يعتبر implementable ويمكن اخذه واستعماله ك database مباشرة,يعتبر استنتاجي فبتطبيق مجموعة من القواعد البسيطة يمكن الانتقال من CDM إلى lDM.


CDM
يعرف كذلك ب( Entity-Relationship Diagram (ERD
طيب دعونا من الاسم نستخرج المعنى :
مامعني Entity : هو كل كيان مستقل في النظام الخاص بنا وركزوا على كلمة مستقل .
ناخذ مثال :

لماذا اعتبرت هذين الاثنينEntity ? يوجد العديد من الزبائن وكلهم بببيانات ومعلومات مختلقة وهم مستقلين فكل شخص يمتلك بيانات مختلفة عن الآخر
بالنسبة للمعلومات التي اود ان احتفظ بها لجميع المشترية نفسها اليس كذلك ?

هذا يعتبر prototype الذي سنقوم فيما بعد بانشاء جميع clients وفقا له :

AD_4nXdZ2u43lQEbBMCulL8U1AJwAxM_kzSxvLMqfMrmeBBAlRXE51TIQAuhjLSr8rRHAtyfsXlce4iBx6f4NqsjfDSofUfAGLwgEpF-nXgjamh7VP-HPRLwzitPIvKlwkEdwkNHrZNxlFYUb5PFuixzYden3o5u
طيب الان جاء مشتري بنفس الاسم واللقب وهذا وارد جدا (شخصيا انا في العائلة امتلك نفس الاسم واللقب مع شخص آخر 😂 )

AD_4nXe1hKTsrlGdJ0010-NGcaEVpulOL4X-B3gh5r3VECisK1viSNT14cvx2OK_fss51DEUOBJJ7Nc_jfFU5EIhrbcJGlhS67G2IkJFLyXjdYoFlX7Lgd5oYxVNybOXqLLLVQ-zhGv6ewy1JloSY2Nx9EtGnaKv

وأين المشكل ?


ألم ننشئ الفاتورة على أساس بيانات المشتري ? الاختلاف الوحيد بين client1 و client 3 هو رقم الهاتف ولا يمكننا الاعتماد على رقم الهاتف في تحديد الاختلاف بين client 1 و client 3 لماذا? لانه ببساطة رقم الهاتف عرضة لأن يتم تغييره في اي وقت ,ممكن ان يقوم كل منهما بتغير رقم هاتفه عد فترة .

AD_4nXfywmh4XiVkubgL16rgCm09ZhHKW8g5muJB6bElOIFqLn-CdNZ2ZsVKh0aV1XPjycU94d1mvrxYRQDBItDAsyhz6lRdPapnjTdjNZT2HFIoo0F49UYpB9NdZLKeSQyph6E_FYxHQLmcHDPzxPUzbBNWt_M
طيب من Mina صاحب الرقم 799-55-897 هل هو نفسه Mina الاول ? صاحب الرقم 987-457-123 ? ومن Mina صاحب الرقم 891-987-129 هل هو نفسه Mina صاحب الرقم 478-897-597 ?

-طيب ماهته المعلومات المتداخلة ومن هم هولاء المشترية 😂بأرقام الهواتف الجديدة ? في هذه النقطة حرفيا لايمكننا التفريق بينهم ولا يمكننا معرفة من هم هؤلاء بالضبط
الان سنظطر ان نضيف معلومة منها نستطيع التفريق بين المشترية ? هل نضيف تاريخ الميلاد ?
AD_4nXeiGGUAUcQS8hT03p0n3zxMbD_5rZQj7cwtonfhZCriGZTjYBIUPcrAEo1hDgfKnv4gYy9-Tg7QFzADELvK3y217sK0EFepf9Gk_eypG1SJ1HvqnADGCm0AhRlYRNgVnGs-xPLnWU3FjM_NGtOnnyoA_RF2
بهذه الطريقة نستطيع ان نفرق بينهم ? لا والله مازلنا سنقع في نفس المشكل هل توجد احتمالية ان يكون لهم نفس الاسم ونفس اللقب ونفس تاريخ الميلاد ? اذا كانت توجد احتمالية
0.000000000001% ان تتحق , حتى وان كانت جد ضئيلة في عالم الحاسوب لا يمكننا اعتمادها.
الان حتى نستطيع معرفة كل زبون يجب ان تتوفر لدينا المعلومات التالية الاسم اللقب رقم الميلاد ,مذا لو نضيف معلومة واحد فقط بها يمكننا معرفة كل مشتري ?
وهذا مايعرف بال ( identifiant )ID يعتبر رقم التعريف وهو وحيد(يمكننا الضمان بانه وحيد) ونعبر عنه بالشكل التالي

AD_4nXdqJZOVASc0UsUDGJlfoMQlHTEj_dg9NaXhYL6zrABt2UqkDubk6m5xbpoy1kIXkT8dfpBu4zmfSqml3g4zVbSrzAbPHpS_tyQuBt73zOqnC0kT0pdG8_t1MBSF23c8pf-Q7eyirzFSksIBFhcBIU7_SEY
( أي كلمة تحتها خط تعتبر id بدون الحاجة لذكر كلمة id )
الان مهما غيرنا في رقم الهاتف يمكننا دائما معرفة من هو الشخص بالضبط عن طريق id لانه وحيد ولا يتغير

ملاحظة كلمة وحيد لا تعني انه يتشكل من عنصر واحد بل قيمته وحيدة ,يمكننا من المثال السابق أخذ
الاسم +اللقب +الهاتف+ رقم الميلاد +العنوان كرقم تعريف لكنها ليست عملية, ينصح ألا يتجاوز 3 إلى 4 عناصر


اذا ماذا نقصد بوحيد ? كي نفهم اكثر client هي عبارة عن table و تحتوي على اعمدة وصفوف الاعمدة هي table attributes مذا نقصد بال atributes ? هم عناصر table باختصار ومذا يوجد في الصفوف هيا client1 ,client2 ,client3…..

AD_4nXcxHMaUOCj-O91uVsoFjA9TSwvrVg4e9RdOLc3o8VfvXXQJal9Z-Q92WOEUnNvhyHmymIyO072ty6IiTsA9TLG6rUEfoUDMNCydo3Z2-9zZaPH4auj5iFjHXFPdnxrp41N0Pu3QJgi31kQzf-9MRAXjtHRS

هل يجب ان نعرف شي بخصوص atributes ?


نعم كل atribute يعتبر atomic بننتقل الان إلى علوم الذرة ام ماذا?😂
لا لا صبرا بس ,هنا كلمة atomic تعبر على ان كلatribute لا يمكن ان يحمل اكثر من قيمة ( يحمل قيمة واحدة فقط).
اذا كان الشخص يمتلك رقمين هاتف لايمكننا تسجيل الا قيمة واحدة في phone يمكن تصوره variable يحمل قيمة واحدة واذا اردت تغييرقيمتها ستظطر ان نقوم ب overwrite وبالتالي سنفقد القيمة السابقة .


الان مذا نقصد بكلمة وحيد ?
AD_4nXdPS3ppn1dy0LIlqF2UWkQbGeMr8erOJnQpLJ48rIU_YnSTDxxrug55tdttGHNM_pbN0GtRKWPyAnjDCbFnJo7QOlvwoHOKV1YmkOcBtFNaBZqJmDqH-Qr4JCoBHIRrmbJlEF1UaD8H6Ydf2rRLPGhzIrJ9






AD_4nXeb1mCOABY4UYC7vH5y45_Yp1I-YSVz3Lwfl3OypK_ZhfhUWZbOlcJ_lm-jYvbnA5a4RVrgqm6QizRdheqeZMStVCDDSMumztij3VcqkbsA_vQ_Fan9CZvj9Un2SEZ1QZLpVLB3g_UCpH1xl-vfOAZiUfzI
بعد ان اخترنا id هو firstname+lastname يجب على هذه القيمة الا تتكرر ولا تهمنا اي قيمة عداها إن تكررت ام لا .


الان المصطلح Relationship يعني العلاقة ,العلاقة بين مذا ومذا ?
العلاقة بين Entity وEntity(او اكثر ),الم نقل ان كل عملية بيع ناجحة ننشئ منها فاتورة اذا العلاقة بين client و الفاتورة انه يمتلك هذه الفاتورة
AD_4nXcMvLERdW3v7X8sDuex5k0bfuVtPHGa3dDS41Gi6GuJJh7Alb2sci243M5C6QNWMlMR4SGRZrn4mgvV2UdDfF2Xh06L4In0uMkDpQoTk2BoBtByjR2q13CspoDqFuMWoVKYnZ79YZqbp4vVlwN31UsyHBY

-ال client يمتلك فاتورة (اتجاه القراءة من client table نحو invoice table)
-الفاتورة تنتمي لل client ( اتجاه القراءة من invoice table نحو client table )

ماهي العلاقة الحقيقية بينهما اذا كبرناالصورة شوي
AD_4nXeBhu2eQvCPIdZSDniBUdNc_M6lvNLKk8WScco2x1ZTIlx6p_1t2RMjoNlehNCAXcdjY_Rw8L0S6X1srzJETYk7a_KBt1gAT-DEmL5jS9-W06wZZKQbtCkNPii965--o2_Bnv3EaUtYLL1lFN9DFlUVoLv9





بهته الطريقة قمنا باستخراج cardinalities التي تمثل بثنائية (min-max)
ونطرح السؤال التالي

0هي اول مرة يسجل فيها الزبون وفي هذه اللحظة هو يمتلك 0 فاتورة و N عند قيامه بالشراء أكثر من مرة.


يمكن تلخيصه في المخطط التالي
AD_4nXfaYSvgfFmtsXK6IQyTMmI-1_YrTv8Ydexchv7xrTg-IjVDkfF6MZ2vVpQxn-O_KbY63vJJRxw8c_5RmbA1ALVA-Kg42_X9kHNHAFYwu2x5I5GqltfMjeSSNUeIBBLAi8C2dSlUhbEFThZ7FHgppczzzc0n




مذا يمكننا ان تستنتج من هذا المخطط ?




سنقوم في قادم الدروس بالتعمق اكثر وايجاد العلاقات لاكثر من Entities 2 .


دمتم بخير🦋
ميناا ❤️
يعطيك العافية ويسلّم ايديكِ
 
  • Love
التفاعلات: Mina
السلام عليم جميعا
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما


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

كيف نقوم بانشاء نظام المعلومات الخاص بنا ? ومن أين نبدأ ?


في الاول سنحتاج إلى خطة عمل أو computerization method , وسنختار Merise Method
إذا كنا سنقوم بإنشاء نظام معلومات من ثم قاعدة بيانات ثم التطبيق الخاص بنا من الصفر سنحتاج أولا أن نقوم بدراسة تحليلية ,هذه الدراسة ستحدد لنا كل ما يوجد في هذا النظام من معلومات

ومن أين نأخذ المعلومات ?

من الجهات المعنية فإذا كنت اريد محاكاة نظام حجز المواعيد عند االطبيب فنحن بحاجة أن نسألهم عن آلية عملهم ونأخذ منهم كل المعلومات اللازمة ثم نبدأ بخطوة التحليل وهي إيجاد العلاقة بين هذه المعلومات.
هنا يأتي دور MERISE METHOD الذي يعتمد على على فصل المعلومات(data) عن المعالجة (traitements) فهو يحتوي على مجموعة من المراحل وفي كل مرحلة سنحدد الModel الذي نعتمد عليه يوجد نوعين من Models اساسين سنعتمد عليهما هما :
  1. (CDM(conceptual data model : كما يوحي اسمه فهذه المرحلة الاولية , تعتبر اساسية ونقوم بها اثناء التحليل وهو غير قابل للتنفيذ not implementable اي انه لايعتبر database بل المخطط فقط.
  2. lDM : logical data model :وهذا يعتبر implementable ويمكن اخذه واستعماله ك database مباشرة,يعتبر استنتاجي فبتطبيق مجموعة من القواعد البسيطة يمكن الانتقال من CDM إلى lDM.


CDM
يعرف كذلك ب( Entity-Relationship Diagram (ERD
طيب دعونا من الاسم نستخرج المعنى :
مامعني Entity : هو كل كيان مستقل في النظام الخاص بنا وركزوا على كلمة مستقل .
ناخذ مثال :

لماذا اعتبرت هذين الاثنينEntity ? يوجد العديد من الزبائن وكلهم بببيانات ومعلومات مختلقة وهم مستقلين فكل شخص يمتلك بيانات مختلفة عن الآخر
بالنسبة للمعلومات التي اود ان احتفظ بها لجميع المشترية نفسها اليس كذلك ?

هذا يعتبر prototype الذي سنقوم فيما بعد بانشاء جميع clients وفقا له :

AD_4nXdZ2u43lQEbBMCulL8U1AJwAxM_kzSxvLMqfMrmeBBAlRXE51TIQAuhjLSr8rRHAtyfsXlce4iBx6f4NqsjfDSofUfAGLwgEpF-nXgjamh7VP-HPRLwzitPIvKlwkEdwkNHrZNxlFYUb5PFuixzYden3o5u
طيب الان جاء مشتري بنفس الاسم واللقب وهذا وارد جدا (شخصيا انا في العائلة امتلك نفس الاسم واللقب مع شخص آخر 😂 )

AD_4nXe1hKTsrlGdJ0010-NGcaEVpulOL4X-B3gh5r3VECisK1viSNT14cvx2OK_fss51DEUOBJJ7Nc_jfFU5EIhrbcJGlhS67G2IkJFLyXjdYoFlX7Lgd5oYxVNybOXqLLLVQ-zhGv6ewy1JloSY2Nx9EtGnaKv

وأين المشكل ?


ألم ننشئ الفاتورة على أساس بيانات المشتري ? الاختلاف الوحيد بين client1 و client 3 هو رقم الهاتف ولا يمكننا الاعتماد على رقم الهاتف في تحديد الاختلاف بين client 1 و client 3 لماذا? لانه ببساطة رقم الهاتف عرضة لأن يتم تغييره في اي وقت ,ممكن ان يقوم كل منهما بتغير رقم هاتفه عد فترة .

AD_4nXfywmh4XiVkubgL16rgCm09ZhHKW8g5muJB6bElOIFqLn-CdNZ2ZsVKh0aV1XPjycU94d1mvrxYRQDBItDAsyhz6lRdPapnjTdjNZT2HFIoo0F49UYpB9NdZLKeSQyph6E_FYxHQLmcHDPzxPUzbBNWt_M
طيب من Mina صاحب الرقم 799-55-897 هل هو نفسه Mina الاول ? صاحب الرقم 987-457-123 ? ومن Mina صاحب الرقم 891-987-129 هل هو نفسه Mina صاحب الرقم 478-897-597 ?

-طيب ماهته المعلومات المتداخلة ومن هم هولاء المشترية 😂بأرقام الهواتف الجديدة ? في هذه النقطة حرفيا لايمكننا التفريق بينهم ولا يمكننا معرفة من هم هؤلاء بالضبط
الان سنظطر ان نضيف معلومة منها نستطيع التفريق بين المشترية ? هل نضيف تاريخ الميلاد ?
AD_4nXeiGGUAUcQS8hT03p0n3zxMbD_5rZQj7cwtonfhZCriGZTjYBIUPcrAEo1hDgfKnv4gYy9-Tg7QFzADELvK3y217sK0EFepf9Gk_eypG1SJ1HvqnADGCm0AhRlYRNgVnGs-xPLnWU3FjM_NGtOnnyoA_RF2
بهذه الطريقة نستطيع ان نفرق بينهم ? لا والله مازلنا سنقع في نفس المشكل هل توجد احتمالية ان يكون لهم نفس الاسم ونفس اللقب ونفس تاريخ الميلاد ? اذا كانت توجد احتمالية
0.000000000001% ان تتحق , حتى وان كانت جد ضئيلة في عالم الحاسوب لا يمكننا اعتمادها.
الان حتى نستطيع معرفة كل زبون يجب ان تتوفر لدينا المعلومات التالية الاسم اللقب رقم الميلاد ,مذا لو نضيف معلومة واحد فقط بها يمكننا معرفة كل مشتري ?
وهذا مايعرف بال ( identifiant )ID يعتبر رقم التعريف وهو وحيد(يمكننا الضمان بانه وحيد) ونعبر عنه بالشكل التالي

AD_4nXdqJZOVASc0UsUDGJlfoMQlHTEj_dg9NaXhYL6zrABt2UqkDubk6m5xbpoy1kIXkT8dfpBu4zmfSqml3g4zVbSrzAbPHpS_tyQuBt73zOqnC0kT0pdG8_t1MBSF23c8pf-Q7eyirzFSksIBFhcBIU7_SEY
( أي كلمة تحتها خط تعتبر id بدون الحاجة لذكر كلمة id )
الان مهما غيرنا في رقم الهاتف يمكننا دائما معرفة من هو الشخص بالضبط عن طريق id لانه وحيد ولا يتغير


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

كرقم تعريف لكنها ليست عملية, ينصح ألا يتجاوز 3 إلى 4 عناصر



اذا ماذا نقصد بوحيد ? كي نفهم اكثر client هي عبارة عن table و تحتوي على اعمدة وصفوف الاعمدة هي table attributes مذا نقصد بال atributes ? هم عناصر table باختصار ومذا يوجد في الصفوف هيا client1 ,client2 ,client3…..

AD_4nXcxHMaUOCj-O91uVsoFjA9TSwvrVg4e9RdOLc3o8VfvXXQJal9Z-Q92WOEUnNvhyHmymIyO072ty6IiTsA9TLG6rUEfoUDMNCydo3Z2-9zZaPH4auj5iFjHXFPdnxrp41N0Pu3QJgi31kQzf-9MRAXjtHRS

هل يجب ان نعرف شي بخصوص atributes ?


نعم كل atribute يعتبر atomic بننتقل الان إلى علوم الذرة ام ماذا?😂
لا لا صبرا بس ,هنا كلمة atomic تعبر على ان كلatribute لا يمكن ان يحمل اكثر من قيمة ( يحمل قيمة واحدة فقط).
اذا كان الشخص يمتلك رقمين هاتف لايمكننا تسجيل الا قيمة واحدة في phone يمكن تصوره variable يحمل قيمة واحدة واذا اردت تغييرقيمتها ستظطر ان نقوم ب overwrite وبالتالي سنفقد القيمة السابقة .


الان مذا نقصد بكلمة وحيد ?
AD_4nXdPS3ppn1dy0LIlqF2UWkQbGeMr8erOJnQpLJ48rIU_YnSTDxxrug55tdttGHNM_pbN0GtRKWPyAnjDCbFnJo7QOlvwoHOKV1YmkOcBtFNaBZqJmDqH-Qr4JCoBHIRrmbJlEF1UaD8H6Ydf2rRLPGhzIrJ9






AD_4nXeb1mCOABY4UYC7vH5y45_Yp1I-YSVz3Lwfl3OypK_ZhfhUWZbOlcJ_lm-jYvbnA5a4RVrgqm6QizRdheqeZMStVCDDSMumztij3VcqkbsA_vQ_Fan9CZvj9Un2SEZ1QZLpVLB3g_UCpH1xl-vfOAZiUfzI
بعد ان اخترنا id هو firstname+lastname يجب على هذه القيمة الا تتكرر ولا تهمنا اي قيمة عداها إن تكررت ام لا .


الان المصطلح Relationship يعني العلاقة ,العلاقة بين مذا ومذا ?
العلاقة بين Entity وEntity(او اكثر ),الم نقل ان كل عملية بيع ناجحة ننشئ منها فاتورة اذا العلاقة بين client و الفاتورة انه يمتلك هذه الفاتورة
AD_4nXcMvLERdW3v7X8sDuex5k0bfuVtPHGa3dDS41Gi6GuJJh7Alb2sci243M5C6QNWMlMR4SGRZrn4mgvV2UdDfF2Xh06L4In0uMkDpQoTk2BoBtByjR2q13CspoDqFuMWoVKYnZ79YZqbp4vVlwN31UsyHBY

-ال client يمتلك فاتورة (اتجاه القراءة من client table نحو invoice table)
-الفاتورة تنتمي لل client ( اتجاه القراءة من invoice table نحو client table )

ماهي العلاقة الحقيقية بينهما اذا كبرناالصورة شوي
AD_4nXeBhu2eQvCPIdZSDniBUdNc_M6lvNLKk8WScco2x1ZTIlx6p_1t2RMjoNlehNCAXcdjY_Rw8L0S6X1srzJETYk7a_KBt1gAT-DEmL5jS9-W06wZZKQbtCkNPii965--o2_Bnv3EaUtYLL1lFN9DFlUVoLv9





بهته الطريقة قمنا باستخراج cardinalities التي تمثل بثنائية (min-max)
ونطرح السؤال التالي

0هي اول مرة يسجل فيها الزبون وفي هذه اللحظة هو يمتلك 0 فاتورة و N عند قيامه بالشراء أكثر من مرة.


يمكن تلخيصه في المخطط التالي
AD_4nXfaYSvgfFmtsXK6IQyTMmI-1_YrTv8Ydexchv7xrTg-IjVDkfF6MZ2vVpQxn-O_KbY63vJJRxw8c_5RmbA1ALVA-Kg42_X9kHNHAFYwu2x5I5GqltfMjeSSNUeIBBLAi8C2dSlUhbEFThZ7FHgppczzzc0n




مذا يمكننا ان تستنتج من هذا المخطط ?




سنقوم في قادم الدروس بالتعمق اكثر وايجاد العلاقات لاكثر من Entities 2 .


دمتم بخير🦋
ما شاء الله
يعطيكِ ألف عافية مينا❤️
 
  • Love
التفاعلات: Mina
السلام عليم جميعا
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما


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

كيف نقوم بانشاء نظام المعلومات الخاص بنا ? ومن أين نبدأ ?


في الاول سنحتاج إلى خطة عمل أو computerization method , وسنختار Merise Method
إذا كنا سنقوم بإنشاء نظام معلومات من ثم قاعدة بيانات ثم التطبيق الخاص بنا من الصفر سنحتاج أولا أن نقوم بدراسة تحليلية ,هذه الدراسة ستحدد لنا كل ما يوجد في هذا النظام من معلومات

ومن أين نأخذ المعلومات ?

من الجهات المعنية فإذا كنت اريد محاكاة نظام حجز المواعيد عند االطبيب فنحن بحاجة أن نسألهم عن آلية عملهم ونأخذ منهم كل المعلومات اللازمة ثم نبدأ بخطوة التحليل وهي إيجاد العلاقة بين هذه المعلومات.
هنا يأتي دور MERISE METHOD الذي يعتمد على على فصل المعلومات(data) عن المعالجة (traitements) فهو يحتوي على مجموعة من المراحل وفي كل مرحلة سنحدد الModel الذي نعتمد عليه يوجد نوعين من Models اساسين سنعتمد عليهما هما :
  1. (CDM(conceptual data model : كما يوحي اسمه فهذه المرحلة الاولية , تعتبر اساسية ونقوم بها اثناء التحليل وهو غير قابل للتنفيذ not implementable اي انه لايعتبر database بل المخطط فقط.
  2. lDM : logical data model :وهذا يعتبر implementable ويمكن اخذه واستعماله ك database مباشرة,يعتبر استنتاجي فبتطبيق مجموعة من القواعد البسيطة يمكن الانتقال من CDM إلى lDM.


CDM
يعرف كذلك ب( Entity-Relationship Diagram (ERD
طيب دعونا من الاسم نستخرج المعنى :
مامعني Entity : هو كل كيان مستقل في النظام الخاص بنا وركزوا على كلمة مستقل .
ناخذ مثال :

لماذا اعتبرت هذين الاثنينEntity ? يوجد العديد من الزبائن وكلهم بببيانات ومعلومات مختلقة وهم مستقلين فكل شخص يمتلك بيانات مختلفة عن الآخر
بالنسبة للمعلومات التي اود ان احتفظ بها لجميع المشترية نفسها اليس كذلك ?

هذا يعتبر prototype الذي سنقوم فيما بعد بانشاء جميع clients وفقا له :

AD_4nXdZ2u43lQEbBMCulL8U1AJwAxM_kzSxvLMqfMrmeBBAlRXE51TIQAuhjLSr8rRHAtyfsXlce4iBx6f4NqsjfDSofUfAGLwgEpF-nXgjamh7VP-HPRLwzitPIvKlwkEdwkNHrZNxlFYUb5PFuixzYden3o5u
طيب الان جاء مشتري بنفس الاسم واللقب وهذا وارد جدا (شخصيا انا في العائلة امتلك نفس الاسم واللقب مع شخص آخر 😂 )

AD_4nXe1hKTsrlGdJ0010-NGcaEVpulOL4X-B3gh5r3VECisK1viSNT14cvx2OK_fss51DEUOBJJ7Nc_jfFU5EIhrbcJGlhS67G2IkJFLyXjdYoFlX7Lgd5oYxVNybOXqLLLVQ-zhGv6ewy1JloSY2Nx9EtGnaKv

وأين المشكل ?


ألم ننشئ الفاتورة على أساس بيانات المشتري ? الاختلاف الوحيد بين client1 و client 3 هو رقم الهاتف ولا يمكننا الاعتماد على رقم الهاتف في تحديد الاختلاف بين client 1 و client 3 لماذا? لانه ببساطة رقم الهاتف عرضة لأن يتم تغييره في اي وقت ,ممكن ان يقوم كل منهما بتغير رقم هاتفه عد فترة .

AD_4nXfywmh4XiVkubgL16rgCm09ZhHKW8g5muJB6bElOIFqLn-CdNZ2ZsVKh0aV1XPjycU94d1mvrxYRQDBItDAsyhz6lRdPapnjTdjNZT2HFIoo0F49UYpB9NdZLKeSQyph6E_FYxHQLmcHDPzxPUzbBNWt_M
طيب من Mina صاحب الرقم 799-55-897 هل هو نفسه Mina الاول ? صاحب الرقم 987-457-123 ? ومن Mina صاحب الرقم 891-987-129 هل هو نفسه Mina صاحب الرقم 478-897-597 ?

-طيب ماهته المعلومات المتداخلة ومن هم هولاء المشترية 😂بأرقام الهواتف الجديدة ? في هذه النقطة حرفيا لايمكننا التفريق بينهم ولا يمكننا معرفة من هم هؤلاء بالضبط
الان سنظطر ان نضيف معلومة منها نستطيع التفريق بين المشترية ? هل نضيف تاريخ الميلاد ?
AD_4nXeiGGUAUcQS8hT03p0n3zxMbD_5rZQj7cwtonfhZCriGZTjYBIUPcrAEo1hDgfKnv4gYy9-Tg7QFzADELvK3y217sK0EFepf9Gk_eypG1SJ1HvqnADGCm0AhRlYRNgVnGs-xPLnWU3FjM_NGtOnnyoA_RF2
بهذه الطريقة نستطيع ان نفرق بينهم ? لا والله مازلنا سنقع في نفس المشكل هل توجد احتمالية ان يكون لهم نفس الاسم ونفس اللقب ونفس تاريخ الميلاد ? اذا كانت توجد احتمالية
0.000000000001% ان تتحق , حتى وان كانت جد ضئيلة في عالم الحاسوب لا يمكننا اعتمادها.
الان حتى نستطيع معرفة كل زبون يجب ان تتوفر لدينا المعلومات التالية الاسم اللقب رقم الميلاد ,مذا لو نضيف معلومة واحد فقط بها يمكننا معرفة كل مشتري ?
وهذا مايعرف بال ( identifiant )ID يعتبر رقم التعريف وهو وحيد(يمكننا الضمان بانه وحيد) ونعبر عنه بالشكل التالي

AD_4nXdqJZOVASc0UsUDGJlfoMQlHTEj_dg9NaXhYL6zrABt2UqkDubk6m5xbpoy1kIXkT8dfpBu4zmfSqml3g4zVbSrzAbPHpS_tyQuBt73zOqnC0kT0pdG8_t1MBSF23c8pf-Q7eyirzFSksIBFhcBIU7_SEY
( أي كلمة تحتها خط تعتبر id بدون الحاجة لذكر كلمة id )
الان مهما غيرنا في رقم الهاتف يمكننا دائما معرفة من هو الشخص بالضبط عن طريق id لانه وحيد ولا يتغير


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

كرقم تعريف لكنها ليست عملية, ينصح ألا يتجاوز 3 إلى 4 عناصر



اذا ماذا نقصد بوحيد ? كي نفهم اكثر client هي عبارة عن table و تحتوي على اعمدة وصفوف الاعمدة هي table attributes مذا نقصد بال atributes ? هم عناصر table باختصار ومذا يوجد في الصفوف هيا client1 ,client2 ,client3…..

AD_4nXcxHMaUOCj-O91uVsoFjA9TSwvrVg4e9RdOLc3o8VfvXXQJal9Z-Q92WOEUnNvhyHmymIyO072ty6IiTsA9TLG6rUEfoUDMNCydo3Z2-9zZaPH4auj5iFjHXFPdnxrp41N0Pu3QJgi31kQzf-9MRAXjtHRS

هل يجب ان نعرف شي بخصوص atributes ?


نعم كل atribute يعتبر atomic بننتقل الان إلى علوم الذرة ام ماذا?😂
لا لا صبرا بس ,هنا كلمة atomic تعبر على ان كلatribute لا يمكن ان يحمل اكثر من قيمة ( يحمل قيمة واحدة فقط).
اذا كان الشخص يمتلك رقمين هاتف لايمكننا تسجيل الا قيمة واحدة في phone يمكن تصوره variable يحمل قيمة واحدة واذا اردت تغييرقيمتها ستظطر ان نقوم ب overwrite وبالتالي سنفقد القيمة السابقة .


الان مذا نقصد بكلمة وحيد ?
AD_4nXdPS3ppn1dy0LIlqF2UWkQbGeMr8erOJnQpLJ48rIU_YnSTDxxrug55tdttGHNM_pbN0GtRKWPyAnjDCbFnJo7QOlvwoHOKV1YmkOcBtFNaBZqJmDqH-Qr4JCoBHIRrmbJlEF1UaD8H6Ydf2rRLPGhzIrJ9






AD_4nXeb1mCOABY4UYC7vH5y45_Yp1I-YSVz3Lwfl3OypK_ZhfhUWZbOlcJ_lm-jYvbnA5a4RVrgqm6QizRdheqeZMStVCDDSMumztij3VcqkbsA_vQ_Fan9CZvj9Un2SEZ1QZLpVLB3g_UCpH1xl-vfOAZiUfzI
بعد ان اخترنا id هو firstname+lastname يجب على هذه القيمة الا تتكرر ولا تهمنا اي قيمة عداها إن تكررت ام لا .


الان المصطلح Relationship يعني العلاقة ,العلاقة بين مذا ومذا ?
العلاقة بين Entity وEntity(او اكثر ),الم نقل ان كل عملية بيع ناجحة ننشئ منها فاتورة اذا العلاقة بين client و الفاتورة انه يمتلك هذه الفاتورة
AD_4nXcMvLERdW3v7X8sDuex5k0bfuVtPHGa3dDS41Gi6GuJJh7Alb2sci243M5C6QNWMlMR4SGRZrn4mgvV2UdDfF2Xh06L4In0uMkDpQoTk2BoBtByjR2q13CspoDqFuMWoVKYnZ79YZqbp4vVlwN31UsyHBY

-ال client يمتلك فاتورة (اتجاه القراءة من client table نحو invoice table)
-الفاتورة تنتمي لل client ( اتجاه القراءة من invoice table نحو client table )

ماهي العلاقة الحقيقية بينهما اذا كبرناالصورة شوي
AD_4nXeBhu2eQvCPIdZSDniBUdNc_M6lvNLKk8WScco2x1ZTIlx6p_1t2RMjoNlehNCAXcdjY_Rw8L0S6X1srzJETYk7a_KBt1gAT-DEmL5jS9-W06wZZKQbtCkNPii965--o2_Bnv3EaUtYLL1lFN9DFlUVoLv9





بهته الطريقة قمنا باستخراج cardinalities التي تمثل بثنائية (min-max)
ونطرح السؤال التالي

0هي اول مرة يسجل فيها الزبون وفي هذه اللحظة هو يمتلك 0 فاتورة و N عند قيامه بالشراء أكثر من مرة.


يمكن تلخيصه في المخطط التالي
AD_4nXfaYSvgfFmtsXK6IQyTMmI-1_YrTv8Ydexchv7xrTg-IjVDkfF6MZ2vVpQxn-O_KbY63vJJRxw8c_5RmbA1ALVA-Kg42_X9kHNHAFYwu2x5I5GqltfMjeSSNUeIBBLAi8C2dSlUhbEFThZ7FHgppczzzc0n




مذا يمكننا ان تستنتج من هذا المخطط ?




سنقوم في قادم الدروس بالتعمق اكثر وايجاد العلاقات لاكثر من Entities 2 .


دمتم بخير🦋
بارك الله فيك ورفع امتنا بعلمك ومكانتك عند الله وعند عباده الصالحين
 
  • Love
التفاعلات: Mina
بارك الله فيك بش مهندسة وجزاك الله كل خير
ننتظر جديدك دائماً
 
  • Love
التفاعلات: Mina

آخر المشاركات

عودة
أعلى