• 0
InternetMaster

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

سؤال

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

  • 0

والله انت اللي تستاهل تحياتي

اعانك الله

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

يا استاذ ( مدير الانترنت )

0

شارك هذا الرد


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

الاخ InternetMaster

الحقيقة وجودك هنا مكسب لنا جميعاً جعل الله ما تقوم به من جهود في ميزان حسناتك

واطالب مع بقية الاخوة بتثبيت الموضوع لاهميته

وشكرا

0

شارك هذا الرد


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

الاخ العزيز / InternetMaster

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

وكل سنة وانت طيب

0

شارك هذا الرد


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

مرحبا،،،

أعتذر لطول فنجان القهوة لإستقبالي بعض الضييوف، وحقيقة يبدو أن الضيف شعر بأني أهيم في عالم آخر "قواعد البيانات" وما ألذه من عالم !!!

ما زلنا نبحر من السيد CODD في قوانية الخاصة بقواعد البيانات العلاقية:

نفتح في الدفتر صفحة جديدة ونبري قلم رصاص وتعالو بنا نعيد تصميم قاعدة البيانات خطوة خطوة (على الورق طبعا) مع إعتبار لقوانين العالم CODD

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

أريدك عزيزي القارىء الآن أن تركز معي بشدة:

تخيل أن كل جدول من الجداول الثلاثة يحتوي على 500 حقل !!

إتفقنا؟ هذا التخيل في غاية الأهمية حتى نفهم أول القوانين والأسس، لماذا نتخيل هذا؟

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

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

إتفقنا؟

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

في منتصف الصفحة نكتب (تصميم القاعدة على طريقة العلاقات)

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

الجدول الثاني -- جدول الأطباء -- فيه ثلاثة حقول -- إسم الطبيب -- عمر الطبيب -- جنس الطبيب إلخ وينطبق عليه ما جاء في جدول المرضى.

الجدول الثالث -- جدول العيادات -- فيه ثلاثة حقول -- إسم العيادة -- رقم الجناح -- رقم الطابق إلخ وينطبق عليه ما جاء في أعلاه.

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

في أول الصفحة على اليمين أكتب:

جدول المرضى:

إسم المريض

عمر المريض

جنس المريض

جدول الأطباء:

إسم الطبيب

عمر الطبيب

جنس الطبيب

جدول العيادات:

إسم العيادة

رقم الطابق

رقم الجناح

اي قارىء سيقول أن الجداول ينقصها حقول أو معلومات إضافية (ترا أزعل !!) لا تنس الهدف الذي أمامك وهو تماسك القاعدة من خلال إتباع القوانين والأسس وليس جرد للحقول!!

ما الذي فعلناه حتى الآن؟

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

السيد CODD يقول أنه يتوجب أن يكون هناك حقل أساسي يتم من خلاله تمييز كل سجل من سجلات الجدول وهذا الحقل ليس موجود لدينا، لماذا؟

لماذا لا يكون الحقل الأساسي في جدول المرضى هو إسم المريض مثلا؟ من يجيب؟

لماذا لا يكون الحقل الأساسي في جدول الأطباء هو عمر الطبيب مثلا؟ من يجيب؟

السبب لأن أحد قوانين CODD هو منع تكرار المعلومة أكثر من مرة في الحقل الرئيسي، فإذا فرضنا أن في جدول الأطباء حقل عمر الطبيب هو المفتاح الرئيسي فماذا نفعل عندما يوجد في المستوصف اكثر من طبيب في عمر 40 عاماً لا تستطيع حسب قانون الحقل الرئيسي ان تكرر الرقم 40 مرتين لطبيبين مختلفين.

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

لا تستغرب أن تكون قاعدة البيانات التي تقوم بتصميمها بأكثر من لغة -- قد نتحدث عن هذا يوما ما -- موضوع متقدم جدا جدا.

بناء على هذا القانون سنضيف حقلاً جديدا لكل جدول من الجداول الثلاثة السابقة:

رقم المريض

رقم الطبيب

رقم العيادة

صدقوني سأغضب بشدة من أي قارىء متابع معنا يقول لي سأجعل هذا الحقل Auto Number في الآكسس أو Identity في SQL !!!

هذا خطأ فادح جدا جدا جدا، حذار من إستخدام Auto Number في الحقل الرئيسي للجدول، هذا للمراهقين في تصميم قواعد البيانات وليس للمحترفين.. هذا إستخداماته محدودة جدا مسموح بها في الجداول المساعدة Help Tables والتي سنتحدث عنها لاحقا.

ماذا لدينا الآن؟

لدينا ثلاثة جداول فيها عدد صغير من الحقول وفي كل جدول حقل رئيسي أو ما يسمى إصطلاحا المفتاح الرئيسي أو المفتاح الأساسي.

نستكمل بإذن الحق تبارك وتعالى.

تحياتي،،،

1

شارك هذا الرد


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

مرحبا،،،

الآن صفحة جديدة بيضاء (في الدفتر) -- في منتصف الصفحة -- قاعدة بيانات الآباء والأبناء.

دعك من المستوصف الآن.

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

دعنا نتفق ...

عندما أقول برامج قواعد بيانات فأنا أقصد آكسس وSQL وأوراكل وغيرها

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

من يجيبني على السؤال التالي: هل قوانين CODD للبرامج أم للقواعد؟ بمعنى آخر هل هي لشركة ميكروسوفت حتى تعطينا برنامج آكسس جيد أم هذه القوانين لك أنت عند تصميمك لقاعدة البيانات؟

