الموضوع
:
دروس اوراكال مصوره
عرض مشاركة واحدة
#
5
02-22-2010, 07:02 PM
ليالى111
مراقب عام
تاريخ التسجيل: Feb 2010
المشاركات: 115
نواع العلاقات Relationships
تنقسم العلاقات الى ثلاثة اجزاء
ولكل جزء عملة وكيفية تكوينة واهمية وجودة فى قاعدة البيانات
وانواع العلاقات :
1- One to One واحد الى واحد
2- One to Many واحد الى كثير
3- Many to Many كثير الى كثير
اولا: علاقة واحد الى واحد One to One 1-1:
يتم التعامل بهذة العلاقة عندما يوجد جدولين وطبيعة التعامل بينهما ان كل جدول يخدم الجدول الاخر بطريقة فردية
كيف يتم ذلك؟؟
مثلا انة عندنا جدولين على سبيل المثال
جدول الاقسام
Department
وجدول المديرين
Manager
فمن الطبيعى ان لكل قسم مدير واحد
فلا يصلح ان يكون هناك قسمين او اكثر لهم نفس المدير
او ان هناك قسما لة اكثر من مدير او رئيس
فستكون العلاقة بين هذين الجدولين من نوع
واحد الى واحد One to one
وتنفذ هذة العلاقة بشكل الجدول الاب والجدول الابن
فاذا فرضنا ان الجدول الرئيسى والذى سوف نجعلة جدول الاب لة تلك الخصائص
جدول المديرين
Manager
Man_id
name
address
sal
وكما ذكرنا فى السابق انة لكى تتم العلاقة يجب ان يكون هناك مفتاحا اساسيا فى الجدول Primary key
فعلى سبيل المثال اخترنا الحقل
Man_id
ليكون المفتاح الاساسى للجدول (الجدول الاب)
والجدول الثانى جدول الاقسام (جدول الابن) لة تلك الخصائص Department
dept_no
dep_name
location
phonenum
التركيز هنا من فضلك
عند عمل علاقة واحد الى واحد يكون المفتاح الاساسى لجدول الابن هوة نفس المفتاح الاساسى لجدول الاب !!
كيف يتم ذلك؟
سنضع الحقل الموجود فى جدول الاب ولة خاصية المفتاح الاساسى سنضعة فى جدول الابن ونجعلة المفتاح الاساسى لجدول الابن مع التعريف بذلك فى جدول الابن
مش فاهمين حاجة!!
بكل بساطة
هتكون خصائص جدول الابن اللى هوة جدول الاقسام Department الجديدة كالتالى
man_id
dept_no
dep_name
location
phonenum
الجديد هنا اننا وضعنا المفتاح الاساسى لجدول المديرين الجدول الابman_id داخل جدول الابن اللى هوة جدول الاقسام وهنخلى المفتاح الاساسى للجدول الابن اللى هوة جدول الاقسام هوة نفسة المفتاح الاساسى للجدول الاب
يعنى المفتاح الاساسى للجدول البن اللى هوة جدول الاقسام department هوة man_id
وعند الخول فى القسم العملى سنتعلم كيف يتم تعريف العلاقة فى الجدول
ولكن هذة هى القاعدة الاساسية للعلاقة
وهذة الصورة توضح الجدولين والعلاقة بينهم على شكل ERD
تظهر لنا الصورة اجدولين وخصائصهم
والخاصية التى تحتها خط هى المفتاح الاساسى للجدول
اما الرقم اسفل الجدول المشار الية بالسهم فهو يبين كيفية العلاقة
وطبعا داخل شكل المعين نوع العلاقة وهى على سبيل المثال manage اى يدير
ومعناها ان الجدول الاب وهو المديرين يرتبط مع الجدول الابن وهو الاقسام بان المديرين يقومون بادارة الاقسام
ملاحظة
:
يمكن ان نقوم بعمل مفتاح اساسى اخر للجدول الابن ان تطلب الامر ونختار حقلا من حقول جدول الابن يصلح ان يكون مفتاحا اساسيا بالشروط المذكورة سابقا
--------------------------------------
ملاحظة:
التعامل مع هذا النوع من العلاقات يكون بحرص شديد جدا جدا وتحليل جيد للنظام لانها تقيد المستخدم بشكل كبير
ثانيا : علاقة واحد الى كثير One to Many 1-m:
يتم وضع هذة العلاقة عندما يكون هناك طرفا واحدا يتعامل مع اكثر من طرف اخر
وهذة الاطراف الاخرى لا تتعامل الا مع الطرف الاول الا بشكل فردى !!
على سبيل المثال
هناك جدولان
جدول الاقسام وخصائصة
DEPARTMENT
dept_no
dep_name
location
ومفتاحة الاساسى
dept_no
ويتم تمثيل المفتاح الاساسى بوضع خط تحتة
وجدول اخر
جدول الموظفين
Employee
وخصائصة:
emp_id
name
sal
address
ومفتاحة الاساسى
emp_id
السؤال هنا , كيف تتم العلاقة بين هذين الجدولين وماهو نوع العلاقة ؟؟
من الطبيعى ان لكل قسم موظفية
ومن الطبيعى ان يعمل فى قسم واحد فقط اكثر من موظف
مثلا قسم الحسابات يمكن ان يعمل بية اكثر من موظف
ولكن لا يمكن لموظف ان يعمل فى اكثر من قسم
اذا العلاقة هنا هى علاقة واحد الى كثير one to many
كيف نقوم بوضع تلك العلاقة؟؟
طبعا كل جدول لة المفتاح الاساسى الخاص بة
فعندما نريد ان نكون علاقة واحد الى كثير one to many
اولا نقوم بتحديد الجدول الذى سوف يكون التعامل معة بطريقة مفردة والجدول الذى سيتم التعامل معة بكثرة
فهنا جدول الاقسام هو من سيتم التعامل معة بطريقة مفردة
وجدول الموظفين سيتم التعامل معة بطريقة كثير
فتكوين العلاقة يتم كالاتى:
نقوم باخذ حقل المفتاح الاساسى لجدول الاقسام dept_no
ووضعة داخل جدول الموظفين
ويتم تعريف الحقل الجديد بالاشارة الى الجدول الاساسى لة
فيتحول هذا الحقل الى مفتاح اجنبى foreign key
وتم التعرف علية مسبقا
فتنتج خصائص جديدة لجدول الموظفين تكون كالتالى
emp_id
name
sal
address
dept_no
وبهذا نكون قد كونا العلاقة
وهذة صورة تمثل العلاقة على شكل ERD
الصورة هنا توضح انة تم وضع حقل المفتاح الاساسى لجدول الاقسام dept_no ومشار الية باللون البرتاقالى
اما رقم واحد 1 المشار الية بالسهم فهو دلالة على ان هذا الجدول يتم التعامل معة بصورة مفردة
وحرف m المشار الية دلالة على ان هذا الجدول يتم التعامل معة بصفة كثير
وطبيعة العلاقة بين الجدولين داخل شكل المعين وهى على سبيل المثال طبيعة عمل
work
ثالثا : علاقة كثير الى كثير Many to Many m to n :
التركيز مطلوب جدا ياجماعة
هذة العلاقة بها بعض الاختلاف عن غيرها
يتم التعامل بهذا النوع عندما تكون كل الاطراف المشتركة فى العلاقة تعتمد على بعضها البعض بشكل مختلف وبعدة اشكال
على سبيل المثال العلاقة بين المدرس والطالب
فكل طالب يقوم بالتدريس علية اكثر من مدرس
وكل مدرس يقوم بالتدريس ل اكثر من طالب
اذا كيف نقوم بتكوين تلك العلاقة؟؟؟
لنفرض انة لدينا جدولين
جدول الطلاب STUDENT
وخصائصة:
st_id
name
address
phone
ومفتاحة الاساسى
st_id
وجدول المدرسين TEACHER
وخصائصة :
t_id
name
phone
address
subject
ومفتاحة الاساسى
t_id
والان كيف نقوم بتكوين تلك العلاقة؟؟؟
فى هذا النوع من العلاقات نقوم بعمل جدول جديد للعلاقة
كيف ذلك؟؟
الجدول الجديد ستكون خصائصة مكونة من
المفتاح الاساسى للجداول المشتركة فى العلاقة
سنقوم الان بتكوين العلاقة على هذين الجدولين
سنقوم بانشاء جدول جديد ونسمية على سبيل المثال TEACHING اى عملية التدريس
ونقوم بوضع المفتاح الاساسى لجدول المدرسين t_id من خصائص الجدول الجديد
ووضع المفتاح الاساسى لجدول الطلاب st_id ضمن خصائص الجدول الجديد ايضا
فعندما تتم تلك العملية تنشاء علاقتين
علاقة بين جدول المدرسين TEACHER وجدول العلاقة الجديد teaching من نوع واجد الى كثر
واحد من جدول المدرسين وكثير من جدول عملية التدريس
وعلاقة بين جدول الطلاب STUDENT وجدول العلاقة الجديد teaching
علاقة من نوع واحد الى كثثر ايضا
وبهذا تكون علاقة كثير الى كثير قد تم تكوينها
ونمثل ذلك على شكل ERD لتوضيح العلاقة
فى هذة الصورة يتم توضيع العلاقات المكونة
ونوضيح جدول العلاقة الجديد وخصائصة وكيفية انشاء العلاقة بينة وبين الجدولين الاساسيين
وبهذا نكون قد وضحنا تماما انواع العلاقات وكيفية تكوينها
وان شاء الله فى الجزء العملى سيتم توضيح كيفية تطبيق العلاقات
وفى الدرس القادم ان شاء الرحمن سننتقل الى جزء اخر
وان كان هناك اى تقصير منى فسامحونى
فان اصبت فمن الله
وان اخطات فمن نفسى والشيطان
ليالى111
مشاهدة ملفه الشخصي
إرسال رسالة خاصة إلى ليالى111
البحث عن كل مشاركات ليالى111