المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : 3-التخطيط لتصميم قاعدة البيانات Database Design (دورة MySql )


رائد ابو فيصل
19-03-2010, 05:56 PM
بسم الله الرحمن الرحيم

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

فى الدرس السابق كان هناك ثلاث نقاط تم التركيز عليهم.

•المفاتيح الرئيسية Primary Keys

•العلاقات بين الجداول Relationships

•المفاتيح الدخيلة Foreign Key


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

والمحاكاة مع التصميمات الواقعية لقواعد البيانات.

دعونا نخطط سويا لبناء قاعدة بيانات منتدى بسيط.

ماهى الأشياء الأساسية بكل منتدى؟

هم خمسة اشياء.


1.اعضاء

2.تصنيفات للأقسام

3.منتديات توضع داخل التصنيفات

4.مواضيع

5.تعليقات على المواضيع

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

الأن بعد ان عرفنا متطلبات سكريبت المنتدى.

اصبح لدينا خلفية بسيطة عن احتياجتنا.

لنفصل بيانات هذه القاعدة.

ويأتى التفصيل بالشكل التالى

•الأعضاء

يأتى تحتها

◦اسم المستخدم

◦بريد المستخدم

◦تاريخ التسجيل

◦عنوان الأى بى

•التصنيفات

يأتى تحتها

◦اسم التصنيف (كالمنتديات العامة, المنتديات الرياضية, الخ)

◦ترتيب عرض هذا التصنيف (ترتيب التصنيف من حيث الظهور, هل سيظهر كا اول تصنيف, ام ثانى تصنيف, الخ)


•الأقسام (قسم الألعاب, قسم البرامج, الخ)

يأتى من تحتها

◦اسم القسم

◦ترتيب العرض

•المواضيع

يأتى من تحتها

◦عنوان الموضوع

◦محتوى الموضوع

◦اسم كاتب الموضوع

◦تاريخ كتابة الموضوع

•التعليقات على المواضيع

يأتى من تحتها

◦كاتب التعليق

◦محتوى التعليق



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

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

مثلا بين التصنيفات والأقسام. اظنك تتفق معى ان بالمنتديات

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

تصنيف يسمى "لغات البرمجة" وتصنيف اخر يسمى "الإنترنت والكمبيوتر"

وانشأنا قسمين, "قسم الـ Php" وقسم "الألعاب"


بالطبع انت تعلم ان قسم الـ php سيكون تحت تصنيف لغات البرمجة, وقسم الألعاب تحت تصنيف الإنترنت والكمبيوتر.

لكن فى التصميم اعلاه كيف سنحدد هذا؟

دعنى اهمس فى اذنك, اجابة هذا السؤال فيما شرحناه بالدرس السابق.
بإستخدام الـ Primary keys والـ Foreign Keys والعلاقات بين الجداول.

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


•الأعضاء

يأتى تحتها

◦هوية العضو الـ ID (تكون Primary Key, يعنى غير قابلة للتكرار, او التعديل فيما بعد, ولا يمكن ان تكون فارغة)

◦اسم المستخدم

◦بريد المستخدم

◦تاريخ التسجيل

◦عنوان الأى بى


•التصنيفات

يأتى تحتها

◦هوية التصنيف ID

◦اسم التصنيف (كالمنتديات العامة, المنتديات الرياضية, الخ)

◦ترتيب عرض هذا التصنيف (ترتيب التصنيف من حيث الظهور, هل سيظهر كا اول تصنيف, ام ثانى تصنيف, الخ)


•الأقسام (قسم الألعاب, قسم البرامج, الخ)

يأتى من تحتها

◦هوية القسم يعنى الـ ID لهذا القسم

◦اسم القسم

◦ترتيب العرض

◦هوية تصنيف هذا القسم يعنى الـ ID الخاصة بتصنيف هذا القسم!


(لاحظ هنا ان العلاقة بين الأقسام والتصنيفات هى one-to-many, حيث انه يمكن ان يكون هناك اكثر من قسم داخل التصنيف, لكن لكل قسم تصنيف واحد فقط, وهذا الـ id هنا يكون هو الـ Foreign Key اتمنى تكون الصورة واضحة )



•المواضيع

يأتى من تحتها

◦هوية الموضوع ID (وايضا ستكون Primary Key )

◦عنوان الموضوع

◦محتوى الموضوع. لن نضع فى هذا الحقل محتوى الموضوع, لكن سنضع به الـ ID الخاصة بالمحتوى داخل جدول التعليقات, ويصبح هذا الحقل, هو هوية الحقل الذى به محتوى الموضوع من جدول التعليقات)

◦اسم كاتب الموضوع - بدلا من اسم كاتب الموضوع سنستخدم هوية كاتب الموضوع, وعن طريقها نصل لإسمه.

◦القسم الذى تم اضافة الموضوع به يعنى الـ ID الخاصة بهذا القسم.
(لاحظ هنا ايضا ان العلاقة بين المواضيع والأقسام هو ايضا one-to-many
حيث يمكن للقسم ان يكون به اكثر من موضوع, لكن الموضوع لايمكن ان يكون بأكثر من قسم)

◦تاريخ كتابة الموضوع


•التعليقات على المواضيع

يأتى من تحتها

◦هوية التعليق الـ ID

◦هوية الموضوع التابع له هذا التعليق.

◦كاتب التعليق - بدلا من هذا نستخدم هوية كاتب الموضوع.

◦محتوى التعليق





اتمنى تكون نقاط هذا الدرس واضحة وايضا تكون وضحت ماسبق وتم شرحه.

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

تمنياتى بكل توفيق بإذن الله.


اقرأ ايضا..

•الدرس السابق معنى المفاتيح Keys والعلاقات بين جداول قاعدة البيانات (http://www.abc4web.net/vb/showthread.php?p=58418#post58418)

•الدرس التالى انواع الحقول فى قواعد البيانات Database data types (http://www.abc4web.net/vb/showthread.php?t=7596)


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

أبو يوسف
19-03-2010, 06:18 PM
بارك الله فيك أخي أبو فيصل

وجزاك الله خيرا على حسن إنتقاء مواضيعك

ابو زكريا
19-03-2010, 08:09 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية

abohmam
23-03-2010, 07:51 PM
بارك الله فيك أخى أبا فيصل

لك التحية والشكر