الجواب: للإثنين معاً !!!!!!!!!!!

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

لدينا في هذا التمرين جدولين واحد للأباء والآخر للأبناء:

جدول الآباء:

رقم الأب -- حقل رئيسي

إسم الأب

عمر الأب

جدول الأبناء:

رقم الإبن -- حقل رئيسي

إسم الإبن

عمر الإبن

الآن في صفحة جديدة إرسم جدولا بالمسطرة وقلم الرصاص (رجاء للمرة المليون على الورق) حتى نفهم سويا، وسمه جدول الآباء وأدخل البيانات التالية وهي مرتبة رقم الأب إسم الأب عمر الأب

452 خالد سعيد أحمد 32

567 سمير حسين الأحمدي 63

901 محمد أحمد عبد القادر 36

أجب عن الأسئلة التالية:

ماذا يحدث عند إضافة سجل جديد في جدول الآباء بالبيانات التالية:

871 سمير حسين الأحمدي 63 --- ماذا يحدث؟

901 سامي مطلق الدوسري 51 -- ماذا يحدث؟

من لم يعرف الإجابة أقترح عليه أن يبدأ مرحلة إعادة القراءة مرة أخرى بتركيز أعلى

نجيب فيما بعد بإذن الحق تبارك وتعالى.

تحياتي،،،

0

شارك هذا الرد


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

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

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

عذرا فلم أرى الموضوع لكثرة انشغالي بأمور خاصه .

بارك الله فيك وأجزل لك المثوبه أخي InternetMaster وفعلا اسم على مسمى .

سوف يتم تثبيت الموضوع و يستاهل وسام التميز لهذا الشهر

0

شارك هذا الرد


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

الف مبروك والله ويستاهل وسام التميز

ونشكرك يا مشرفنا الفاضل / فيصل الحربي

على تقديرك لكل جهد يبذل في هذا المنتدى واعطاء كل ذي حق حقه

0

شارك هذا الرد


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

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

0

شارك هذا الرد


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

موضوع رائع

جزاك الله خيراً أخي ونفعنا بعلمك

مع خالص تحياتي

أخوك رضا عقيل

0

شارك هذا الرد


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

مرحبا،،،

ماذا يحدث عند إضافة سجل جديد في جدول الآباء بالبيانات التالية:

871 سمير حسين الأحمدي 63 --- ماذا يحدث؟ لن يحدث شيئا سجل جديد لا غبار عليه حتى وإن تشابه الإسم (وهو خطأ أيضا) لكنه غير مهم حاليا -- لا تنس الهدف وهو تماسك قاعدة البيانات.

901 سامي مطلق الدوسري 51 -- ماذا يحدث؟ هذا يخالف أحد قوانين مخترع قواعد البيانات العلاقية السيد CODD والذي ينص على منع بل إستحالة تكرار المفتاح الأساسي لأكثر من سجل واحد. السؤال البديهي لماذا يمنع من تكرار 901 في سجلين مختلفين؟ أو بعبارة أخرى، لماذا لا نستطيع تكرار بيانات المفتاح الأساسي؟ والآن نبدأ في التركيز مرة أخرى. ملاحظة -- إذا وجدت برنامج قاعدة بيانات (وانا أشك في هذا) يسمح للك بإضافة مثل هذا السجل أو يسمح لك بتكرار رقم الأب 901 فهذا البرنامج لا يمت إلى عائلة برامج قواعد البيانات بأي صلة، لكن إذا استخدمت برنامجا قديما صمم قبل 1970 ميلادية فقطعا سيسمح لك لأن كل برامج قواعد البيانات قبل هذا التاريخ كانت Flat.

يستكمل معي ذووي الأقلام والبريات والذين كتبوا فقط !!!

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

ما هو الهدف من قاعدة بيانات الآباء والأبناء؟

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

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

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

كلام كبير، ما يعني؟ للحصول على الأبناء التابعين لأب ما يتطلب الأمر إنشاء (علاقة) بين الجدولين.

في جدول الآباء الحقول التالية:

رقم الأب -- حقل رئيسي

إسم الأب

عمر الأب

وفي جدولالأبناء يوجد الحقول التالية:

رقم الإبن -- حقل رئيسي

إسم الإبن

عمر الإبن

لنفترض أنه يوجد في جدول الأبناء 8 سجلات، كيف نعرف أن السجل الثالث هو أحد أبناء خالد سعيد أحمد الموجود في سجل الآباء؟؟

نعود ونسأل مستر CODD، بعد تفكير عميق وبضعة فناجين من القهوة يرد علينا هذا العالم ويقول لنا ------ ركززززززززززززززززززززززززززززز --- إستخدم (الحقل الغريب)؟؟؟

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

ممممممممم

الحقل الغريب Foreign Field

ماهو؟

الحقل الغريب هو:

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

لا يمكن أن يكون مفتاحا رئيسيا في الجدول الذي ينشأ فيه

يجب أن يوجد ما يشابهه في جدول آخر

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

وااااو صداع.... تعالوا نبسط هذه الجمل أكثر وبروية وبهداوة ومع فنجان قهوة وبالكتابة وليس القراءة!!

أين المشكلة هل هي في جدول الآباء أم في جدول الأبناء؟

الإستنتاج المنطقي أنها في جدول الأبناء لماذا؟

لأن جدول الأبناء يسمى جدولا غير مستقر لماذا؟ لآنه يحتوي على بينات متماسكة وغير منتمية، ماذا يعني هذا؟ لنفكر قليلا.

