لغات برمجة

العلاقات في قواعد البيانات

مفهوم – العلاقات في قواعد البيانات :

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

العلاقه المسماه بي 1:1 او واحد لواحد ( One : One )

لنأخذ مثال على هذه العلاقه , تخيل ان لدينا متجر , وفي هذا المتجر يوجد عامل واحد فقط, فالعلاقه تكون ان الموظف ينتمي الى متجر واحد و المتجر يحوي على موظف واحد فقط لاحظ الصوره التاليه:

العلاقه المسماه بي M:1 او واحد لكثير ( Many : One )

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

العلاقه المسماه بي N:M او كثير لكثير ( Many : Many )

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

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

طرق ربط العلاقات في قواعد البيانات :

كل جدول نقوم بإنشاءه يجب ان نجعل له ما يسمى المفاتح الرئيسي ( PRIMARY KEY ) وهذا المفتاح لا يتم تكراره في الجدول , حيث ان كل مستخدم لديه رقم رئيسي نعرفه به , ونحدد به اسمه ومعلوماته الاخرى ولكي نقوم بربطه في علاقة , في الجدول المربوط به نجعل هذه القيمه على شكل مفتاح اجنبي ( FOREIGN KEY ) لاحظ معي الصوره التاليه

لاحظ ان العمود CustomerID في جدول CUSTOMERS هو مفتاح رئيسي ولا يمكن تكراره , ولكنه في جدول ORDERS على شكل ( FOREIGN KEY ) ويمكن تكراره , لان عدة طلبات يمكن عملها عن طريق مستخدم واحد , ولكن كل طلب مربوط بمستخدم واحد فقط.

تصميم قاعدة بيانات:

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *