الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

انواع الربط بين علاقة واحد الى متعدد

بدأه سلامنا لكم في 21 ديسمبر 2012 · 7 رد · 4,523 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

مشرفون واعضاء

يوجد ثلاث انواع للربط لعلاقة واحد لمتعدد

والصور التالية توضح ذلك

السؤال الذي يطرح نفسه

ماهو الاختلاف بين الثلاث انواع من الربط

وخصوصا نتائج العرض للجدولين المرتبطين واحد ولاارى شئ مختلف

الا هناك شئ غائب عني

الصور ظاهرة في مشاركة لنفس الموضوع

واسف لتكرار المشاركة لحصول خطأ فني

post-252239-012190900 1356087519_thumb.j

post-252239-016225600 1356087532_thumb.j

post-252239-055700800 1356087544_thumb.j

المرفقات
r11.JPGr22.JPGr33.JPG

تم تعديل هذه المشاركة بواسطة سلامنا لكم في 21 ديسمبر 2012 في 14:06

#2

اخي الفاضل : سلامنا لكم

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

بما انك تطرقت الى هذا الموضوع لغرض الفهم والإستفادة فدعنا نلقي بعض الضوء على هذه العلاقة ( واحد الى متعدد ) او ( رأس بأطراف ) او ( واحد الى كثير ) فكل هذه المسميات هي واحده .

طبعا كما تعلم ويعلم الجميع انه لا يمكن انشاء علاقة واحد الى متعدد إلا بوجود شروط معينه بين جدولين

1. الشرط الأول ان يكون في الجدول الأول مفتاح اساسي ( فريد ) و ( مفهرس ) و ( غير قابل للتكرار ) و ( إما ان يكون رقمي او نصي )

2. الشرط الثاني يكون في الجدول الثاني مفتاح خارجي مطابق تماما لنوع المفتاح الأساسي ( نوع المطابقة هنا إما رقمي او نصي ) فلا يمكن ربط مفتاح رقمي بمتاح نصي ولن يقبل محرك قواعد البيانات JET 4 بذلك .

عندما تتحقق الشروط اعلاه فهنا يمكننا القيام بعملية الربط بين الجدولين لينتج لنا علاقة ( واحد الى متعدد )

واحد جهة المفتاح الأساسي في الجدول الأول ومتعدد جهة المفتاح الخارجي في الجدول الثاني .

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

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

انواع الصلات في علاقة ( واحد الى متعدد )

1. الصلة الداخليه ( افتراضية ) وهي تضمين الصفوف فقط حيث الحقول المتصلة من كلا الجدولين تكون متساوية.

اي ان الصفوف في الجدول الأيسر تطابق تماما الصفوف في الجدول الأيمن

2. الصلة الخارجية اليسرى وهي تضمين كافة السجلات من "الجدول الأيسر " و"الجدول الأيمن" حيث تكون الحقول المتصلة متساوية.

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

3. الصلة الخارجية اليمنى وهي تضمين كافة السجلات من الجدولين "الجدول الأيمن" و"الجدول الأيسر" حيث تكون الحقول المتصلة متساوية.

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

قد لا تلاحظ اي فروقات بينها وتعتقد انها كلها متساوية او نفس بعضها البعض ولكن اقول لك لا والف لا

ولكي تتأكد من ذلك قم بعمل التالي :

1. قم بإنشاء استعلام مبني على الجدولين بينهما علاقة واحد الى متعدد

ستجد ان جميع السجلات ظاهر امامك كامله .

2. اذهب الى الجدول الفرعي وقم بمسح الرقم 20 من الحقل BOOKNo من سجلات زهره وايضا قم بمسح الرقم 40 من ( سجلات المبدع ) ودع بقية الحقول كما هي

3. الصلة لا زالت هي الإفتراضية ( صلة داخليه ) افتح الإستعلام وانظر النتيجة

تلاحظ ان السجلين الذين مسحنا ارقامهما من الجدول قد اختفت ولم تعد ظاهره مع ان السجلات موجوده ولم يتم مسحها

هنا اقول لك ان العلاقة مع هذه الصلة تظهر فقط السجلات المتطابقة بين الجدولين اي انها لا تقوم بعرض السجلات الفارغة