في جدول الأبناء 8 سجلات، إذا نظرنا إلى هذا الجدول نرى أنه متماسك ومتناغم ولكن تكمن مشكلته في انه لا يدلنا على من أب هذا وأب هذا.

طالما أن المشكلة في جدول الأبناء إذا الحقل الغريب يجب أن يكون في جدول الأبناء؟

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

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

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

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

هذا الحقل هو رقم الأب من جدول الآباء.

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

نصف موضوع التماسك يدور ويلف حول الحقل الغريب.

أصبح جدول الأبناء كما يلي:

رقم الإبن -- حقل رئيسي

إسم الإبن

عمر الإبن

رقم الأب

لنعد إلى شروط مستر CODD الحقل الغريب يجب أن يكون مطايقا ونسخة مشابهة لتلك الموجودة في الجدول الأساسي، أي لو كان رقم الأب في جدول الآباء عبارة عن 6 خانات وعلى هيئة أرقام فيجب أن يكون كذلك في جدول الأبناء.

لاحظ الآن وبتركيز شديد أنك لو قمت بإضافة 8 سجلات في جدول الأبناء انك ستواجه حقلا غريبا موجودا في جدول الأبناء ويتوجب عليك أن تضع فيه بيانات حيث لا يمكن أن يكون فارغا.

لنركز...

ما هو تعريف المفتاح الرئيسي؟ --- أين المجيبون؟ الووووو

أحد شروط المفتاح الرئيسي هو الآ يكون بدون قيمة صح؟ قلنا هذا سابقا، أي أنه في جدول الآباء لا يوجد أي سجل بدون رقم للأب. إتفقنا.

قانون للسيد CODD:

لا يمكن للحقل الغريب أن يكون فارغاً، من يقول لي لماذا؟

لا يمكن للحقل الغريب أن يكون مفتاحا رئيسيا، من يقول لي لماذا؟

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

وين الصاحيين معي؟؟؟!!! هيا للأجوبة على الأسئلة الثلاثة السابقة:

فرضا تركنا السجل الرابع في جدول الأبناء بدون استكمال الحقل الغريب، ما هي المشكلة؟ المشكلة ان هذا الإبن لن يتم معرفه أباه ومن هنا جاء المنع بترك بيانات الحقل الغريب فارغة، بعبارة أخرى لن يسمح لك بتركه فارغا، لابد من إدخال قيمة ما.

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

السؤال الثالث سخيف؟ لا بد ان تستطيع الإجابة عليه!!! تغيير طول الحقل الغريب عما هو في الجدول الذي أستعير منه سيخلق مئات المشاكل.

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

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

إفتح الآكسس وقم بإنشاء قاعدة بيانات جديدة وسمها Family إتفقنا ساببقا أن كل التسميات باللغة الإنجليزية.

قم بأنشاء جدول إسمه Fathers وبه الحقول التالية:

FatherNum-- Text - 4 -- مفتاح رئيسي من نوع نص وبطول 4 خانات

FatherName-Text

FatherAge--Number

نشط الحقل FatherNum وإجعله Primary Key أي مفتاحا رئيسيا بالضغط على المفتاح بشريط الأدوات، إحفظ الجدول وأغلقه.

قم بأنشاء جدول إسمه Sons وبه الحقول التالية:

SonNum-- Number -- مفتاح رئيسي

SonName-Text

SonAge--Numbe

FatherNum -- Number -- هذا هو الحقل الغريب

نشط الحقل SonNum وإجعله Primary Key أي مفتاحا رئيسيا بالضغط على المفتاح بشريط الأدوات، إحفظ الجدول وأغلقه.

من يقول لي ما هو الخطأ الفادح في تصميم الجدولين السابقيين؟؟؟!!

فكر قبل قراءة الجواب؟؟؟

الجواب هو الحقل الغريب FatherNum في جدول الأبناء نوعه Number بينما في الجدول الذي أستعير منه هو Text بطول 4 خانات وهذا مخالف للأسس والقوانين.

عد مرة أخرى وقم بتعديل الحقل الغريب في جدول الأبناء ليصبح على شكل Text وبطول 4 خانات.

الآن إفتح جدول الأباء وادخل البيانات التالية في السجل الأول:

أدخل الإسم فقط: محمد أحمد عبد الله ثم إنتقل للسجل الثاني، ماذا حدث؟؟ نعم ظهرت رسالة خطأ، ما هي هذه الرسالة ولماذا ظهرت؟ مين يجيب؟؟؟

هذا أحد قوانين المفتاح الرئيسي: لا يمكن للمفتاح الرئيسي أن يكون قيمة فارغة، لابد من وضع قيمة ما فيه.

إسمح السجل الأول وقم بإضافة البيانات التالية:

3000 محمد سعيد أحمد 42

4000 خالد عبد الله الصيعري 61

5000 سعيد محمد المالكي 32

6000 طلال عبد العزيز المسبحي 29

7000 سمير خالد الجار الله 46

أحفظ الجدول.

إفتح جدول لآبناء وأدخل السجل التالي:

9400 خالد 9 -- إترك الحقل الغريب فارغاً

ماذا حدث؟ مين يجيييييييييييييييييب؟؟؟ واااووووووووو لم يحدث شيء، ولكن هذا ينافي قواعد السيد CODD حيث يقول ان هناك شروط:

لا يمكن للحقل الغريب أن يكون فارغا

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

ولكن لم يظهر خطأ، لماذا؟؟

الجواب: لأننا لم نقم حتى تاريخه بإنشاء العلاقة بين الجدولين.

