المفاتيح الأساسية والثانوية في قاعدة البيانات. قواعد البيانات العلائقية

07.04.2019

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

يتم تعريف كل سمة على المجال، لذلك يمكن اعتبار المجال بمثابة مجموعة من القيم الصالحة لسمة معينة. يمكن تعريف سمات متعددة لنفس العلاقة، وحتى سمات العلاقات المختلفة، في نفس المجال.

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

المفتاح الأساسي- في نموذج البيانات العلائقية، يتم تحديد أحد المفاتيح المحتملة للعلاقة كمفتاح أساسي (أو مفتاح افتراضي).

يمكن أن تحتوي العلاقة على مفاتيح متعددة. يتم الإعلان دائمًا عن أحد المفاتيح أساسي، لا يمكن تحديث قيمها. يتم استدعاء كافة مفاتيح العلاقات الأخرى المفاتيح الممكنة.

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

لو المفتاح الأساسييتكون من سمة واحدة، ويسمى بمفتاح بسيط.

لو المفتاح الأساسييتكون من صفتين أو أكثر، ويسمى مفتاح مركب. لذلك، لا يمكن أن يكون الاسم الأول واسم العائلة ورقم جواز السفر وسلسلة جوازات السفر مفاتيح أساسية بشكل فردي، لأنها قد تكون هي نفسها لشخصين أو أكثر. لكن لا يوجد وثيقتين شخصيتين من نفس النوع وبنفس السلسلة والرقم. لذلك، في العلاقة التي تحتوي على بيانات حول الأشخاص، يمكن أن يكون المفتاح الأساسي عبارة عن مجموعة فرعية من السمات التي تتكون من نوع المستند الشخصي وسلسلته ورقمه.



على عكس نماذج البيانات الهرمية والشبكية، لا يحتوي النموذج العلائقي على مفهوم علاقة المجموعة. لعكس الارتباطات بين الصفوف ذات العلاقات المختلفة، يتم استخدام تكرار مفاتيحها.

يتم استدعاء السمات التي هي نسخ من مفاتيح العلاقات الأخرى مفاتيح خارجية.

على سبيل المثال، يتم إنشاء العلاقة بين علاقات الإدارة والموظف عن طريق نسخ المفتاح الأساسي "رقم_القسم" من العلاقة الأولى إلى الثانية. وبالتالي، للحصول على قائمة بموظفي قسم معين، من الضروري: 1) من جدول القسم، قم بتعيين قيمة السمة "رقم_القسم" ، الموافق لهذا "Department_Name". 2) حدد كافة السجلات من جدول الموظف، قيمة السمة "رقم_القسم"وهو ما يعادل تلك التي تم الحصول عليها في الخطوة السابقة. من أجل معرفة القسم الذي يعمل فيه الموظف، تحتاج إلى إجراء العملية العكسية: 1) تحديد "رقم_القسم"من جدول الموظف 2) باستخدام القيمة التي تم الحصول عليها، نجد الإدخال في جدول القسم.


18. التطبيع في قواعد البيانات العلائقية، مفهوم الشكل العادي في تصميم قواعد البيانات.

شكل عادي - خاصية العلاقة في نموذج البيانات العلائقية، وتمييزها من وجهة نظر التكرار، والتي يمكن أن تؤدي إلى نتائج خاطئة منطقيًا لأخذ العينات أو تغيير البيانات. يتم تعريف النموذج العادي على أنه مجموعة من المتطلبات التي يجب أن تلبيها العلاقة.

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



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

التبعيات الوظيفية.

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

19. 1NF: التعاريف الأساسية وقواعد التحويل.

لمناقشة النموذج العادي الأول، هناك تعريفان ضروريان:

سمة بسيطة - سمة تكون قيمها ذرية (غير قابلة للتجزئة).

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

تعريف الشكل العادي الأول:

تكون العلاقة في 1NF إذا كانت قيم جميع سماتها ذرية. . وبخلاف ذلك، فهو ليس جدولًا على الإطلاق ويجب تحليل هذه السمات.

لنلقي نظرة على مثال:

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

الموظف (EMPLOYEE_NUMBER، الاسم، تاريخ الميلاد، تاريخ العمل، الأطفال).