جميل جدا

4. قم بتغيير نوع الصلة الى صلة خارجية يسار ( اي اجعل السهم يشير الى المفتاح الخارجي في الجدول الثاني ) كما في الصوره الخاصة بك رقم ( 2 )

5. الآن قم بتشغيل الإستعلام ماذا تلاحظ !!!

تلاحظ انه قام بعرض كافة السجلات عدى التي غير مطابقة اي التي لا تحمل مفتاح خارجي في الجدول الثاني

جميل جدا

6. قم بتغيير نوع الصلة الى صلة خارجية يمين ( اي اجعل السهم يشير الى المفتاح الأساسي في الجدول الأول) كما في الصوره الخاصة بك رقم ( 3 )

7. الآن قم بتشغيل الإستعلام ماذا تلاحظ !!!

تلاحظ انه قام بعرض كافة السجلات من كلا الجدولين بدون استثناء سواء التي لها مفتاح خارجي او التي ليس لها ايضا مفتاح خارجي

اتمنى ان اكون قد القيت بعض الضوء والتوضيح على طريقة اظهار السجلات عند اختيار نوع الصلة في علاقة واحد الى متعدد حتى نعرف متى يمكننا اظهار السجلات او عدم اظهارها بواسطة اختيارنا الصحيح لنوع الصلة ( داخليه - خارجية يسار - خارجية يمين )

بالتوفيق

تم تعديل هذه المشاركة بواسطة zahrah في 21 ديسمبر 2012 في 15:57

3
#3

بارك الله فيكي

+1

#4

السلام عليكم

استاذتنا ام عهود

جزاك الله خير على هذا الشرح

انا فهمت كل شئ من خلال الاستعلام

لكن من خلال عرض الجدول اتساال؟؟؟؟

في الحالة الاولى :صلة داخلية وهي اظهار جميع السجلات المرتبطة من الجدولين وهذا واضح

بس لماذا من خلال عرض الجدول يظهر السجلات من الجدول الاول وليس لها ارتباط من الجدول الثاني

وفي الحالة الثانية: وهي اظهار السجلات المرتبطة من الجدولين بالاضافة الى سجلات الجدول الاول الغير مرتبطة وهذه الحالة الوحيدة التي

توافق عرض الجدول

اما الحالة الثالثة وهي اظهار السجلات المرتبطة بين الجدولين بالاضافة الى سجلات الجدول الثاني الغير مرتبطة

وهذة الحالة التي لاتوافق الجدول بتاتا لان لم اشاهد السجلات الغير مرتبطة من الجدول الثاني في عرض الجدول

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

والطلب الثاني متى اختار الربط الصحيح؟؟؟؟ هل برنامج الاكسس ترك لنا الخيار في اظهار السجلات بناءا على رغب المبرمج؟؟؟؟

ام هناك قاعدة علمية تحكمني في كل حالة وتجبرني على اختيار نوع الربط

وشكرا على الردود والمشاركة لكي يستفاد الجميع

تم تعديل هذه المشاركة بواسطة سلامنا لكم في 21 ديسمبر 2012 في 17:29

#5
سلامنا لكم كتب:

السلام عليكم

استاذتنا ام عهود

جزاك الله خير على هذا الشرح

انا فهمت كل شئ من خلال الاستعلام

لكن من خلال عرض الجدول اتساال؟؟؟؟

في الحالة الاولى :صلة داخلية وهي اظهار جميع السجلات المرتبطة من الجدولين وهذا واضح

بس لماذا من خلال عرض الجدول يظهر السجلات من الجدول الاول وليس لها ارتباط من الجدول الثاني

وفي الحالة الثانية: وهي اظهار السجلات المرتبطة من الجدولين بالاضافة الى سجلات الجدول الاول الغير مرتبطة وهذه الحالة الوحيدة التي

توافق عرض الجدول

اما الحالة الثالثة وهي اظهار السجلات المرتبطة بين الجدولين بالاضافة الى سجلات الجدول الثاني الغير مرتبطة

وهذة الحالة التي لاتوافق الجدول بتاتا لان لم اشاهد السجلات الغير مرتبطة من الجدول الثاني في عرض الجدول

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

