نمذجة ER وتعددية العلاقات
تحويل المتطلبات إلى كيانات وعلاقات وجداول ربط
نمذجة ER وتعددية العلاقات درس مجاني في SQL Interview Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
لماذا تظهر نمذجة ER في المقابلات
بعد التطبيع، يختبر المحاورون قدرتك على تحويل المتطلبات إلى مخطط. يكون السؤال عادةً مفتوحًا: «صمّم قاعدة بيانات لتطبيق مشاركة الرحلات» أو «نمذج نظام مكتبة.»
هذا تمرين على نمذجة الكيانات والعلاقات (ER). وهم يراقبون كيفية تحديدك للكيانات والسمات والعلاقات بينها، بما في ذلك التعددية.
المهارة هي تحويل الأسماء والأفعال الإنجليزية إلى جداول ومفاتيح خارجية.
الكيانات والسمات والعلاقات
تكوّن ثلاثة مكونات أساسية كل نموذج من نماذج ER:
- الكيان: شيء نخزّن بيانات عنه، مثل العميل والطلب والمنتج. وعادةً ما يتحول إلى جدول.
- السمة: خاصية لكيان، مثل الاسم والسعر وcreated_at. وعادةً ما تتحول إلى عمود.
- العلاقة: كيفية اتصال الكيانات، مثل أن يضع العميل طلبًا. وتُنفَّذ باستخدام المفاتيح الخارجية أو جداول الربط.
نصيحة مستخلصة من السؤال: الأسماء تصبح كيانات أو سمات، والأفعال تصبح علاقات.
التعددية: المفهوم الأساسي
تصف التعددية عدد مثيلات كيان ما التي ترتبط بكيان آخر. والفئات الثلاث هي:
- واحد إلى واحد (1:1): يطابق صف واحد هنا صفًا واحدًا على الأكثر هناك.
- واحد إلى متعدد (1:N): يطابق صف واحد هنا عدة صفوف هناك، وهي الحالة الأكثر شيوعًا.
- متعدد إلى متعدد (M:N): تطابق الصفوف على كلا الجانبين عدة صفوف في الجانب الآخر.
يحدد تحديد التعددية بشكل صحيح مواضع المفاتيح الخارجية وما إذا كنت تحتاج إلى جدول ربط.
تنفيذ علاقة واحد إلى متعدد
تُنفَّذ علاقة الواحد إلى المتعدد بوضع المفتاح الخارجي في جانب «المتعدد». فلدى العميل طلبات متعددة، ولذلك يحمل كل صف من صفوف الطلبات customer_id.
اذكر الاتجاه دائمًا بوضوح في المقابلة: «عميل واحد يقابله عدد كبير من الطلبات، ولذلك يوجد المفتاح الخارجي في orders.»
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);تنفيذ علاقة متعدد إلى متعدد
لا تستطيع قاعدة البيانات العلائقية تخزين علاقة M:N مباشرة. والإجابة التي يتوقعها المحاورون هي جدول ربط، ويُسمى أيضًا جدولًا وسيطًا أو وصلة أو ترابطيًا.
يلتحق الطلاب بعدة مقررات، ويضم كل مقرر عدة طلاب. أنشئ جدول enrollments يكون مفتاحه مكوّنًا من المفتاحين الخارجيين معًا. وبذلك تتحول علاقة M:N إلى علاقتي 1:N.
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY,
title VARCHAR(100)
);
CREATE TABLE enrollments (
student_id INT,
course_id INT,
enrolled_at DATE,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);يمكن لجدول الربط تخزين البيانات
سؤال متابعة شائع هو: «أين تخزّن الدرجة التي حصل عليها الطالب في مقرر؟»
تنتمي الدرجة إلى العلاقة، لا إلى الطالب أو المقرر وحده. لذلك توضع في جدول الربط. وهذه هي الفكرة التي يختبرها المحاورون: تعيش سمات علاقة M:N في الجدول الوسيط.
ومن أمثلتها: تاريخ الالتحاق، والدرجة، والكمية في بند الطلب، والدور في عضوية مشروع.
ALTER TABLE enrollments
ADD COLUMN grade CHAR(2);
-- grade describes THIS student in THIS course,
-- so it belongs on the junction tableتنفيذ علاقة واحد إلى واحد
العلاقة 1:1 أقل شيوعًا. وتُنفَّذ بمنح الجدول التابع مفتاحًا خارجيًا يكون أيضًا مفتاحًا فريدًا، وغالبًا ما يكون المفتاح الأساسي نفسه.
مثال: user وuser_profile اللذان يحتويان على تفاصيل إضافية ممتدة واختيارية. ويضمن جعل user_id المفتاح الأساسي لجدول الملف الشخصي وجود ملف شخصي واحد على الأكثر لكل مستخدم.
CREATE TABLE users (
user_id INT PRIMARY KEY,
email VARCHAR(255)
);
CREATE TABLE user_profiles (
user_id INT PRIMARY KEY, -- 1:1 enforced here
bio TEXT,
avatar_url VARCHAR(255),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);الاختيارية والمشاركة
للتعددية بُعد ثانٍ يحبه المحاورون: الاختيارية، وتُسمى أيضًا المشاركة.
- إلزامية: يجب أن يكون لكل طلب عميل، ولذلك تكون قيمة
customer_idهيNOT NULL. - اختيارية: قد يكون للمستخدم ملف شخصي أو لا يكون، ولذلك يمكن أن تكون العلاقة غائبة.
تعبّر عن المشاركة الإلزامية باستخدام NOT NULL على المفتاح الخارجي. ويُظهر ذكر قابلية NULL لأنك تفكر في القيود الواقعية، لا في الأشكال فقط.
العلاقات ذاتية الإشارة
تشير بعض العلاقات إلى الكيان نفسه. فالموظف لديه مدير هو أيضًا موظف، والفئة لها فئة أب.
تنمذج ذلك باستخدام مفتاح خارجي يشير إلى الجدول نفسه. ويتوقع المحاورون هذا النمط في المخططات التنظيمية وبنى الأشجار، كما أنه يرتبط طبيعيًا بعمليات الربط الذاتي وCTE التكرارية.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
manager_id INT NULL,
FOREIGN KEY (manager_id) REFERENCES employees(employee_id)
);
-- manager_id NULL = top of the hierarchy (e.g. CEO)شرح تطبيقي قصير للنمذجة
تدرّب على أسلوب تحويل الفعل إلى علاقة. السؤال هو: «يضع العملاء الطلبات؛ ويحتوي كل طلب على عدة منتجات؛ وتنتمي المنتجات إلى المورّدين.»
- العميل 1:N الطلب (المفتاح الخارجي customer_id في orders).
- الطلب M:N المنتج -> جدول الربط
order_items، مع quantity. - المورّد 1:N المنتج (المفتاح الخارجي supplier_id في products).
اذكر كل تعددية وموضع المفتاح. فهذا الشرح هو ما يحقق لك النجاح في المقابلة.
أسئلة توضيحية ينبغي طرحها
يكافئ المحاورون المرشحين الذين يطرحون الأسئلة قبل التصميم. ومن الأسئلة التوضيحية الجيدة:
- «هل يمكن أن ينتمي المنتج إلى أكثر من مورّد؟» (يحدد ما إذا كانت العلاقة 1:N أم M:N).
- «هل يجب أن يحتوي كل طلب على عنصر واحد على الأقل؟» (المشاركة).
- «هل نحتاج إلى السجل التاريخي، أم إلى الحالة الحالية فقط؟» (يؤدي إلى إنشاء جداول إضافية).
تغيّر الإجابات التعددية وعدد الجداول، لذلك لا تفترض. فطرح الأسئلة علامة على مستوى الخبرة.
تحقق سريع
أنت تنمذج الطلاب والمقررات، حيث يمكن لكل طالب الالتحاق بعدة مقررات، ولكل مقرر عدة طلاب.
مراجعة: نمذجة ER والكاردينالية
يمكنكم الآن التعامل مع سؤال مفتوح حول تصميم مخطط قاعدة البيانات:
- حوّلوا الأسماء إلى كيانات/سمات، والأفعال إلى علاقات.
- 1:N: يكون المفتاح الأجنبي في جهة الأطراف المتعددة.
- M:N: استخدموا جدول ربطًا يحتوي على كلا المفتاحين الأجنبيين، بالإضافة إلى أي سمات للعلاقة.
- 1:1: استخدموا مفتاحًا مشتركًا/فريدًا في الجدول التابع.
- استخدموا
NOT NULLللتعبير عن المشاركة الإلزامية، والمفاتيح الأجنبية ذاتية الإشارة لتمثيل التسلسلات الهرمية. - اطرحوا أسئلة توضيحية قبل تحديد الكاردينالية.
الأسئلة الشائعة
هل درس «نمذجة ER وتعددية العلاقات» مجاني؟
نعم — نص درس «نمذجة ER وتعددية العلاقات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «نمذجة ER وتعددية العلاقات»؟
تحويل المتطلبات إلى كيانات وعلاقات وجداول ربط تتمرن على SQL Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Interview Prep؟
لا تُشترط خبرة سابقة. SQL Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «نمذجة ER وتعددية العلاقات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Interview Prep هذا؟
نعم. كل درس في SQL Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التطبيع حتى 3NF
- نمذجة ER وتعددية العلاقات
- مخطط النجمة وتصميم مستودع البيانات
- مجموعة مسائل مقابلة تجريبية كاملة