نفعل هذا بعد بضعة دقائق بإذن الحق تبارك وتعالى.

تحياتي،،،

2

شارك هذا الرد


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

مرحبا،،،

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

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

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

وحيث ن الوقت يداهمني حتى 15 أو 20 رمضان سأحاول أن نهي هذه الحلقات بأسرع وقت ممكن دون الإخلال بقيمتها أو محتوياتها.

ماهي المسابقة؟ وأتمنى من القائمين على هذا الموقع المساعدة في تنظيمها ووضع الشروط المناسبة لها.

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

الجائزة هي واحدة لمشارك وأخرى لمشاركة:

حجز نطاق بإسم الفائز والفائزة حسب اختيارهم (ولا يكون محجوزا قبلهم)

إستضافة النطاق والموقع على الخادم الرئيسي الخاص بشركتي في الولايات المتحدة لمدة سنتين

سعة تخزينية للموقع 350 ميجا بايت

عدد غير محدود من قواعد البيانات Access بطاقة تخزينية من ضمن 350 ميجا بايت

عدد غير محدود من قواعد البيانات MySQL بطاقة تخزينية من ضمن 350 ميجا بايت

سعة تخزينية بطاقة 50 ميجا بايت لخادم قواعد بيانات Microsoft SQL 2000

المساعدة في إنشاء الموقع مع المساعدة بكيفية ربطه بالآكسس وال SQL

منتدي مشابه لهذا المنتدى طبعا لأية مواضيع أخرى يختارها الفائز والفائزة

عدد غير محدود من صناديق البريد الإلكتروني

قائمتين للتحكم واحدة بالمنتدى والأخرى بالخادم

المساعدة في تصميم الموقع (بدون إخلال بالدين والتقاليد والعادات والأعراف والقوانين)

الخادم من النوع المتقدم جدا أي انه يتقبل كل تطبيقات CGI, FrontPage, Visual Interdev, Visual .Net وما الى ذلك.

الكثير من الخدمات الأخرى على الخادم

كل ما سبق (مجــــــــــــــــــــــــــــــــــــــــــــــانا) لأفضل تصميم من رجل وأفضل تصميم من إمرأة. ولكن لمدة سنتين فقط. بعد إنقضاء السنتين يقفل الموقع ويلغى كل شيء إلا إذا إرتأى صاحب الجائزة الإكمال بسعر 275 ريال شهريا. بإختصار فإن كل جائزة عينية تصل قيمتها إلى 275 × 24 شهر اي 6600 ريال سعودي أي أن الجائزتين بقيمة 13200 ريال سعودي.

ليس هذا فقط، بل أن الفائز والفائزة سأتيح لهم المشاركة من منازلهم في واحد من أضخم مشاريع قواعد البيانات في المملكة العربية السعودية، بل يمكنهم المشاركة في أية مشاريع لدينا ونتفق معهم على التكاليف المدفوعة لهم مقابل عملهم.

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

يمكن تصميم القاعدة إما بالآكسس أو SQL 2000

الآن ولإحقاق الحق وخشية أن يبدأ الهواة بالإتصال بمحترفي قواعد البيانات ليقوموا بتصميمها نيابة عنهم فأقول:

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

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

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

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

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

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

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

كافة المشاركات في المسابقة ترسل إلى [email protected] ولا توضع هنا وسأقوم بمشيئة الله بإدراج إسمي الفائز والفائزة هنا.

آمل من الأخوة المتابعين معنا وكذلك القائمين على هذا الموقع تنبيهي لأية شروط أخرى لهذه المسابقة وبالذات كيفية منع المحترفين من المشاركة والضغط عليهم لترك الفرصة للآخرين التائهين، وكذلك منع المبتدئين والتائهين من إستخدام محترفين ليصممو لهم القاعدة.

أسئلة المسابقة والتصميم في الحلقة القادمة بمشيئة الله.

اللهم لا علم لا إلا ما علمتنا -- سبحانك يا خالق الذرة والخلية.

والله من وراء القصد.

تحياتي،،،

2

شارك هذا الرد


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

عزيزي ..

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

إذا كنت أنا لا أجيد اللغة الإنجليزية فهل يمكن أن أستخدم أي حروف إنجليزية حتى ولو كنت لا أعرف معناها لتسمية القاعدة والجداول والحقول والاستعلام أم لا بد أن تكون المسميات معروفة ؟؟؟

وتقبل الله منا ومنكم صالح الأعمال

0

شارك هذا الرد


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

مرحبا،،،

لا يشترط أن تكون الأسماء معروفة ولن يحبذ جدا لأن العملية مع مرور الوقت تتفاقم في التعقيد خذ مثال أنني وأنت قمنا بتصميم قاعدة بيانات وأسماء الجداول فيها A,B,C,... وهكذا.

ماذا يحدث عندما تصبح قاعدة البيانات فيها 150 جدول؟

كيف نفرق بين الجداول واحد أسمه A30 والآخر T09 والحقول فيها G8 و U9 العملية ستتعقد بشكل كبير جدا.

ما هو الحل لمن لديه عوائق في اللغة الإنجليزية؟

الحل هو من 3 خطوات:

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

الثانية: إحصل على قاموس عربي-إنجليزي وليس العكس بحيث تبعث في القاموس بإستخدام الحروف العربية للحصول على المعاني باللغة الإنجليزية.

الثالثة: إستخدم Microsoft Word الوورد الذي يأتي مع الأوفيس تحت قائمة الأدوات إختر اللغة ثم الترجمة، يمكنك إختيار الترجمة من اللغة العربية للإنجليزية ، بعد هذا إكتب كلمة (أب) مثلا ستحصل على ترجمتها Father، إفتح صفحة جديدة في الدفتر وأكتب الكلمة 10 أو 15 مرة وأحفظها عن ظهر قلب.

إذا فعلت هذا يوميا مع 10 كلمات فقط، في نهاية الشهر سيكون لديك ما يقارب 300 كلمة إنجليزية........... صدقني في اللغة الإنجليزية وللإستخدامات المتعددة جدا لن تحتاج لأكثر من 1500 كلمة -- لغة ضحلة جدا أي أنه في بضعة شهور سيكون لديك مجموعة ضخمة من الكلمات الإنجليزية التي تكفيك لكل إحتياجات البرمجة والتصميم بل صدقني ستكون بعدها قادرا على قراءة الكثير من الصفحات باللغة الإنجليزية.

تحياتي،،،

0

شارك هذا الرد


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

السلام عليكم

اخي الكريم الجائزه هي اعطائنا الدورس الاساسيه لقواعد البيانات

وها انت تمطر علينا بما انعم الله عليك من علم وفوق ذلك ترصد

جائزه ضخمه .

وحتى الان انا لم استغني عن القرطاس والقلم الا بعد درسك الاخير

والسماح باستخدام الاكسس

والدعوات التي تنتظرها فهي اعظم واجل وهي الدعوه لك في ظهر الغيب

دون ان تدري .

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

الصالح والعلم النافع والولد الصالح .

ولا املك الا ان ادعو لك دعوه صادقه في ظهر الغيب .

تم تعديل بواسطه alhajri
0

شارك هذا الرد


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

مرحبا،،

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

نعود إلى الآباء والأبناء، وتعالو سويا نكتشف بعض ملذات قواعد البيانات.

نلخص أولأ.

كل جدول في قاعدة البيانات وحدة مستقلة بذاتها وفيها حقل مميز يسمى المفتاح الأساسي أو الرئيسي وقد فعلنا هذا في الجدولين الأباء والأبناء وخصصنا كلا من حقل رقم الأب وحقل رقم الإبن كحقلين لمفتاحين أساسيين.

للمرة المليون: ما هو المفتح الأساسي؟

هو حقل يميز كل سجل في قاعدة البيانات ويمنع تكرار البيانات فيه لأكثر من سجل واحد ولا يسمح أن يكون فارغا.

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

ثم تحدثا عن الحقل الغريب. ما هو الحقل الغريب؟

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

نعود إلى الجزئية التي شرحناها سابقا وهي لماذا أخذنا الحقل الغريب من جدول الآباء ووضعناه في جدول الأبناء وليس العكس؟ من يقول لي ماذا يحدث لو عكسنا أي أخذنا رقم الإبن من جدول الأبناء ووضعناه (كسلفة) وكحقل غريب في جدول الآباء؟ من يجيب؟ ماهي المشكلة في أن نعكس؟

للإجابة نعود للمشكلة الأساسية --- ركز -- فكر معي -- هل يمكن أن يكون لإبن أكثر من أب واحد؟ الإجابة لا. إذا أول إستنتاج هو أنه لا يوجد لأي أبن أكثر من أب واحد، ويمكن أن يكون للأب أكثر من إبن أو لا يكون لديه أبناء على الإطلاق.

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

وصلنا أنه يوجد حقل غريب في جدول الأبناء إسمه FatherNum تم إستعارته من جدول الآباء، وقلنا أن أحد شروط قواعد البيانات هو أن الحقل الغريب لا يمكن أن يكون فارغا ومع ذلك عندما قمنا بإضافة السجل:

9400 خالد 9 -- إترك الحقل الغريب فارغاً

إلى جدول الأبناء لم يحدث أية مشاكل لماذا؟ لأن قاعدة البيانات حتى الآن لا تعرف أن هناك علاقة بين الجدولين، السؤال البديهي، كيف ننشىء هذه العلاقة.

قبل أن تستمر إحذف كافة السجلات من جدول الأبناء؟!! أين الأذكياء؟ من يقول لماذا؟

قاعدة عامة: ركز -- إكتب - إحفظ -- تأكد دائما أن الجداول كلها فارغة بدون سجلات قبل أن تقوم بإنشاء العلاقات.

لا تمسح بيانات جدول الآباء حتى وإن كان هذا يعارض القاعدة السابقة !! سنقول فيما بعد لماذا؟

لدينا الآن جدولين جدول الآباء وفيه خمس سجلات لأباء مختلفين، وجدول الأبناء ولا يوجد فيه أية بيانات.

أقفل الجدولين ثم من قائمة Tools (أدوات) إختر Relationships (علاقات).

سيظهر لك صفحة في الخلفية وقائمة فيها أسمي الجدولين :

نشط الجدول الأول واضغط زر إضافة Add

نشط الجدول الثاني واضغط زر إضافة Add

إضغط زر اغلاق أو اقفال Close

كبر الصفحة...

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

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

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

سأعود إليك بعد قليل.

تحياتي،،،

1

شارك هذا الرد


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

مرحبا،،،

ماذا تسمي الأبن الذي فقد أباه -------- صح --- يتيم !!!

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

سنعود لهذه النقطة بشرح مسهب.

أمامك نافذة إسمها (تحرير العلاقات) وتكاد تكون أخطر وأهم نافذة على الإطلاق في برامج قواعد البيانات --- كل البرامج وليس الآكسس فقط.

ماذا نرى في هذه النافذة؟

