استثمر للحياة

برمجة و تصميم و تطوير المواقع

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

حجم الخط

Relationship  استثمر للحياةالمفاتيح و العلاقات في قواعد البيانات

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

 

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

المفتاح الأساسي للجدولPrimary Key  :


نعلم أن  الجدول يتألف من صفوف / سجلات  Records و أعمدة / حقول و المفتاح الأساسي للجدولPrimary Key هو عمود / حقل يكون متميزاً فى محتواه بحيث  يكون مُحدِداً لكل صف في الجدول , توجد به قيمة فريدة تميز كل صف عن الصف الآخر . مثلا رقم مسلسل لا يتكرر أي الترقيم التلقائي . فى الجدول نجد المفتاح الأساسي هو الحقل ( العميل id  )

 


المفتاح الثانوي :


هو عبارة عن حقل  أو  حقول  تستخدم في الاستعلام و البحث عن البيانات ,  فمثلا لو كان لدينا جدول يحتوي علي قائمة بالعملاء فالمفتاح الرئيسي هو رقم العميل ولكن إذا أردنا أن نسترجع رقم هاتف عميل معين ( فمن يستطيع حفظ أرقام العملاء كلهم  ! ) ففي هذه الحالة يتم استخدام حقل "اسم العميل " في عملية البحث وليس رقم العميل ومن هنا يقال عن ( اسم العميل ) مفتاح ثانوي .
 

المفتاح الخارجي  Foreign Key :


هو أن يوجد لدينا جدولين مثل جدول العملاء و   جدول الطلبيات  فيتم الربط بينهما عن طريق وضع عمود في أحدهما " جدول الطلبيات  " هذا العمود له نفس اسم عمود المفتاح الأساسي في الجدول الآخر " جدول العملاء " و له نفس نوع البياناتData Type و نفس الصفاتAttributes و الترتيب لا يهم . هذا العمود نسميه مفتاح خارجي  بحيث يصبح هذا العمود هو صلة الوصل بين الجدول الأول و الجدول الثاني .  فإذا تخيلنا وجود جدول آخر لطلبيات العملاء


الصورة توضح أن طلب  id هو المفتاح الاساسي لجدول الطلبيات بينما العميل id  هو المفتاح الخارجي


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

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

 

 العلاقات بين الجداول  Relationship 


العلاقة الأولى: هي علاقة واحد لواحد ( One To One )

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

نستطيع القول بأن العميل /  امام صاحب الـ id  رقم 1  يسكن فى القاهرة ... بينما العميل / وجدي   صاحب الـ id  رقم 2  يسكن فى الاسكندرية و العميل /  عادل  صاحب الـ id  رقم 3  يسكن فى طنطا ... و هكذا .
هذه هي العلاقة واحد لواحد .. كل عميل له عنوان واحد فقط و كل عنوان يمثل عميل واحد فقط . هذه العلاقة
بسيطة جداً , و كان يمكن وضع حقل  العنوان فى جدول العملاء  هكذا


لهذا قليلاً ما تستخدم هذه العلاقة الا فى حالة تقليل عدد الحقول فى الجداول الكبيرة .
 
العلاقة الثانية: هي علاقة  واحد إلى متعدد   ( One To Many)

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


العميل الواحد يستطيع أن يطلب أكثر من طلب .... و رغم هذا فإن أي طلب لا يذهب إلا لعميل واحد .
الصورة توضح أن العميل /  عادل  صاحب الـ id  رقم 3 هو صاحب الفاتورة رقم 1005 بمبلغ 150 جنيه .
العميل /  وجدي   صاحب الـ id  رقم 2 هو صاحب الفاتورتين رقم 1006 بمبلغ 177  جنيه  و 1008 بمبلغ 60جنيه .
العميل /  انور   صاحب الـ id  رقم 4 هو صاحب الفاتورة رقم 1007 بمبلغ 215 جنيه .
كما توضح أن العميل /  امام   صاحب الـ id  رقم 1 لم يشتري شيئاً  .
 

العلاقة الثالثة: علاقة متعدد لمتعدد    ( Many To Many )

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

نفرض أن المطعم يريد تحديد صنف الطعام داخل الفاتورة يعني اللى اشنرى ده اشترى سمك و لا فراخ و الا أيه ؟! هذا جدول الاصناف و سعرها


لكي نربط العميل بأصناف الطعام علينا أن نضع حقل العميل id  كمفتاح خارجي فى جدول الاصناف . الصورة توضح الامر

الصورة توضح أن
العميل رقم 4 و هو "أنور"  قام بعمل طلب رقم 2 طالباً صنف رقم 2 دجاج / فحم , ثم قام بعمل طلب رقم 4 طالباً صنف رقم 4 سمك .
بينما العميل رقم 3 و هو "عادل"  قام بعمل طلب رقم 2 طالباً صنف رقم 3 لحوم  , ثم قام بعمل طلب رقم 3 طالباً صنف رقم 4 سمك أيضاً .

 



مصطلحات خاصة بالعلاقات


القيمةNull : في قواعد البيانات العلائقية سنتعرض لكثير من القيمةnull و هي تعني اللاقيمة أي لا شيء و هي بالطبع تختلف عن الصفرZero فهو قيمة, و لكن المهم الآن أن تعرف أنNull معناها لا قيمة.

 الفهارسIndexes : الفهرس في قواعد البيانات كالفهرس المعروف للكتب و يؤدي نفس وظيفته ففي الكتاب يساعدنا الفهرس على سرعة الانتقال إلى موضوع معين في الكتاب , و كذلك الأمر في قواعد البيانات فالفهارس تساعدنا على سرعة الانتقال الحصول على معلومات لاستعلام ما .

 


 

الموضوع  :  *المفاتيح و العلاقات في قواعد البيانات* المرجع : استثمر للحياة  investolife 

اعلان تجاري
اعلان 468