ومن دراسة متأنية لهذه العلاقة يترتب على السمات "تاريخ العمل"و "أطفال"معقدة، علاوة على ذلك، السمة "تاريخ العمل"يتضمن سمة معقدة أخرى "تاريخ_الراتب".
تبدو هذه الوحدات كما يلي:

 JOB_HISTORY (RECEPTION_DATE، الاسم، SALARY_HISTORY)،

 SALARY_HISTORY (APPOINTMENT_DATE، SALARY)،

 الأطفال (CHILD_NAME، BIRTH_YEAR).

يظهر اتصالهم في الشكل. 3.3.

الشكل 3.3. الموقف الأولي.

ولإيصال العلاقة الأصلية SERVANT إلى الشكل الطبيعي الأول لا بد من تحليلها إلى أربع علاقات، كما هو موضح في الشكل التالي:

الشكل 3.4. مجموعة تطبيع من العلاقات.

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

تم وصف خوارزمية التسوية بواسطة E. F. Codd على النحو التالي:

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

20. 2NF: التعريفات الأساسيةوقواعد التحول.

في كثير من الأحيان يتضمن المفتاح الأساسي للعلاقة عدة سمات (وفي هذه الحالة يطلق عليه مركب) - انظر على سبيل المثال العلاقة CHILDREN الموضحة في الشكل. 3.4 السؤال 19. في نفس الوقت يتم تقديم المفهوم الاعتماد الوظيفي الكامل.

تعريف:

تعتمد السمة غير الرئيسية وظيفيًا بشكل كامل على مفتاح مركب إذا كانت تعتمد وظيفيًا على المفتاح بأكمله ككل، ولكنها لا تعتمد وظيفيًا على أي من السمات المكونة له.

مثال:

يجب أن تكون هناك علاقة SUPPLY (N_SUPPLIER، PRODUCT، PRICE).
قد يقوم المورد بتوريد منتجات مختلفة، وقد يتم توفير نفس المنتج من قبل موردين مختلفين. ثم مفتاح العلاقة هو "N_المورد + المنتج". السماح لجميع الموردين بتوريد البضائع بنفس السعر. ثم لدينا التبعيات الوظيفية التالية:

  • ن_المورد، المنتج -> سعر
  • منتج -> سعر

يؤدي الاعتماد الوظيفي غير الكامل لسمة السعر على المفتاح إلى الحالة الشاذة التالية: عندما يتغير سعر أحد العناصر، يلزم الحصول على عرض كامل للعلاقة من أجل تغيير جميع السجلات المتعلقة بمورديها. هذا الشذوذ هو نتيجة لحقيقة دمج حقيقتين دلاليتين في بنية بيانات واحدة. التوسع التالي يعطي العلاقات في 2NF:

  • التسليم (N_SUPPLER، المنتج)
  • PRODUCT_PRICE (المنتج، السعر)

حتى تتمكن من العطاء

تعريف الشكل العادي الثاني: تكون العلاقة في 2NF إذا كانت في 1NF وكل سمة غير أساسية تعتمد بشكل كامل على المفتاح.

21. 3NF: التعاريف الأساسيةوقواعد التحول.

قبل مناقشة الشكل العادي الثالث، من الضروري تقديم المفهوم: الاعتماد الوظيفي متعدية.

تعريف:

دع X، Y، Z تكون ثلاث سمات لبعض العلاقات. في هذه الحالة، X --> Y و Y --> Z، ولكن لا يوجد مراسلات عكسية، أي. Z -/-> Y و Y -/-> X. ثم يعتمد Z بشكل متعد على X.
يجب أن تكون هناك علاقة STORAGE ( حازم، المستودع، الحجم)، والذي يحتوي على معلومات حول الشركات التي تستقبل البضائع من المستودعات وأحجام هذه المستودعات. السمة الرئيسية - "حازم". إذا كان بإمكان كل شركة استلام البضائع من مستودع واحد فقط، ففي هذا الصدد توجد التبعيات الوظيفية التالية:

  • حازم -> مخزون
  • مخزون -> مقدار

في هذه الحالة، تنشأ الحالات الشاذة:

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

للقضاء على هذه الحالات الشاذة، من الضروري تحليل العلاقة الأصلية إلى قسمين:

  • تخزين ( حازم، مخزون)
  • STORAGE_VOLUME ( مخزون، مقدار)

تعريف الشكل العادي الثالث:

تكون العلاقة في 3NF إذا كانت في 2NF وكل سمة غير أساسية لا تعتمد بشكل متعد على المفتاح الأساسي.

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

