اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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


الردود الموصى بها

العلاقات وأنواعها وخصائصها :

تنقسم العلاقات من حيث الأنواع إلى ثلاثة أقسام :

1- علاقة واحد لواحد (One To One) :

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

مثال :

العلاقة بين جدول بيانات الموظف وجدول بيانات الراتب :

الحقول كالتالي : رقم الموظف ، اسم الموظف ، تاريخ التعيين ، تاريخ المباشرة ، الدورات التي حصل عليها ، المؤهل ، مقدر الراتب ، مقدار العلاوة السنوية .. الخ

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

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

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

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

مثال :

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

جدول المعلمين يتضمن الحقول التالية : رقم المعلم(مفتاح أساسي) ، اسم المعلم .

جدول الفصول يتضمن الحقول التالية : رقم الفصل (مفتاح أساسي) ، اسم الفصل .

جدول الربط يتضمن الحقول التالية : رقم المعلم (مفتاح فرعي لجدول المعلمين ) ، رقم الفصل (مفتاح فرعي لجدول الفصول) لتكون البيانات كالتالي :

اسم المعلم : محمد ورقمه 10 ، علي ورقمه 11 في جدول المعلمين

اسم الفصل : الأول ورقمه 5 ، الثاني ورقمه 6 ، الثالث ورقمه 7 في جدول الفصول .

وفي جدول الربط تكون البيانات كالتالي :

رقم المعلم 10 ، رقم الفصل6

رقم المعلم 10 ، رقم الفصل7

رقم المعلم 11 ، رقم الفصل6

رقم المعلم 11 ، رقم الفصل5

3- علاقة واحد لمتعدد (One To Many) :

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

مثال :

العلاقة بين جدول الموظف وجدول الإجازات فكل موظف له عدد غير محدد من سجلات الإجازات بينما لا تكون إجازة ذات رقم معين لأكثر من موظف .

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

تنقسم إلى ثلاثة أقسام :

1- ربط داخلي :

وفيه يتم إظهار سجلات الآباء المرتبطين بأبناء فقط أما الآباء الذين ليس لديهم أبناء فسيتم تجاهلهم ولن يظهروا في النتائج . تستخدم فيه العبارة INNER JOIN

وعبارة SQL هنا هي :

SELECT fields FROM tbl1 INNER JOIN tbl2 ON tbl1.ID=tbl2.No
2- ربط خارجي تام : وفيه يتم إظهار جميع السجلات من الجدولين بلا شروط بل سيحضر جميع السجلات من الجدول الأول وكذلك من الجدول الثاني وتستخدم فيه العبارة FULL OUTER JOIN وعبارة SQL هنا هي :
SELECT fields FROM tbl1 FULL OUTER JOIN tbl2 ON tbl1.ID=tbl2.No
3- ربط خارجي أيمن : وفيه يتم إظهار سجلات الجدول الأيمن جميعها سواء ما كان له أبناء أم لا ولا يظهر من سجلات الجدول الأيسر إلا ما كان له موافق في سجلات الجدول الأيمن وتستخدم فيه العبارة RIGHT JOIN وعبارة SQL هنا هي :
SELECT fields FROM tbl1 RIGHT JOIN tbl2 ON tbl1.ID=tbl2.No
4- ربط خارجي أيسر : وفيه يتم إظهار سجلات الجدول الأيسر جميعها سواء ما كان له أبناء أم لا ولا يظهر من سجلات الجدول الأيمن إلا ما كان له موافق في سجلات الجدول الأيسر وتستخدم فيه العبارة LEFT JOIN وعبارة SQL هنا هي :
SELECT field1 FROM tbl1 LEFT JOIN tbl2 ON tbl1.ID=tbl2.No

ملاحظة : الجدول الأيمن أي يمين العبارة RIGHT JOIN

الجدول الأيسر أي يسار العبارة LEFT JOIN .

العلاقات من حيث تعدد الجداول :

تنقسم ربط الجداول من حيث تعددها إلى ثلاثة أقسام : (في الاستعلام)

1- ربط ثلاثة جداول فأكثر :

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

مثال : لنفترض أن لدينا ثلاثة جداول

الأول : جدول بيانات الزبون

الثاني : جدول الطلبات

الثالث : جدول المنتجات

وأردنا معرفة الزبائن الذين اشتروا سلعة معينة فنقوم بربط جدول المنتجات بالطلبات لأخذ اسم السلعة ومن ثم ربط الطلبات بالزبائن لمعرفة اسم الزبون

2- ربط جدولين :

وهذا مر معنا وهو الأكثر .

3- ربط الجدول مع نفسه :

ونحتاج هذا حين تتعدد مهام الجدول :

مثال : جدول الموظفين يحتوي على جميع الموظفين في الشركة وهؤلاء الموظفون فيهم المدراء ورؤساء الأقسام والموظفون وكل هؤلاء يضمهم جدول واحد وهو جدول الموظفين .. فلو أردنا معرفة كل مدير ورؤساء الأقسام التابعين له وكذلك كل رئيس قسم والموظفين التابعين له فحينئذٍٍ لا من ربط الجدول مع نفسه

يتكون الجدول من الحقول التالية :

رقم الموظف(للجميع)

اسم الموظف

رقم المدير : وهذا الحقل يكون فارغاً في سجل المدراء ويأخذ قيمة رقم الموظف (المدير) بالنسبة لسجل رؤساء الأقسام

رقم رئيس القسم : وهذا الحقل يكون فارغاً في سجل المدراء ورؤساء الأقسام ويأخذ قيمة رقم الموظف (رئيس القسم) بالنسبة لسجل الموظفين

فلمعرفة المدير من رئيس القسم من الموظف كالتالي :

إذا كان حقل رقم المدير فارغاً فهذا يعني أنه مدير

وإذا كان حقل رقم المدير ورقم رئيس القسم فارغاً فهذا يعني أنه رئيس قسم

وإذا لم يكن حقل رقم رئيس القسم فارغاً فهذا يعني أنه موظف

ولمعرفة رؤساء الأقسام الذين ينتمون إلى مديرهم نقوم بربط الجدول مع نفسه بين حقلي رقم الموظف ورقم رئيس القسم

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

تم تعديل بواسطه أحمد الحربي
رابط هذا التعليق
شارك

  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information