قائمتين مظللتين لا تستطيع تغيرهما واحدة فيها Fathers أي جدول الآباء والأخرى Sons أي جدول الأبناء --- تحتهما مباشرة قائمة إذا ضغت عليها ترى سرد لكافة حقول كل جدول.

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

فقط اكتب الجملة دون تنشيط للمربع ثم أضغط على زر إنشاء أو موافق.

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

أقفل صفحة العلاقات وأجب بنعم اذا طلب منك الحفظ.

افتح جدول الأبناء وادخل البيانات التالية:

9500 خالد 12 --- إترك الحقل الغريب فارغا وانتقل لسجل جديد -- ماذا حدث؟

لم يحدث شيء !!!!!!!!!! --- لماذا؟؟

الآن أدخل السجل التالي:

7500 سعيد 10 -- وفي الحقل الغريب ادخل 1500 ثم انتقل للسجل الثالث

ماذا حدث؟ ظهر خطأ؟؟؟؟؟ لماااااااااااااااااااااااذا؟؟؟؟

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

في المحاولة الثانية حدث خطأ لماذا؟ لأننا أدخلنا قيمة 1500 في الحقل الغريب وهذه القيمة غير موجودة لأي أب في جدول الآباء وهذا ممنوع في الحقول الغريبة، هل تذكر عندما قلنا أن القيمة في الحقل الغريب يجب أن تكون قيمة موجودة في الجدول الذي تم الإستعارة منه؟!!

ارقام الآباء في جدول الآباء هي 3000 4000 5000 6000 7000 فقط، إذا أدخلت في جدول الأبناء أي قيمة غير القيم الخمس السابقة فلن تقبل القيمة --- جرب أية أرقام تريدها إستمر بالمحاولة.... لن تستطيع ولن يتم إدخال السجل إلا بقيمة من الخمس المذكورة، لماذا؟ لسبب بسيط جدا أنه هذه هي الطريقة التي يتعرف بها البرنامج على الآباء، فإذا أردت معرفة أب خالد تأخذ الرقم من الحقل الغريب وتذهب إلى جدول الآباء وهناك تبحث بهذا الرقم عن صاحبه للحصول على الأب.

والعكس صحيح اذا اردنا أن نعرف من هم ابناء اي اب نبحث عن كافة الابناء الذين يحملون رقم الاب في الحقل الغريب.

تحياتي،،،

0

شارك هذا الرد


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

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

لي سؤال أيها الأستاذ الكريم:

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

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

أسأل الله العلي القدير أن يوفقك و يثبت خطاك.

1

شارك هذا الرد


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

basmallah.gif

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

أشكرك كثيرا على هذه الدروس

بارك الله فيك وفي علمك و جعل عملك هذا خالصا لوجهه الكريم .

أبارك لك اللقب الجديد ( خبير قواعد البيانات ) فألف ألف مبروك وتستاهل أكثر من ذلك

اللهم أغفر لأخينا InternetMaster في هذا الشهر الكريم .

تم تعديل بواسطه فيصل الحربي
0

شارك هذا الرد


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

ما شاء الله عليك أستاذنا الخبير InternetMaster

لست أدري من أي جهاتك أثني عليك ..

أمن روعة أسلوبك ..

أم من تشويقك العذب ..

أم من المنهجية الرائعة في عرض الوضوع والتنظيم الدقيق ..

أم من الاجتهاد ..

أم من طلب الأجر والمثوبة ..

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

أستاذي الكريم .. لدي ملاحظة .. وهي :

عند إدخال القيمة 1500 في المفتاح الغريب في جدول الآبناء لم يحدث خطأ لدي .. وذلك لأننا لم نفرض التكامل المرجعي في العلاقة بينهما ..

اللهم وفق عبدك InternetMaster لما تحب وترضى حتى الممات

0

شارك هذا الرد


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

اللهم ببركة هذا الشهر العظيم الكريم .. وبأسمائك الحسنى وصفاتك العلى

اللهم أجعله من ورثة جنة النعيم .. اللهم زده من عطاياك وفقهه فيما لا يعلم

اللهم أجزل ثواب من علم الناس فيما لا يعلمون وأغدق عليه موفور الحسنات

اللهم ثبت قلبه على حب الخير وأبعد قلبه وعلمه عن الرياء وأبعده عن عين الحساد

اللهم لا تحرمنا أجره و لاتحرمنا علمه وحرم جسده عن النيران

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

يارب العالمين

اللهم آمين .. اللهم آمين

أخي في الله هكذا هي قلوبنا وأكفنا نرفعها لله داعين توفيقك وسدادك

قولوا معي آمين ،

0

شارك هذا الرد


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

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

وصلي أللهم على سيدنا وحبيبنا محمد وعلى آله وصحبه وسلم.

0

شارك هذا الرد


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

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

جزاك الله خيرا أخي العزيز على ما تقدمه لنا من كنوز لا تقدر بثمن ...

نسأل الله أن يجزيك خير الجزاء .. وأن ينفع بعلمك وعملك .. بارك الله فيك ..

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

وفقك الله ...

0

شارك هذا الرد


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

مرحبا،،،

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

وتعالو بنا أيضا نجيب على الأسئلة التي تركناها...

قم عزيزي القارىء بحذف كافة السجلات الموجودة في جدول الأبناء

قم بإختيار أدوات (Tools) ومن ثم علاقات (Relationships) ثم إضغط على الخط الواصل بين الجدولين ثم اضغط زر Delete على لوحة المفاتيح ثم وافق على الإلغاء.