المفتاح الأساسي

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

مفتاح فريد

المفتاح الفريد هو عمود أو مجموعة أعمدة لا يمكن تكرار قيمها (مجموعة قيم لمجموعة أعمدة). الاختلافات بين المفتاح الفريد والمفتاح الأساسي هي:

  • يمكن أن يكون هناك عدة مفاتيح فريدة لجدول واحد (سؤال سريع لأولئك الذين قرأوا المقالة حول التطبيع: ما هي قواعد النموذج العادية التي سيتم انتهاكها؟ ؛)
  • يمكن أن تحتوي المفاتيح الفريدة على قيم NULL، وإذا كان هناك عدة صفوف ذات قيم مفاتيح فريدة NULL، فإن هذه الصفوف تعتبر مميزة (فريدة) وفقًا لمعيار SQL 92.

مفتاح خارجي

المفاتيح الخارجية هي الآلية الرئيسية لتنظيم العلاقات بين الجداول والحفاظ على سلامة واتساق المعلومات في قاعدة البيانات.

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

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

التكامل المرجعي

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

تنشأ لحظات أكثر إثارة للاهتمام عندما نقوم بحذف أو تغيير صفوف الجدول الأصلي. كيفية منع ظهور صفوف "متدلية في الهواء" من الجدول الفرعي؟ لهذا الغرض، توجد قواعد التكامل المرجعي عند التحديث وعند الحذف، والتي، وفقًا لمعيار SQL 92، يمكن أن تحتوي على العبارات التالية:

  • CASCADE - يضمن تنفيذ نفس التغييرات التي تم إجراؤها على المفتاح الأصلي تلقائيًا في الجدول الفرعي. إذا تم تغيير المفتاح الأصلي - سيضمن ON UPDATE CASCADE إجراء نفس تغييرات المفتاح الخارجي في الجدول الفرعي. إذا تم حذف صف في الجدول الأصلي، فسيضمن ON DELETE CASCADE حذف جميع الصفوف المقابلة في الجدول الفرعي.
  • SET NULL - عند حذف صف في الجدول الأصلي، سيؤدي ON DELETE SET NULL إلى تعيين كافة أعمدة المفاتيح الثانوية في الصفوف المقابلة في الجدول الفرعي على NULL. عند تغيير المفتاح الأصلي، سيؤدي ON UPDATE SET NULL إلى تعيين الأعمدة المقابلة للصفوف المقابلة (أوه كيف:) للجدول الفرعي على NULL.
  • SET DEFAULT - يعمل بشكل مشابه لـ SET NULL، ولكنه يكتب القيم الافتراضية للخلايا المقابلة بدلاً من NULL.
  • عدم اتخاذ إجراء (يتم تعيينه افتراضيًا) - عندما يتغير المفتاح الأصلي، لا يتم اتخاذ أي إجراء بشأن المفتاح الخارجي في الجدول الفرعي. ولكن إذا أدى تغيير قيم المفتاح الأصلي إلى انتهاك التكامل المرجعي (أي ظهور صفوف الجدول الفرعي "معلقة في الهواء")، فلن يسمح نظام إدارة قواعد البيانات (DBMS) بإجراء مثل هذه التغييرات إلى الجدول الأصلي.

حسنًا، الآن - من العام إلى الخاص.

المفاتيح والتكامل المرجعي في MySQL وOracle

تدعم Oracle المفاتيح الأساسية والفريدة والأجنبية بالكامل. تدعم Oracle قواعد التكامل المرجعي التالية:

  • لا يوجد إجراء (يتم تعيينه افتراضيًا) في إصدار أكثر تقييدًا من معيار SQL 92: يُحظر تغيير وحذف صفوف الجدول الأصلي التي تحتوي على صفوف مرتبطة في الجداول الفرعية.
  • على حذف تتالي.

يمكن تنفيذ قواعد التكامل المرجعي الأكثر تعقيدًا في Oracle من خلال آلية التشغيل.

يسمح لك الإصدار 4.1 من MySQL (أحدث إصدار مستقر في وقت كتابة هذا التقرير) بتحديد عبارات REFERENCES / FOREIGN KEY في أوامر CREATE / ALTER TABLE، ولكنه لا يأخذها في الاعتبار بأي شكل من الأشكال ولا يقوم فعليًا بإنشاء مفاتيح خارجية. وبناء على ذلك، فإن قواعد التكامل المرجعي التي يتم تنفيذها من خلال المفاتيح الخارجية غير مدعومة في MySQL. وجميع المخاوف بشأن ضمان سلامة واتساق المعلومات في قاعدة بيانات MySQL تقع على عاتق مطوري تطبيقات العميل.

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

