القائمة الرئيسية

الصفحات

العلاقة Relationships One To Many فى SQL Server


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


نكمل سلسلة دروس العلاقات بعد الانتهاء من المقال الاول SQL Server Relationships One To One

سنتكلم عن النوع الثانى من العلاقات  One To Many
  
مثل الدرس السابق نفتح (ssms) SQL Server Management Studio و نستخدم نفس قاعدة البيانات السابقة TestDb  ، سنقوم بعمل جدولين آخرين الاول لمنتجات سوبر ماركت والاخر لفاتورة البيع . وهذا المثال الانسب للعلاقة One To Many حيث ان يمكن لأى شخص ان يشترى أكثر من صنف من محل أو سوبر ماركت .

ننشئ الجدول الاول أسمه TblProducts للمنتجات و الثانى اسمه TblInvoices لفاتورة البيع .
مثل جداول صورة عنوان الدرس
الجدول الاول : { Id = int } &   { ProductName = nvarchar(50) }   
الجدول الثانى : { Id = int } & {ProductId = int } & { Price = decimal(18,2)

ملاحظة : حقل decimal يكون افتراضى (18,0) فقت بتغيره لـ 2 ليحفظ السعر تلقائى بهذا الشكل 10.00

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

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


نفتح جدول TblInvoices فى وضع Design ونضغط من شريط الادوات على إضافة علاقة Relationships ثم  Add ثم Tables And Columns Specification لعمل العلاقة كما فى الصورة


ملاحظة هامة ::
وسيكون شكل العلاقة مثل صورة عنوان الدرس من ناحية جدول المنتجات مفتاح وناحية جدول الفواتير علامة Infinity عكس علاقة الدرس الاول مفتاح لكل من الطرفين 
 ايضا Id جدول يكون المنتجات يحفظ فى جدول الفواتير لاسباب كثير اهما اذا قام مستخدم البرنامج بتغير اسم المنتج فلن يوثر على عمل البرنامج ولا البحث لانه يحفظ رقم المنتج Id فيتغير اسمه فى كل الفواتير تلقائى ولا يؤثر بإى شكل فى عملية البحث او حركة الصنف ... الخ
ايضا معظمنا يستفيد من حقل Id فاتورة المبيعات كأنه رقم الفاتورة .


الان نجرب ادخال مجموعة من المنتجات فى الجدول الاول
وادخال Id اصناف فى الجدول الثانى مع السعر سنجد انه لن يحفظ اى Id منتج او صنف غير مسجل فى جدول المنتجات ، كما ان تغير اسم المنتج فى جدول المنتجات  لا يؤثر على Id المحفوظ فى جدول الفواتير


سوف نشرح أن شاء الله دروس للربط بين الجداول ولغة C#

نتمنى ان يلقى الدرس رضاكم وننتظر تعليقاتكم .





تعليقات