لقد قمت بحذف العلاقة بين الجدولين -- سنقوم بإنشائها مرة أخرى بعد قليل.

تركنا سؤالا في غاية الأهمية ... لماذا قمنا بإستعارة المفتاح الأساسي من جدول الآباء ووضعناه في جدول الأبناء كحقل غريب؟ لماذا لم نفعل العكس؟

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

قم بحذف الحقل الغريب FatherNum من جدول الأبناء، قم بإضافة حقل غريب في جدول الآباء وهو SonNum تأكد أن الحقل SonNum في كلا الجدولين هو نص Text بطول 3 خانات.

افتح جدول الآباء وتعال معي نضيف طفلين لهذا الأب:

9000 أحمد مبارك الحربي 42

لاحظ أن الحقل الغريب الآن هو رقم الإبن --- لنفترض أن معلومات الطفلين هي

888 سعيد 7

777 طارق 9

بمعنى أنه سنضع في الحقل الغريب الرقم 888 لإضافة الطفل الأول إلى الأب أحمد ولا مشكلة في هذا-- قم بوضع 888 لإستكمال إدخال بيانات اول طفل لأحمد

نريد إضافة الإبن الثاني !!!!!!!!! ووووووووووووووو -- بدأت المشاكل صح؟

مشاكل بالكيلو لا عد لها ولا حساب:

أولها نسف كل قوانين CODD وكل أسس قواعد البيانات العلاقية، انت الآن مضطر إلى تكرار بيانات وهذا ممنوع لأن أحد قوانين CODD هو عدم إخال نفس البيانات أكثر من مرة واحدة، ليس هذا فقط

بل لن تستطيع عمل هذا على الإطلاق من يجيب لماذا؟

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

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

إترك السجل 9000 في جدول الآباء مع ابنه 888 وألغي ادخال 777 بالضغط على ESC في لوحة المفاتيح.

إذا ....

إستعارة الحقل من جدول الأبناء خطأ...

قم بحذف الحقل SonNum من جدول الآباء، قم بإضافة حقل غريب في جدول الأبناء FatherNum وتأكد انه نص Text بطول 4 خانات.

اضغط أدوات Tools ثم علاقات Relationships ثم أسحب الحقل FatherNum من جدول الآباء وألقه على FatherNum في جدول الأبناء لنعود إلى نافذة تحرير العلاقات.

واضح أن معظم من معي في هذه الدروس لديهم آكسس بالعربي (وهذا مصيبة أخرى) ولكني سأتجاوزها الآن ونعود إليها فيما بعد !!!!

تأكد أن الحقلين الموجودين هما FatherNum من كلا الجدولين، إن لم يكونا فقم بإختيارهما،، تعالو نتأمل في هذه النافذة (تحرير العلاقات)

يوجد أربعة أزار --- يهمنا الزر نوع الربط Join Type إضغط على هذا الزر وتعال نقرأ ونفهم سويا...

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

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

الإختيار الثالث: أظهر الآباء الذين لديهم أبناء وكذلك الأبناء بدون آباء

مستر CODD عمل لنا زحمة --- صح؟

لا تفقد الهدف، الهدف هو ليس إنشاء قاعدة بيانات !!! الهدف هو كيف نصنع قاعدة بيانات متماسكة ومتكاملة.

إختر الإختيار الأول وخزن وأخرج من نافذة العلاقات.

في جدول الأبناء أضف السجلات التالية:

100 خالد 7 3000

110 محمد 4 3000

120 سعيد 9 4000

130 طارق 12 4000

140 أحمد 5 5000

150 سمير 17 5000

160 فهد 1 5000

170 مشاري 3 9000

180 صالح 9 -- إترك الحقل الغريب فارغا -- هذا يتيم بلغة قواعد البيانات

190 ناصر 11 -- إترك الحقل الغريب فارغا

تعالو بنا نقفز عذة دروس إلى الأمام لتوضيح واحدة من أهم قوانين العلاقات في قواعد البيانات ونعود لمكاننا مرة أخرى

اقفل الجدول وإنتقل إلى الإستعلامات Queries

أنشأ إستعلام جديد بدون إستخدام المعالج --- كل المعالجات في الآكسس للمراهقين والمقلدين وليس للمحترفين !!!

نشط كل جدول على حدة وإضغط إضافة ثم أغلق النافذة.

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

انقر نقرا مزدوجا على الحقول التالية بالترتيب

من جدول الآباء Fathers

FatherNum

FatherName

من جدول الأبناء Sons

SonNum

SonName

FatherNum

الآن ركز --- إنقر نقرا مزدوجا على الخط المرسوم بين الجدولين ستظر لك نافذة عنوانها (خصائص الرابط)

هل ترى الإختيارات الثلاثة --- نعم هي نفسها التي رأيناها في نافذة العلاقات.

الآن جاء دوري للإستمتاع بفنجان القهوة الذي بين يدي وجاء وقتك أن تتعذب وتتألم،

أنا سأستمتع بوقتي وبقهوتي وأنت ستقوم بتنفيذ الإستعلام ثلاث مرات، كل مرة تختار خاصية مختلفة من خصائص الرابط ومن ثم تقول لي ما هي الفروق.

أريدك أن تصرف عدة دقائق على هذا الإستعلام وترى الفروق بين الخصائص

لنعود إلى CODD، الإختيارات أو الخصائص الثلاث السابقة تسمي

Inner Join الربط الداخلي

Left Outer Join الربط الخارجي من اليسار

Right Outer Join الربط الخارجي من اليمين

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