في هذا الموضوع، وباستخدام جدولين كمثال، يتم تعريف المفاهيم الأساسية لقواعد البيانات العلائقية، وهي:

  • المفتاح الأساسي؛
  • مفتاح خارجي
  • مفتاح بسيط ومركب؛
  • الموقف وأنواع العلاقات.
  • مفاتيح اصطناعية وطبيعية
  • الجداول الرئيسية (الرئيسية) والثانوية (التفصيلية).

ادخال البيانات

دعونا نعطي قاعدة بيانات لموظفي المؤسسة والتي تتكون من جدولين. يحتوي الجدول الأول على بيانات عن الموظف. يحتوي الجدول الثاني على معلومات حول راتب الموظف.

الجداول لها الهيكل التالي.

"عامل". يحتوي على بيانات الموظفين "مرتب". يحتوي على معلومات حول رواتب الموظفين.

جواب السؤال

1. ما هو المفتاح الأساسي في جدول قاعدة البيانات؟ ما هي المفاتيح الأساسية المستخدمة؟

عند العمل مع الجداول في قواعد البيانات العلائقية، من المرغوب فيه (ضروري) أن يكون لكل جدول ما يسمى المفتاح الأساسي.

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

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

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

يمكنك أيضًا إدخال حقل إضافي لجدول "الراتب"، والذي سيكون المفتاح الأساسي.

2. ما هي العلاقة بين الجداول؟ مثال

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

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

وهذا يعني ما يلي. إذا كنت بحاجة إلى العثور على الأجور المستحقة في جدول "الراتب" للموظف Ivanov I.I.، فأنت بحاجة إلى تنفيذ الخطوات التالية:

  • ابحث عن رقم الموظف Ivanov I.I. في جدول "الموظف". قيمة رقم الموظف 7585؛
  • في جدول "الراتب"، ابحث عن جميع القيم التي تساوي 7585 (عدد الموظفين)؛
  • اختر من جدول "الراتب" جميع قيم الحقل "المستحق" التي تتوافق مع رقم الموظف 7585.

أرز. 1. رسم توضيحي للعلاقة بين الجداول. يتم عرض رقم الموظف 2145 من جدول "الموظف" في جدول "الراتب".

أرز. 2. الاتصال (العلاقة) بين حقول الجدول

3. ما هو المفتاح الخارجي؟ مثال

يعد مفهوم "المفتاح الخارجي" مهمًا عند النظر في الجداول ذات الصلة.

مفتاح خارجي– هو حقل أو أكثر (سمات) أساسية في جدول آخر ويتم استبدال قيمتها بقيم المفتاح الأساسي لجدول آخر.

مثال.لتكن هناك علاقة بين جدولي "الموظف" و"الراتب" في حقل "رقم الموظف". في هذه الحالة، يمكن أن يكون حقل "رقم الموظف" في جدول "الموظف" هو المفتاح الأساسي، ويمكن أن يكون حقل "رقم الموظف" في جدول "الراتب" مفتاحًا خارجيًا. وهذا يعني أن قيم حقل "الرقم الوظيفي" من جدول "الراتب" يتم استبدالها بقيم حقل "الرقم الوظيفي" من جدول "الموظف".

4. ما هو المفتاح الخارجي العودي؟

المفتاح الخارجي العوديهو مفتاح خارجي يشير إلى نفس الجدول الذي ينتمي إليه. في هذه الحالة، الحقل (السمة) الذي يتوافق مع المفتاح الخارجي هو مفتاح نفس العلاقة (الرابط).

5. هل يمكن أن تكون المفاتيح الأساسية والأجنبية بسيطة أم مركبة (معقدة)؟

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

6. ما الفرق بين المفتاح الاصطناعي والمفتاح الطبيعي؟ مثال

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

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

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

في جدول "الراتب"، قد تتكرر القيمة الموجودة في الحقول الأربعة عن طريق الخطأ. لذلك، يُنصح هنا بإضافة حقل عداد إضافي، والذي سيكون مفتاحًا صناعيًا. في هذه الحالة، قد يبدو جدول "الراتب" مع حقل إضافي كما يلي:

