مخطط الكيانات والعلاقات ERD
نرسم المخطط قبل أن نبني الجداول. ⏱ نحو 25 دقيقة.
- تشرح مراحل النمذجة: المفاهيمي والمنطقي والمادي.
- تميّز الكيان والخاصية والمفتاح والعلاقة، وأنواع الخصائص.
- تقرأ مخطط
ERDبترميزي تشن وقدم الغراب. - تستخرج الكيانات والعلاقات من وصف نظام، وتختار المفتاح الأساسي.
١النمذجة قبل البناء
لا يبني المهندس عمارة قبل المخطط، ولا نبني قاعدة بيانات قبل أن نرسم نموذج البيانات. وتمر النمذجة بثلاث مراحل:
| المرحلة | السؤال | الناتج |
|---|---|---|
| المفاهيمي Conceptual | ما الأشياء التي نخزّن عنها بيانات؟ وما العلاقات بينها؟ | مخطط كيانات وعلاقات مبسّط يفهمه صاحب العمل. |
| المنطقي Logical | ما خصائص كل كيان؟ وما مفاتيحه؟ | مخطط تفصيلي بالأعمدة والمفاتيح، مستقل عن نوع النظام. |
| المادي Physical | كيف ننفّذه في MySQL؟ | أوامر CREATE TABLE بأنواع البيانات والقيود والفهارس. |
لغة نمذجة البيانات رموز متفق عليها نرسم بها هذا النموذج، وأشهرها مخطط الكيانات والعلاقات Entity Relationship Diagram، واختصاره ERD.
٢الكيان والخاصية والمفتاح
| العنصر | معناه | مثال في الكلية |
|---|---|---|
| الكيان Entity | شيء أو شخص أو حدث نخزّن عنه بيانات. يصير جدولًا. | طالب، مقرر، قسم |
| النسخة Instance | فرد واحد من الكيان. يصير صفًّا. | الطالب أحمد السلمي |
| الخاصية Attribute | معلومة عن الكيان. تصير عمودًا. | الاسم، المعدل، المدينة |
| المفتاح Key | خاصية تميّز كل نسخة عن غيرها. | رقم الطالب |
| العلاقة Relationship | رابط بين كيانين. | الطالب يسجّل في المقرر |
وللخصائص أنواع تؤثر في التصميم:
| نوع الخاصية | مثال | كيف نعالجها في الجداول؟ |
|---|---|---|
| بسيطة Simple | المدينة | عمود واحد. |
| مركّبة Composite | الاسم الكامل: الأول + العائلة | عمودان أو أكثر إن احتجنا البحث بالجزء. |
متعددة القيم Multi-valued | أرقام جوالات الطالب | جدول مستقل، لا أعمدة جوال1 و جوال2. |
| مشتقة Derived | العمر (يُحسب من سنة الميلاد) | لا نخزّنها؛ نحسبها في الاستعلام. |
-- العمر خاصية مشتقة: نحسبه ولا نخزّنهSELECT name, birth_year, 2026 - birth_year AS ageFROM studentsWHERE id <= 1004;
| name | birth_year | age |
|---|---|---|
| أحمد السلمي | 2005 | 21 |
| محمد الجهني | 2004 | 22 |
| عمر الحربي | 2005 | 21 |
| يوسف المالكي | 2006 | 20 |
٣ترميزان لرسم المخطط
ترميز تشن Chen: الأقدم، ويظهر في الكتب والشرح النظري:
ترميز قدم الغراب Crow's Foot: الأشهر في العمل والأدوات مثل MySQL Workbench. كل كيان صندوق، والخصائص قائمة داخله، والمفتاح الأساسي مميَّز بـ PK:
٤من النص إلى الكيانات
كيف تجد الكيانات في وصف نظام؟ اقرأ الوصف وضع خطًّا تحت الأسماء (كيانات أو خصائص) وتحت الأفعال (علاقات):
«مكتبة الكلية فيها كتب، لكل كتاب عنوان ورقم ISBN وسنة نشر. الأعضاء لهم رقم عضوية واسم وجوال. يستعير العضو الكتاب لمدة أسبوعين، ونسجل تاريخ الإعارة.»
| ما وجدناه | نوعه |
|---|---|
| كتاب، عضو | كيانان (أسماء لها خصائص خاصة بها) |
| عنوان، ISBN، سنة النشر | خصائص الكتاب، و ISBN مرشّح ليكون المفتاح |
| رقم العضوية، الاسم، الجوال | خصائص العضو، ورقم العضوية مفتاح |
| يستعير | علاقة بين العضو والكتاب |
| تاريخ الإعارة | خاصية للعلاقة نفسها، لا للعضو ولا للكتاب |
٥اختيار المفتاح الأساسي
| النوع | مثال | ميزة | عيب |
|---|---|---|---|
| مفتاح طبيعي Natural | رقم الهوية الوطنية، ISBN | له معنى حقيقي. | قد يتغير، أو يكون حساسًا، أو غير متوفر للجميع. |
| مفتاح بديل Surrogate | رقم تسلسلي 1، 2، 3… | بسيط، لا يتغير أبدًا، يولّده النظام. | لا معنى له خارج القاعدة. |
الشائع في العمل: مفتاح بديل رقمي اسمه id، ومعه قيد UNIQUE على المفتاح الطبيعي إن وُجد، مثل البريد أو الهوية.
توقّع وتحقّق
«طالب» في نظام الكلية:
«العمر» حين نعرف سنة الميلاد خاصية:
في ترميز تشن، المعين يمثّل:
الأفعال في وصف النظام غالبًا:
الخلاصة
- النمذجة: مفاهيمي ← منطقي ← مادي
(CREATE TABLE). - الكيان يصير جدولًا، والنسخة صفًّا، والخاصية عمودًا.
- الخاصية المتعددة القيم جدول مستقل، والمشتقة لا تُخزَّن.
- الأسماء كيانات وخصائص، والأفعال علاقات.
- المفتاح البديل
idشائع، معUNIQUEعلى المفتاح الطبيعي.
تحدٍّ تصميمي: كيانات عيادة الأسنان
متوسطعيادة أسنان تريد نظامًا: «للمريض رقم ملف واسم وجوال وتاريخ ميلاد. للطبيب رقم واسم وتخصص. يحجز المريض موعدًا عند طبيب، ونسجل تاريخ الموعد ووقته وسببه.» ارسم مخطط الكيانات بترميز قدم الغراب (ورقيًّا أو في draw.io)، ثم سلّمه لمعلمك.
- حدد الكيانات من الأسماء، والعلاقات من الأفعال.
- ارسم كل كيان صندوقًا فيه خصائصه، وميّز المفتاح الأساسي بـ PK.
- لا تخزّن العمر؛ فهو مشتق من تاريخ الميلاد.