لاحظ أنه يضاف سهم صغير عند تغيير خصائص الرابط--- من يشرح لي معنى هذا السهم؟

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

إفتح الدفتر وسجل بلغتك وبطريقتك كل ما قلناه هنا..

نعود بعد قليل بمشيئة الحق تبارك وتعالى..

تحياتي،،،

1

شارك هذا الرد


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

سبحان الله

اللهم وفق أخانا الى ما تحبه و ترضاه,آمين يا رب العالمين.

0

شارك هذا الرد


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

مرحبا،،،

إذهب إلى صفحة العلاقات من خلال إختيار أدوات Tools ثم علاقات Relationships

إحفظ التعديلات

ثم إنشأ إستعلام جديد بدون إستخدام المعالج -- أضف جدولي الآباء والأبناء، ماذا تلاحظ؟

مع أننا قد قمنا بإلغاء العلاقة تماما ونهائيا ما زال آكسس يضع العلاقة؟ لماذا؟ من يجيب؟

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

أقفل الإستعلام بدون حفظ وعد مرة أخرى لصفحة العلاقات وتعال نتأمل في المزيد.

اسحب مرة أخرى FatherNum من جدول الآباء وأسقطه على FatherNum في جدول الأبناء لفتح صفحة تحرير العلاقات.

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

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

اسمحو لي أن اتجرأ على شركة ميكروسوفت ونلغي سويا التعبير (رأس بأطراف) ونستبدله بجملة (واحد إلى متعدد) وهي أقرب من وجهة نظري إلى الترجمة الحقيقية One to Many

ماذا تعني هذه، أولا تعني أن شكل الرابط بين الجدولين هو (واحد من جدول) و (متعدد من جدول آخر) وهذا هو الوضع لدينا..............

لكل أب واحد لدينا عدة أبناء متعددين

وهذا هو أشهر نوع من انواع العلاقات والروابط بين الجداول وأكثرها إستخداما وأكثرها شيوعا:

لكل عميل في البنك عدة حسابات

لكل طالب في الفصل عدة مواد دراسية

لكل حاسب آلي عدة خصائص مثل الذاكرة والقرص الصلب وغيره

لكل مصحف واحد عدة سور

لكل سورة في القرآن العظيم عدة آيات

وهكذا دواليك...

عند إنشائك لعمارة او فيلا تبدأ بالهيكل الخرساني -- في قواعد البيانات هذا الهيكل هو الجداول في قاعدة البيانات ومجموع الجداول يسمى Skeleton او الهيكل لقاعدة البيانات، وحيث أن الهيكل الخرساني يتميز بالتماسك والتكامل مع بعضه البعض حيث تعمل الأعمدة والأساسات والكمرات مع بعضها البعض لشد المبنى بشكل متماسك كذلك تفعل العلاقات بين الجداول في تماسك وتكامل قاعدة البيانات.

اكثر العلاقات قوة وشدة وتكامل وتماسك هي (واحد إلى متعدد)

جملة (واحد إلى متعدد) تفرض علينا إستنتاج إن هناك علاقات أخرى وهي:

واحد إلى واحد

متعدد إلى متعدد

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

اقوى أنواع العلاقات بالترتيب هو:

واحد إلى متعدد One To Many

واحد إلى واحد One To One

متعدد إلى متعدد Many To Many

أما رأس بأطراف --- هههههههههههههه دعك منها

آمل أن نوع العلاقة واحد إلى متعدد مفهوم، سجل واحد في جدول ما مرتبط بعدة سجلات في جدول آخر، سجل واحد من جدول الآباء يمثل أب واحد مرتبط بعدة (متعدد) أبناء أو سجلات في جدول الأبناء.

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

ماذا يعني هذا؟

يعني أن تغيير تركيبة قواعد البيانات يغير نوع العلاقة (إستنتاجا)

تعالوا نغير تركيبة قواعد البيانات:

اغلق صفحة تحرير العلاقات وصفحة العلاقات

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

افتح جدول الأبناء (بعد حذف السجلات) وقم بتنشيط الحقل الغريب، إجعل الحقل الغريب هو المفتاح الأساسي.

إحفظ التعديلات.

افتح صفحة العلاقات من أدوات ثم علاقات

انقر نقرا مذروجا على خط العلاقة --- أين المجيبون --- ماذا حدث؟

هل ترى نوع العلاقة؟؟؟ طبعا دعك من رأس برأس --- حسب إتفاقنا أصبحت واحد إلى واحد One To One لماذ؟؟

هيا عاد--------------------- أجب من فضلك!!!

الربط الآن يتم بين حقلين كليهما مفتاح أساسي وأحد شروط المفتاح الأساسي هي عدم التكرار وعدم التكرار يعني (واحـــــــــــــــد) فقط، وبالتالي في جدول الآباء لدينا أب واحد وفي جدول الأبناء لا نستطيع التكرار أي إبن واحد أي أن العلاقة أصبحت واحد لواحد أو واحد إلى واحد.

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

واحد إلى واحد هو ثاني أقوى أنواع العلاقات بين الجداول.

تعالو ننسف التصميم ونضرب بعرض الحائط بكل قوانين السيد CODD

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

أذهب إلى العلاقات وانقر بشكل مزدوج على الخط --- ما هو نوع العلاقة الآن؟

غير معرف أو Indeterminate او بالترجمة الفعلية (غير محدد)... ضاع الآكسس ولا يعرف ماذا تريد وأصبحت قاعدة البيانات هشة وقابلة للكسر في أي لحظة.

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

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

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

تحياتي،،،

1

شارك هذا الرد


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

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

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