حيث يعد حقل "الرقم" مفتاحًا صناعيًا يضمن التفرد.

7. ما هي الطرق المختلفة لاختيار المفتاح الأساسي؟

هناك ثلاث طرق لتحديد المفتاح الأساسي:

  • استخدم حقل الزيادة (حقل العداد) كمفتاح صناعي؛
  • حدد حقلاً واحدًا من البيانات التي يمكن أن توفر التفرد؛
  • حدد عدة حقول من البيانات التي يمكن أن توفر التفرد. في هذه الحالة، سيُطلق على المفتاح أيضًا اسم معقد (مركب).
8. ماذا يعني مصطلح "الجدول الرئيسي" (الرئيسي) و"الجدول الثانوي" (التفاصيل)؟

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

مثال.إذا نظرنا إلى جدولي "الموظف" و"الراتب"، فإن جدول "الموظف" هو الجدول الرئيسي، وجدول "الراتب" هو جدول ثانوي.

9. ما هي أنواع العلاقات (الروابط) الموجودة بين الجداول؟

هناك 4 أنواع رئيسية من العلاقات بين الجداول:

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

مثال.إذا أخذنا بعين الاعتبار العلاقة بين جدولي "الموظف" و"الراتب"، فإن هذه العلاقة هي من النوع "واحد إلى متعدد". جدول "الموظف" هو الجدول الرئيسي. جدول "الراتب" هو جدول ثانوي.

يمكن لـ InterBase استخدام أنواع القيود التالية:
  • المفتاح الأساسي - المفتاح الأساسي للجدول.
  • فريد - مفتاح جدول فريد.
  • مفتاح غريب- المفتاح الخارجي، يوفر رابطًا لجدول آخر ويضمن التكامل المرجعي بين الأصل و جداول الطفل.

مذكرة في المصطلحات

إذا كنت مثل مؤلف هذه الدورة من حيث أنك ترغب في البحث عن إجابات لسؤال يثير اهتمامك بشكل شامل، في أعمال مختلفة لمؤلفين مختلفين، فلا يسعك إلا أن تلاحظ بعض الالتباس في التعريفات رئيسي (سيد) -> التابع (التفاصيل)الجداول. تذكر أن الجدول الرئيسي يُسمى غالبًا الجدول الأصلي، ويُسمى الجدول الثانوي غالبًا الجدول الفرعي.

ربما يرجع ذلك إلى كيفية تفسير هذه التعريفات في أنظمة إدارة قواعد البيانات (DBMS) المحلية وخادم SQL.

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


أرز. 18.1.

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

ولكن في خوادم قاعدة بيانات SQL هناك تعريف مختلف للعلاقات: عندما يشير حقل واحد في جدول إلى حقل في جدول آخر، يطلق عليه مفتاح غريب. والمجال الذي يشير إليه يسمى الوالدين أو المفتاح الأساسي. غالبًا ما يُطلق على الجدول الذي يحتوي على مفتاح خارجي (رابط إلى سجل في جدول آخر) اسم طفل، ويسمى جدول به مفتاح الوالدين- أبوي. أيضًا في تعريف العلاقات يقولون إن أحد الوالدين يمكن أن يكون لديه سجل فريد واحد فقط، والذي يمكن الرجوع إليه بواسطة عدة سجلات طاولة الطفل.

لذا، في المثال أعلاه، يحتوي جدول المبيعات على مفتاحين خارجيين: معرف المنتج، ومعرف العميل. وكلا الجدولين على الجانب الأيمن من الشكل لهما مفتاح الوالدين"المعرف". نظرًا لأن نفس العميل أو المنتج يمكن أن يظهر بشكل متكرر في جدول المبيعات، فقد اتضح أن كلا الجدولين الموجودين على الجانب الأيمن من الشكل هما الوالدين، والجدول الموجود على اليسار هو طفل. لأننا الآن ندرس إنترباس - SQLخادم قاعدة البيانات، وسوف نسترشد بهذه التعريفات في المحاضرات اللاحقة. وحتى لا نشغل أدمغتنا أكثر بهذا الارتباك، دعونا نتفق على الفور: طاولة الطفللديه مفتاح خارجي (المفتاح الخارجي) لجدول آخر.

المفتاح الأساسي

