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

مشاهدة النسخة كاملة : 2- معنى المفاتيح Keys والعلاقات بين جداول قاعدة البيانات (دورة MySql )


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

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



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

اظن انك سمعت من قبل عن المصطلح Primary Key
او المفتاح الرئيسى.

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

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

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

ترى ان الإهتمام الأول والأكبر هو لرقم البطاقة الشخصية.

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

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

لهذا كان اختراع الرقم القومى هو الحل الأمثل لضمان عدم اختلاط الأمور.

الـ Primary Key للجدول هو هويته, او رقم بطاقته الشخصية.

بمعنى انه
1. غير قابل للتكرار
2. لا يمكن تغييره مستقبليا (واذا حدث هذا ينتج عنه اخطاء لا حصر لها).
3. لا يمكن ان يبقة فارغا او به القيمة NULL حيث NULL تعنى بدون قيمة.

كما انه من المستحسن وبشدة (وتذكر هذا جيدا فيما بعد) ان الحقل الذى تجعله هو الـ Primary Key يجب ان يحمل قيم رقمية وليس حروف ولا مسافات ولا اى شئ من هذا القبيل.

لنفترض مثلا لدينا جدول يحتوى على الحقول التالية

•ID او الهوية التى نعرف منها بقية الحقول

•Name الأسم, او اسم الشخص الذى تم اضافته.

•Address او العنوان, واى عدد من الحقول.



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

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

وهذا سبب اخر لجعل حقل الهوية هو وسيلة الوصول لبقية معلومات الحقل.


اتمنى يكون معنى كلمة Primary Key وصل بإذن الله.

ننتقل للمفهوم التالى وهو العلاقات بين الجداول فى قاعدة البيانات.

هناك ثلاث انواع للعلاقات بين الجداول فى قواعد البيانات
وهم

•one-to-one بمعنى واحد-الى-واحد

•one-to-many بمعنى واحد-الى-العديد

•many-to-many بمعنى العديد-الى-العديد



ونشرحهم بالترتيب,

اولا نوع العلاقات one-to-one
تعنى واحد الى واحد, وهى للحالات التى احد حقول الجدل أ (كامثال) ليس له اى علاقة الا بأحد حقول الجدول ب.
كامثال على ذلك, الرقم القومى مثلا, لكل مواطن رقم قومى واحد, وكل رقم قومى لا يتم نسبه الا مواطن واحد, لذلك لا يمكن ان يكون لمواطن اكثر من رقم قومى, ولا يمكن اعطاء اكثر من مواطن نفس الرقم القومى.

ثانيا النوع الأخر وهو one-to-manyبمعنى واحد للعديد.

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

ومثال اخر, البريد الإلكترونى, البريد نفسه لا يمكن الا ان يكون لشخص واحد. لكن الشخص الواحد يمكن ان يكون له اكثر من بريد الكترونى.


النوع الثالث والأخير وهو many to many او العديد للعديد.

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

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


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

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

ولهذا يتم وضع برامج قواعد البيانات مثل الـ MYSQL داخل تصنيف
RDBMS وهذه الحروف اختصار لـ Relation DataBase Management System

اى, نظام ادارة علاقات قواعد البيانات (لست متأكد من الترجمة بنسبة 100% لكن اتمنى ان يكون المعنى وصل)


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

لا اريد ان اطيل عليك اكثر من ذلك.

نتابع بالدرس التالى بإذن الله.


اقرأ ايضا..

•الدرس السابق لمحة بسيطة عن MySql (http://www.abc4web.net/vb/showthread.php?p=58416#post58416)

•الدرس التالى التخطيط لتصميم قاعدة البيانات Database Design (http://www.abc4web.net/vb/showthread.php?t=7594)


من الدعم العربي التطويري

محمود عفيفى
19-03-2010, 05:52 PM
جزاك الله خيراً أخى أبو فيصل على هذا الجهد الكبير

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

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

abohmam
21-03-2010, 10:32 PM
بارك الله فيك أخى ابا فيصل

دروس رائعة ومفيدة جدا

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

ابو عبد النور
05-02-2011, 05:50 PM
جزاك الله خيرا.