العلاقات وكيفية فهمها |
تعليم أوراكل للعرب |
العلاقات وكيفية فهمها
العلاقات والارتباطات الموجودة بين الجداول هي من أهم أهداف قواعد البيانات إذ أن هذه العلاقات توفر الكثير من الجهد والتعب في الإدخال والاستعلام كما وتوفر الكثير من المساحات المهدرة من القرص بسبب تكرر هذه المعلومات
مثال بسيط على العلاقات في حال كان لدينا قاعدة بيانات الهواتف وكان من المطلوب إدخال بيانات الأشخاص ومنها جنسياتهم فإن كل حقل سوف يحتوي على الجنسية ولكن لا بد وأن هناك العديد جنسياتهم متشابهة فلماذا نقوم بإدخال الجنسية مرة أخرى فبهذه الطريقة سوف تضطر إلى إدخال الجنسية يدويا كما أن هناك احتمالات الخطاء والنسيان كم أن تخزين الجنسية أكثر من مرة يزيد من المساحة المهدرة بلا فائدة ولكن إذا قمنا بعمل جدول أخر مخصص بالجنسيات ويحتوي على الجنسيات المتوقعة ولنفترض عشرة جنسيات مختلفة وتقوم بربطه بجدول بيانات الشخص فأن ذلك سوف يقوم بإلغاء احتمالات الخطاء والنسيان كما وأنه يمكن للمستخدم الاختيار من القائمة الجنسية المطلوبة وبذلك نكون قد وفرنا من الوقت المطلوب في الإدخال كما أن عمل رمز معين لكل جنسية وتقوم بإدخاله في جدول بيانات الشخص سوف يقوم من تقليل المساحات المهدرة على القرص بلا فائدة كما أنها سوف تقوم بتسهيل عمليات الاستعلام
أنواع العلاقات
العلاقة من نوع واحد إلى واحد
العلاقة من نوع واحد إلى عدة
العلاقة من نوع واحد إلى واحد
هذا النوع من العلاقات يكون لوصل سجل من جدول رئيسي مع سجل في جدول أخر فرعي وكمثال على ذلك لنفترض أن هناك جدول الموظفين كجدول رئيسي وجدول الرواتب كجدول فرعي فلكل موظف في المؤسسة هناك راتب واحد شهريا وليس أكثر من راتب واحد وبذلك يكون الارتباط كل موظف واحد لديه راتب شهري واحد
العلاقة من نوع واحد إلى عدة
هذا النوع يكون لوصل سجل من جدول رئيسي مع عدة سجلات من جدول أخر فرعي وكمثال على ذلك نفترض أن هناك جدول الشركات وجدول المشتريات فأنه ليس من الممكن أن تكون هناك أكثر من شركة لها نفس الاسم ولكن من الممكن أن نكون قد قمنا بعمليات شراء من هذه الشركة عدة مرات وبذلك تكون العلاقة كل شركة واحدة تم التعامل معها في عدة عمليات شراء
كيف يتم عمل علاقة ربط بين جدولين
في حال كان لدينا جدول منشاء مسبقا فمن الممكن إنشاء علاقة الربط بينه وبين جدول أخر عن طريق أمر التعديل الخاصة بالجداول
مثال
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept KEY
(deptno) REFERENCES dept
(deptno);
في المثال السابق قمنا بتعديل جدول بجعل علاقة ربط بينه وبين جدول أخر وهما جدولي الدوائر وجدول الموظفين
أما في حال كان أحد الجداول منشاء مسبقا وأردنا أن نقوم بعملية ربط في جدول نقوم بإنشائه حاليا
مثال
CREATE TABLE emp(empno number(4)primary key ,ename varchar2(15) , job varchar2(20),deptno number(4) not null CONSTRAINT fk_emp_dept FOREIGN KEY (deptno) REFERENCES dept(deptno);
وبذلك نكون قد علمنا كيف يتم إنشاء علاقات بين الجداول وبعضها ويجب أن نأخذ بعين الاعتبار الأمور التالية
أن يكون نوعي الحقول المرتبطة بنفس الطول ونفس النوع
أن تكون الحقول لا تقبل قيم صفرية في علاقة الربط
أن تكون أحد أو كلا الحقلين المرتبطين هو مفتاح للجدول
الكلمات الموجود في جمل الاستعلامات السابقة وذات اللون الاخضر هي تعريف خاص باسم العلاقة فيمكنك تعريفها أنت أو ترك أوراكل يقوم بتعريفها بدل عنك ولكن من المفضل أن تقوم أنت بتعريف هذه العلاقة لكي تتمكن من الرجوع إليها في أي وقت أردت تعديله أو حذفها