المفتاح الأساسي- المفتاح الأساسي هو أحد أنواع القيود الرئيسية في قاعدة البيانات. تم تصميم المفتاح الأساسي لتعريف السجل في الجدول بشكل فريد ويجب أن يكون فريدًا. توجد المفاتيح الأساسية PRIMARY KEY في الجداول، والتي تسمى عادة الأصل (الأصل). لا ينبغي الخلط بين المفتاح الأساسي والفهارس الأساسية لقواعد البيانات المحلية؛ فالمفتاح الأساسي ليس فهرسًا، ولكنه قيد. عند إنشاء مفتاح أساسي InterBaseيخلق له تلقائيا مؤشر فريد. ومع ذلك، إذا خلقنا مؤشر فريد، وهذا لن يخلق قيود المفتاح الأساسي. يمكن أن يحتوي الجدول على مفتاح أساسي واحد فقط، وهو PRIMARY KEY.

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

المفتاح الأساسي هو حقل واحد أو أكثر في الجدول، وتكون مجموعة هذه الحقول فريدة لكل سجل.

إذا كان المفتاح الأساسي يحتوي على عمود واحد (كما هو الحال في أغلب الأحيان)، يتم استخدام محدد المفتاح الأساسي عندما تعريف العمود:

إنشاء جدول Prim_1(Stolbec1 INT وليس المفتاح الأساسي الفارغ، Stolbec2 VARCHAR(50))

إذا كان المفتاح الأساسي مبنيًا على عدة أعمدة، فسيتم وضع المحدد بعد تحديد جميع الحقول:

إنشاء جدول Prim_2(Stolbec1 INT ليس فارغًا، Stolbec2 VARCHAR(50) ليس فارغًا، المفتاح الأساسي (Stolbec1، Stolbec2))

كما يتبين من الأمثلة، المفتاح الأساسي يجب أن يكون هناك قيد (أعمدة) NOT NULL.

فريد

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

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

إنشاء جدول Prim_3 (Stolbec1 INT ليس مفتاحًا أساسيًا فارغًا، Stolbec2 VARCHAR(50) ليس فريدًا فارغًا، Stolbec3 FLOAT ليس فارغًا فريدًا)

مفتاح غريب

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

الجداول

في قاعدة البيانات العلائقية، يتم تنظيم المعلومات في جداول علائقية، مقسمة إلى صفوف وأعمدة، عند التقاطع الذي توجد فيه قيم البيانات.

طاولة -هذا هيكل منتظم يتكون من مجموعة محدودة من السجلات من نفس النوع.

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

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

يحتوي أي جدول دائمًا على عمود واحد على الأقل. لا يحدد معيار ANSI/ISO الحد الأقصى لعدد الأعمدة لكل جدول، ولكن جميع أنظمة إدارة قواعد البيانات التجارية تقريبًا لها حد. في Firebird، هذا الحد هو 32767 عمودًا.

في نموذج البيانات العلائقية RMD، يتم استخدام مفهوم الصف للإشارة إلى صف العلاقة. تمثيل الطبقة المادية للصف هو صف في جدول قاعدة البيانات. صفوف الجدول ليس لها أسماء ولا ترتيب محدد. يمكن أن يحتوي الجدول على أي عدد من الصفوف. من المقبول تمامًا أن يكون لديك جدول به صفوف صفرية. يسمى هذا الجدول فارغًا. يحتفظ الجدول الفارغ بالبنية المحددة بواسطة أعمدته، ولا يحتوي إلا على بيانات. كقاعدة عامة، لا توجد قيود على عدد الصفوف في الجدول، وفي العديد من أنظمة إدارة قواعد البيانات (DBMS)، يقتصر حجم الجداول فقط على مساحة القرص الحرة للكمبيوتر. لدى أنظمة إدارة قواعد البيانات الأخرى حد ​​أقصى، لكنه مرتفع جدًا - حوالي ملياري صف، وأحيانًا أكثر.

دعونا نوضح بشكل أكثر وضوحًا بنية أحد الجداول في قاعدة بيانات التدريب (انظر الملحق أ). في التين. 1.1 يوضح هيكل جدول Abonent الذي يحتوي على معلومات حول المشتركين في شركات الإسكان والخدمات المجتمعية.

أرز. 1.1.هيكل الجدول العلائقي Abonent

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


يمثل كل عمود رأسي في الجدول مجموعة من القيم لسمة معينة لكائن ما. على سبيل المثال، يحتوي العمود AccountCD على أرقام حسابات المشتركين الفريدة. يحتوي عمود الهاتف على أرقام هواتف المشتركين.

