المفاتيح: الأساسي والأجنبي والمرشح
المفاتيح: الأساسي والأجنبي والمرشح
لا قيمة لجدول قاعدة بيانات مليء بالصفوف إن لم تستطع تحديد كل صف بشكل موثوق، وتتبع ارتباطه بصفوف في جداول أخرى، وفرض سلامة البيانات آليًا. هذا بالضبط ما تفعله المفاتيح. فهم الأنواع الثلاثة الرئيسية — المفتاح الأساسي والمفتاح الأجنبي والمفتاح المرشح — هو الأساس الذي يحوّل مخطط العلاقات (ERD) المفاهيمي إلى مخطط قاعدة بيانات حقيقي وقابل للتنفيذ.
أهمية المفاتيح في التحليل
خلال جمع المتطلبات تحدد الكيانات (عميل، طلب، منتج). وفي مرحلة نمذجة البيانات يتعين عليك أن تقرر كيف يُعرَّف كل كيان بشكل فريد وكيف تُنفَّذ العلاقات بين الكيانات فعليًا في قاعدة البيانات. المفاتيح هي التي تُجيب على كلا السؤالين. المفتاح المفقود أو المختار بشكل سيء يُفضي إلى سجلات مكررة وإشارات مرجعية مكسورة واستعلامات تُرجع بيانات خاطئة — مشكلات تظهر متأخرًا وتكون مُكلفة الإصلاح.
المفاتيح المرشحة
المفتاح المرشح هو أي سمة (أو مجموعة أدنى من السمات) يمكنها أن تعمل معرّفًا فريدًا لكل صف في كيان ما. كلمة "مرشح" تعني أنه مؤهل للاختيار لكنه لم يُختر بعد. شروط المفتاح المرشح:
- التفرد: لا يجوز أن يتشارك صفّان في نفس القيمة.
- الإرجاعية (الحد الأدنى): حذف أي سمة من مفتاح مرشح مركّب يُفسد التفرد.
- عدم القابلية للإهمال: لا يجوز أن تكون قيمة المفتاح المرشح فارغة (NULL).
مثال — كيان Patient في نظام حجز عيادة قد يمتلك هذه المفاتيح المرشحة:
patient_id— رقم يُولّده النظام، فريد دائمًا.national_id— رقم الهوية الوطنية، فريد لكل شخص.email— إن فرضت العيادة حسابًا واحدًا لكل بريد إلكتروني.
الثلاثة مؤهلة كمفاتيح مرشحة. عليك اختيار واحد لترقيته إلى مفتاح أساسي، والباقي تُصبح مفاتيح بديلة (يُفرض تفردها عادةً بقيد UNIQUE في قاعدة البيانات).
patient_id هو مفتاح اصطناعي — رقم لا معنى له سوى التعريف. أما national_id فهو مفتاح طبيعي — موجود في العالم الحقيقي. كلاهما صالح كمفتاح مرشح. يُفضَّل عادةً استخدام المفاتيح الاصطناعية كمفاتيح أساسية لأنها لا تتغير ولا تحمل معنى وظيفيًا قد يصبح قديمًا.
المفتاح الأساسي
المفتاح الأساسي (PK) هو المفتاح المرشح الواحد الذي يُعيّنه المحلل (ثم مصمم قاعدة البيانات) معرّفًا رسميًا للكيان. يجب أن تحمل كل صف في الجدول قيمةً للمفتاح الأساسي، وأن تكون فريدة، وألا تتغير طوال دورة حياة السجل.
في مخطط ERD بنظام قدم الغراب، تُكتب سمة المفتاح الأساسي في أعلى صندوق الكيان وتُوسم بـ PK.
قواعد عملية لاختيار المفتاح الأساسي:
- فضّل القيم الثابتة — أرقام الهاتف وعناوين البريد الإلكتروني تتغير؛ الرقم الاصطناعي لا يتغير.
- فضّل القيم الصغيرة — عدد صحيح 4 بايت أسرع في الفهرسة والربط من نص بـ200 حرف.
- فضّل القيم عديمة المعنى — تضمين منطق الأعمال في المفتاح الأساسي يُولّد هشاشة عندما يتغير ذلك المنطق.
المفتاح الأجنبي
المفتاح الأجنبي (FK) هو سمة في كيان (الابن) تُطابق قيمها قيم المفتاح الأساسي في كيان آخر (الأب). وهو التطبيق الفعلي لخط العلاقة في مخطط ERD داخل قاعدة البيانات.
مثال على متجر إلكتروني: الطلب Order ينتمي إلى عميل Customer. يحتوي جدول Order على عمود customer_id يجب أن تتطابق قيمه دومًا مع قيم موجودة في جدول Customer. ذلك العمود في Order هو المفتاح الأجنبي.
تفرض المفاتيح الأجنبية السلامة المرجعية: يرفض محرك قاعدة البيانات أي محاولة لإضافة طلب لعميل غير موجود، أو حذف عميل لا يزال لديه طلبات (ما لم تسمح قاعدة التتالي بذلك).
customer_id. وهذا هو الهدف — إذ يُعبّر عن العلاقة من واحد إلى متعدد.
قراءة المفاتيح في مخطط ERD بنظام قدم الغراب
يُظهر المخطط التالي مخطط حجز عيادة مبسّطًا بثلاثة كيانات: Patient وAppointment وDoctor. لاحظ علامتَي PK وFK وخطوط قدم الغراب التي تُوضح الكميّة.
لاحظ أن كيان Appointment يحمل مفتاحَين أجنبيَّين — patient_id وdoctor_id. هذه هي الطريقة التي تُنفَّذ بها العلاقتان فعليًا في قاعدة البيانات. بدون هذين المفتاحَين لن تستطيع صفوف Appointment الإشارة إلى المريض أو الطبيب الصحيح.
المفاتيح الأساسية المركّبة
أحيانًا لا تكفي سمة واحدة لتحديد الصف بشكل فريد، فيجب أن يتشكّل المفتاح الأساسي من مجموعة سمات. هذا شائع في الكيانات الترابطية — الجداول التي تحلّ علاقات المتعدد مع المتعدد. مثلًا في نظام مكتبة، قد يتكوّن المفتاح الأساسي لكيان BookLoan من member_id + book_id + loan_date، لأن العضو نفسه قد يستعير الكتاب ذاته في تواريخ مختلفة، غير أن لا قرضَين يتشاركان الثلاثة معًا في آنٍ واحد.
loan_id اصطناعيًا وجعل الأعمدة الثلاثة قيدًا UNIQUE بدلًا من ذلك. كلا الأسلوبَين صحيح. المفاتيح الاصطناعية تُبقي أعمدة المفاتيح الأجنبية صغيرة؛ أما المفاتيح المركّبة فتتجنب عمودًا إضافيًا. ناقش هذه المقايضة مع مصمم قاعدة البيانات ووثّق القرار في قاموس البيانات (يُغطَّى في الدرس 9).
كيف تظهر المفاتيح في مخطط ERD — مثال ثانٍ
يُوسّع المخطط التالي مثال المتجر الإلكتروني، ويُظهر كيان OrderLine الترابطي بمفتاح أساسي مركّب، موضحًا كيف يُحدّد عمودَا المفتاح الأجنبي معًا كل صف في الجدول.
ملخص: اختيار المفاتيح وتوثيقها
مهامك كمحلل نظم في ما يتعلق بالمفاتيح:
- سرد المفاتيح المرشحة لكل كيان خلال جلسة نمذجة البيانات مع أصحاب المصلحة.
- تعيين المفتاح الأساسي — فضّل المفتاح الاصطناعي الثابت الصغير عديم المعنى ما لم يكن المفتاح الطبيعي أوضح بشكل قاطع.
- تعليم المفاتيح الأجنبية على المخطط والتحقق من أنها تُشير إلى المفتاح الأساسي الصحيح للأب، مع توثيق قواعد التتالي (تقييد، ضبط كـ null، حذف متتالٍ).
- تسجيل المفاتيح البديلة في قاموس البيانات مع قيود التفرد الخاصة بها.