والطلب الثاني متى اختار الربط الصحيح؟؟؟؟ هل برنامج الاكسس ترك لنا الخيار في اظهار السجلات بناءا على رغب المبرمج؟؟؟؟

ام هناك قاعدة علمية تحكمني في كل حالة وتجبرني على اختيار نوع الربط

وشكرا على الردود والمشاركة لكي يستفاد الجميع

استاذنا الفاضل : سلامنا لكم

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

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

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

post-15367-077331300 1356104424_thumb.gi

كما تلاحظ طريقة عرض السجلات في الجدول فهذه لا تفيدنا بشيء

الأن سنذهب الى الأستعلام المبني على الجدولين ونرى السجلات بشكل اوضح مع كل تغيير نجريه على الصلات ( داخلية - خارجية يسار - خارجية يمين )

الحالة الأولى :

صلة داخلية ( افتراضية )

post-15367-026564600 1356104574_thumb.gi

post-15367-067794200 1356104750_thumb.gi

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

------------------------

الحالة الثانية :

صلة خارجية يسار ( جهة الجدول الفرعي )

post-15367-018396000 1356105031_thumb.gi

post-15367-006269900 1356105214_thumb.gi

هنا بدأت الصلة تظهر بشكل واضح حيث تم اظهار السجلات الممتلئة والفارغة على حد سواء لأن الصله اظهرت ايضا كل السجلات في الجدول الثاني

-----------------------

الحالة الثالثة :

صلة خارجية يمين ( جهة الجدول الرئيسي )

post-15367-016094900 1356105452_thumb.gi

post-15367-085413100 1356105542_thumb.gi

هنا تم تضمين كافة السجلات من الجدولين الأول مع الثاني حيث الحقول المتصلة متساوية

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

الآن نأتي متى يستخدم المبرمج الصلتين الباقيتين ( خارجية يمين - خارجية يسار )

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

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

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

بالتوفيق

المرفقات
T1.gifT2.gifT3.gifT4.gifT5.gifT6.gifT7.gif

تم تعديل هذه المشاركة بواسطة zahrah في 21 ديسمبر 2012 في 19:16

1
#6

السلام عليكم

الاستاذة الفاضلة ام عهود

بعد قراءة وتمحص وجدت الاتي

افضل بناء لقاعدة البيانات ان يكون به الخصائص الاتية

1) يجب ان لايكون هناك سجلات غير مرتبطة من الجدول الثاني

لذلك الربط الحالة الثالثة يكون غير موجود وغير محبذ اصلا

2) ممكن ان يكون هناك سجلات غير مرتبطة من الجدول الاول

فيكون في هذه الحالة افضل ربط الحالة الثانية

3) طبعا افضل شئ ان يكون جميع السجلات مرتبطة من الجدولين فيتم ذلك اختيار الحالة الاولى

اذن افضل ربط الاولى او الثانية بناءا على سجلات الجدولين

ولي يكتمل بناء القاعدة نعمل فرض التكامل المرجعي

مع الحذف والتعديل

وجعل الحقل الثانوي في الجدول الثاني ( مطلوب )

ارجو الفائدة تكون للجميع

تم تعديل هذه المشاركة بواسطة سلامنا لكم في 21 ديسمبر 2012 في 19:42

#7

السلام عليكم

تم اضافة الرد

قبل ان اقرأ مشاركتك

جزاك الله خير وفيتي وكفيتي بالشرح

والان تكونت لي رؤية واضحة في كيفية تكوين العلاقة

ومتى يتم اختيار الربط الصحيح

شكرا مرة اخرى +1

#8

علينا أن نتخيل جدولا ثالثا عند ربط جدولين بعلاقة

لو كان فى الجدول الأول

a-b-c-d-e-f-z

و فى الثانى

b-c-e-k

فالنوع الأول ( الربط الداخلى) معناه جدول ثالث يشتمل على

b-c-e

و هى الحقول المشتركة بين الجدولين

و فى الربط الخارجى الأيسر

b-c-e-k

نفس النتيجة + k

أما فى النوع الثالث الربط الخارجى لأيمن

a-b-c-d-e-f-z

و الله أعلم

مواضيع مشابهة