يحتوي تقاطع كل صف مع كل عمود في الجدول على قيمة بيانات واحدة بالضبط. على سبيل المثال، في صف يمثل المشترك V.S. Konyukhov، يحتوي عمود Fio على القيمة "V.S. Konyukhov". يحتوي عمود AccountCD من نفس الصف على القيمة "015527"، وهي رقم الحساب الشخصي للمشترك بالاسم الكامل V. S. Konyukhov.

جميع القيم الموجودة في نفس العمود هي نفس نوع البيانات. على سبيل المثال، يحتوي عمود Fio على كلمات فقط، بينما يحتوي عمود StreetCD على أعداد صحيحة تمثل معرفات الشوارع. في نموذج البيانات العلائقية يسمى مجموع القيم التي تؤخذ منها القيم الفعلية لسمات محددة (أعمدة) اِختِصاص. مجال عمود Fio، على سبيل المثال، عبارة عن مجموعة من الأسماء الأخيرة والأسماء الأولى وأسماء العائلة (الاسم الكامل) للمشتركين. يتم تعريف كل عمود دائمًا في مجال واحد.

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

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

§ منطقية: SMALLINT. يمكن للحقول المحددة في هذا المجال أن تقبل فقط القيم الصحيحة التي تساوي 0 أو 1. ويتم تحقيق ذلك عن طريق فرض شرط التحقق (CHECK) في المجال على القيم التي يقبلها هذا المجال.

§ المال: رقمي(15,2). المجال مخصص لتعريف الحقول في الجداول التي تخزن المبالغ النقدية.

§ PKField: عدد صحيح. يتم استخدام المجال لتحديد المفاتيح الأساسية والخارجية للجداول. لا توجد متطلبات بيانات إلزامية (ليست فارغة) لهذا المجال. يتم فرضه عند الإعلان عن المفتاح الأساسي للجدول. يتم ذلك بحيث يمكن تعريف المفتاح الخارجي في هذا المجال دون شرط NOT NULL.

§ TMonth (الشهر): SMALLINT. المجال مخصص لتعريف الحقول في الجداول التي تحتوي على أرقام الأشهر. يمكن أن تكون القيم الصحيحة في مثل هذا الحقل في النطاق 1...12.

§ TYyear (السنة): SMALLINT. يهدف المجال إلى تحديد الحقول التي تحتوي على رقم السنة. يمكن أن تكون القيم الصحيحة في النطاق 1990...2100.

نظرًا لأن الصفوف الموجودة في الجدول العلائقي غير مرتبة، فلا يمكنك تحديد صف حسب رقمه في الجدول. لا يوجد صف "الأول" أو "الأخير" أو "الثالث عشر" في الجدول. إذن كيف يمكنك الإشارة إلى صف معين في الجدول، على سبيل المثال، صف للمشترك بالاسم الكامل Aksenov S.A.؟

عنصر البيانات الرئيسيةهو عنصر يمكن من خلاله تحديد قيم عناصر البيانات الأخرى.

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

المفتاح الأساسي -هي سمة أو مجموعة من السمات التي تحدد بشكل فريد كل صف في الجدول.

دعنا نعود إلى النظر إلى جدول Abonent الخاص بقاعدة بيانات التدريب (الشكل 1.1). للوهلة الأولى، يمكن أن يكون كل من عمود AccountCD وعمود Fio بمثابة المفتاح الأساسي لجدول Abonent. ومع ذلك، إذا تم تسجيل مشتركين بنفس الاسم الكامل، فلن يكون عمود Fio قادرًا على العمل كمفتاح أساسي. من الناحية العملية، يجب عادةً تحديد المعرفات مثل رقم الحساب الشخصي الفريد للمشترك (AccountCD في جدول Abonent)، ومعرف الشارع (StreetCD في جدول Street)، وما إلى ذلك، كمفاتيح أساسية للجداول.

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

إذا كان المفتاح الأساسي عبارة عن مجموعة من الأعمدة، فسيتم استدعاء هذا المفتاح الأساسي مركب.

المفاتيح الثانويةيتم تعيينها بواسطة الحقول التي يتم استخدامها غالبًا عند البحث عن البيانات أو فرزها. على عكس المفاتيح الأساسية، يمكن أن تحتوي حقول المفاتيح الثانوية على قيم غير فريدة.