المفاتيح الأساسية والخارجية والقيود
شرح المفاتيح والتفرّد والتكامل المرجعي بالطريقة التي يريد مسؤول المقابلة سماعها
المفاتيح الأساسية والخارجية والقيود درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
لماذا تظهر المفاتيح في كل مقابلة تقريبًا
بعد تعريف SQL، ينتقل القائمون على المقابلات إلى المفاتيح والقيود. والمفهوم الذي يربط بينها هو سلامة البيانات: وهي القواعد التي تفرضها قاعدة البيانات لمنع إدخال بيانات غير صحيحة.
ما هو المفتاح الأساسي
يحدد المفتاح الأساسي كل صف بشكل فريد. وهو دائمًا فريد وNOT NULL، ولا يحتوي الجدول على أكثر من مفتاح أساسي واحد. اذكروا ذلك بوضوح لتحصلوا على نقاط إضافية.
CREATE TABLE customers (
id INTEGER PRIMARY KEY,
email VARCHAR(255) NOT NULL,
name VARCHAR(100)
);المفاتيح الطبيعية مقابل البديلة
هل تستخدمون بيانات حقيقية أم رقمًا مُولّدًا؟ يستخدم المفتاح الطبيعي بيانات فريدة موجودة أصلًا، بينما يكون المفتاح البديل معرّفًا مُولّدًا. تفضّل معظم الفرق المفاتيح البديلة لأنها مستقرة.
المفاتيح الأساسية المركبة
يمكن أن يمتد المفتاح الأساسي إلى أكثر من عمود واحد، وعندها يُسمى مفتاحًا مركبًا. وتظهر هذه المفاتيح في جداول الربط، حيث يحدد مفتاحان أجنبيان معًا كل صف.
CREATE TABLE enrollments (
student_id INTEGER,
course_id INTEGER,
enrolled_on DATE,
PRIMARY KEY (student_id, course_id)
);المفتاح الأساسي مقابل قيد التفرد
هذا سؤال مضمون تقريبًا: المفتاح الأساسي مقابل قيد التفرد. فكلاهما يفرض التفرد، لكن للجدول مفتاح أساسي واحد فقط، ويكون NOT NULL، بينما يمكن أن يحتوي على عدة قيود تفرد، ويسمح كل منها بقيمة NULL.
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email VARCHAR(255) UNIQUE,
username VARCHAR(50) UNIQUE
);ما هو المفتاح الأجنبي
يشير المفتاح الأجنبي إلى المفتاح الأساسي لجدول آخر، ويفرض السلامة المرجعية: فلا يمكنكم إضافة صف تابع يشير إلى صف أصل غير موجود.
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER REFERENCES customers(id),
amount NUMERIC(10,2)
);إجراءات السلامة المرجعية: ON DELETE / ON UPDATE
«ماذا يحدث للطلبات إذا حُذف العميل؟» هذا هو دور إجراء السلامة المرجعية: إذ يمنع RESTRICT العملية، وهو الإعداد الافتراضي، ويحذف CASCADE الصفوف التابعة، بينما يمسح SET NULL قيمة المفتاح.
CREATE TABLE order_items (
id INTEGER PRIMARY KEY,
order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE
);NOT NULL وCHECK وDEFAULT
تستكمل ثلاثة قيود أخرى سلامة البيانات: يمنع NOT NULL القيم المفقودة، ويفرض CHECK قاعدة مثل stock >= 0، بينما يوفر DEFAULT قيمة بديلة.
CREATE TABLE products (
id INTEGER PRIMARY KEY,
price NUMERIC(10,2) NOT NULL DEFAULT 0,
stock INTEGER CHECK (stock >= 0)
);مثال تطبيقي: التصميم مع مراعاة سلامة البيانات
لنصمم جدول إعارات لمكتبة. يستخدم الكود أدناه مفتاحين أجنبيين، وتاريخ استحقاق لا يقبل NULL، وقاعدة تفرد تمنع إعارة الكتاب نفسه مرتين في الوقت ذاته.
CREATE TABLE loans (
id INTEGER PRIMARY KEY,
book_id INTEGER NOT NULL REFERENCES books(id),
member_id INTEGER NOT NULL REFERENCES members(id),
due_date DATE NOT NULL,
returned BOOLEAN DEFAULT false
);كيفية التحدث عن سلامة البيانات
اذكروا أنواع السلامة الثلاثة لإظهار عمق فهمكم: سلامة الكيان التي تضمنها المفاتيح الأساسية، والسلامة المرجعية التي تضمنها المفاتيح الأجنبية، وسلامة المجال التي تضمنها NOT NULL وCHECK والأنواع.
إضافة قيود إلى جدول موجود
هل طُلب منكم إضافة قيود إلى جدول موجود؟ استخدموا ALTER TABLE ... ADD CONSTRAINT. ومن التفاصيل المهمة التي تستحق الذكر أن العملية قد تفشل إذا كانت الصفوف الحالية تخالف القاعدة الجديدة مسبقًا.
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id) REFERENCES customers(id);تحقق سريع
ميّزوا بين المفتاح الأساسي وقيد التفرد.
مراجعة
مراجعة: المفتاح الأساسي فريد ولا يقبل NULL، ويوجد مفتاح واحد منه لكل جدول؛ أما قيد التفرد فيسمح بقيمة NULL، ويمكن أن يحتوي الجدول على عدة قيود منه؛ ويفرض المفتاح الأجنبي السلامة المرجعية.
الأسئلة الشائعة
هل درس «المفاتيح الأساسية والخارجية والقيود» مجاني؟
نعم — نص درس «المفاتيح الأساسية والخارجية والقيود» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «المفاتيح الأساسية والخارجية والقيود»؟
شرح المفاتيح والتفرّد والتكامل المرجعي بالطريقة التي يريد مسؤول المقابلة سماعها تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟
لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «المفاتيح الأساسية والخارجية والقيود»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟
نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما هي SQL ولماذا يسأل عنها مسؤولو المقابلات؟
- ترتيب تنفيذ الاستعلام المنطقي
- المفاتيح الأساسية والخارجية والقيود
- قراءة مخطط قاعدة البيانات تحت الضغط