مخططات الكائن-العلاقة والتطبيع
| English | العربية |
|---|---|
| entity-relationship diagram/ˈentɪti rɪˈleɪʃənʃɪp ˈdaɪəɡræm/ | مخطط الكائنات والعلاقات |
| normalisation/ˌnɔːməlaɪˈzeɪʃn/ | التطبيع |
| entity/ˈentɪti/ | كائن |
| cardinality/ˌkɑːdɪˈnælɪti/ | الكاردينالية |
| one-to-many/wʌn tə ˈmeni/ | واحد إلى متعدد |
| many-to-many/ˈmeni tə ˈmeni/ | متعدد إلى متعدد |
| link table/lɪŋk ˈteɪbl/ | جدول الروابط |
| normal forms/ˈnɔːml fɔːmz/ | الصيغ الطبيعية |
| atomic/əˈtɒmɪk/ | ذرية |
| transitive dependency/ˈtrænsɪtɪv dɪˈpendənsi/ | التبعيات الانتقالية |
أربعون صفاً لتغيير رقم هاتف واحد
- تحتفظ المدرسة بسجلات تسجيل الطلاب في ورقة حساب واحدة. كل صف يمثل طالبًا واحداً في course واحد، ويحمل كل صف أيضًا معلم الإشراف للطالب ورقم هاتف المعلم.
- يتغير رقم المعلم. يجب تعديل أربعون صفاً. تم تعديل ثلاث وتسعين منها. طوال العام المتبقي، يعكس قائمة الكورس واحد شخصاً غريباً.
- لم يحدث خطأ في الكتابة. العيب كان في التصميم: حُفظت حقيقة تخص المعلم مرة واحدة لكل تسجيل، مما جعلها صحيحة في مكان واحدة وخاطئة في مكان آخر.
- تتناول هذه الدرس أداتَي التصميم اللتين تمنعان ذلك: مخطط الكيانات والعلاقات، الذي يرسم البنية، والتطبيع، الذي يزيل التكرار.
مخططات الكيانات والعلاقات
- مخطط الكيانات والعلاقات (E-R diagram) يوثق تصميم قاعدة البيانات: كل كيان عبارة عن مستطيل، وكل علاقة خط بين مستطيلين، والكاردينالية تُرمز عند كل طرف.
- في تدوين "قدم الغراب"، يعني الشريط الواحد "واحدًا" والقدم ذات الثلاثة أذرع تعني "العديد". اقرأ كل خط في كلا الاتجاهين: كل عميل يضع العديد من الطلبات؛ كل طلب وضعه عميل واحد.
- يُرسم المخطط قبل إنشاء أي جدول، وتُصبح العلاقات الموجودة عليه المفاتيح الأجنبية.

مستطيل واحد لكل كيان، وخط واحد لكل علاقة

شريط للواحد، وقدم للعديد
في مخطط الكائن-العلاقة، عدد كائن من نوع يمكن أن يرتبط بكائن واحد من النوع الآخر، المُشار إليه عند كل طرف من الخط، هو ____.
الكاردينالية تكون واحدًا أو عديدًا عند كل طرف؛ ترميز قدم الغراب يرسم شريطًا للواحد وقدمًا للعديد.
الأنواع الثلاثة للعلاقات
- واحد إلى واحد (1:1): كل عضو له بطاقة مكتبة واحدة وكل بطاقة تنتمي لععضو واحد. نادرة؛ غالبًا ما يتم دمج الكيانين في جدول واحد.
- واحد إلى许多 (1:M): عميل واحد يضع طلبات كثيرة؛ كل طلب ينتمي لعميل واحد. يتم تطبيقه بوضع المفتاح الأساسي لطرف "الواحد" في جدول طرف "العديد" كمفتاح أجنبي.
- كثير إلى كثير (M:N): طالب يسجل في دورات عديدة والدورة تضم طلابًا كثر. لا يمكن تطبيقها مباشرة؛ تحتاج إلى جدول رابط.
يمكن لكل عميل وضع طلبات عديدة، لكن كل طلب يخص عميلًا واحدًا. هذه العلاقة هي:
عميل واحد ← طلبات عديدة، كل طلب ← عميل واحد: علاقة واحد إلى متعدد.
طابق كل علاقة بكردينالتها.
1:1 كل طرف لديه واحد؛ 1:M طرف لديه عديد؛ M:N كلا الطرفين لديهما عديد (يتطلب جدول رابط).
مثال محلول: ارسم مخطط E-R
- المدرسة تحتوي على معلمين، فصول، وطلاب. كل معلم يدرّس فصولًا عديدة؛ كل فصل يُدرَّس بواسطة معلم واحد. كل فصل يحتوي على طلاب كثر؛ كل طالب موجود في فصل واحد. قد ينضم الطلاب إلى نوادي عديدة وكل نادي يضم طلابًا كثر.
- أربعة مستطيلات:
TEACHER،CLASS،STUDENT،CLUB.TEACHER—CLASSهي علاقة واحد إلى many، القدم عندCLASS.CLASS—STUDENTهي علاقة واحد إلى many، القدم عندSTUDENT.STUDENT—CLUBهي علاقة كثير إلى كثير، قدم عند الطرفين. - العلامات: كل كيان موجود، كل relationship مرسوم، والرمز الصحيح للكاردينالية عند كل طرف. الخط بدون رموز هو نصف الإجابة.
الجداول الرابطية
- يتم تحويل علاقة كثير إلى كثير إلى علاقتي واحد إلى many عبر جدول رابط يحمل المفتاحين الأجانب.
ENROLMENT(StudentID, CourseID, EnrolmentDate): طالب واحد له registrations عديدة، دورة واحدة لها registrations عديدة، وكل صف يمثل طالبًا واحدًا في دورة واحدة. مفتاحها الأساسي هو مركب من المفتاحين الأجانب.- بيانات حول الاقتران نفسه، التاريخ، الدرجة، توضع في الجدول الرابطي؛ بيانات حول الطالب أو الدورة تبقى في جدولها الخاص.

تتحول علاقة كثير إلى كثير إلى علاقتي واحد إلى many
كيف يتم تنفيذ علاقة متعدد-إلى-متعدد في قاعدة بيانات علائقية؟
يحتوي جدول الرابط (الجسر) على مفتاح أجنبي لكل جانب، مما يحول M:N إلى علاقتين 1:M.
(StudentID, CourseID, EnrolmentDate) هو جدول رابط. أي العبارات التالية صحيحة؟ حدد جميع الخيارات المطبقة.
يحتوي جدول الرابط على الزوجية وحقائق حول الزوجية. تبقى بيانات الطالب الخاصة به في جدول STUDENT، وإلا ستتكرر في كل تسجيل.
التطبيع
- التطبيع ينظم الجداول بحيث يُخزن كل معلومة مرة واحدة فقط، مما يقلل التكرار والتناقض. يمر عبر الأشكال الطبيعية بالترتيب: الأولى، الثانية، الثالثة.
- الإجراء: تحديد الكيانات وسماتها؛ اختيار مفتاح أساسي لكل منها؛ إزالة المجموعات المتكررة والقيم غير الذرية (1NF)؛ إزالة السمات التي تعتمد فقط على جزء من المفتاح المركب (2NF)؛ إزالة السمات التي تعتمد على سمة أخرى غير مفتاحية (3NF)؛ إضافة مفاتيح أجنبية للعلاقات.
- التكلفة هي جداول أكثر وروابط أكثر. الامتحان يطلب الشكل الطبيعي الثالث (3NF).
معمل خدمة قواعد البيانات
شاهد كيف يحول نظام إدارة قواعد البيانات الاستعلام إلى وصول آمن ومشارك للبيانات.
ضع الأشكال الطبيعية بالترتيب الذي تطبق them.
تصل إلى 3NF بالمرور عبر 1NF ثم 2NF — حيث يبني كل مستوى على السابق.
الهدف الرئيسي للتطبيع هو:
التطبيع نحو 3NF يخزن كل حقيقة مرة واحدة، مما يزيل تشوهات التحديث/الإدراج/الحذف (على حساب المزيد من عمليات الربط).
الشكل الطبيعي الأول
- يكون الجدول في الشكل الطبيعي الأول (1NF) عندما يحمل كل حقل قيمة ذرية واحدة، ولا توجد مجموعات مكررة، ويوجد مفتاح أساسي.
STUDENT(StudentID, Name, Phone)معPhoneيحتوي على0123, 0456ليس ذريًا.STUDENT(StudentID, Name, Course1, Course2, Course3)لديه مجموعة مكررة.- إصلاح الاثنين بنقل البيانات المكررة إلى جدول خاص مع صف لكل قيمة:
STUDENT_PHONE(StudentID, Phone)،ENROLMENT(StudentID, CourseID).
حقل الهاتف يحتوي على "0123, 0456" لطالب واحد. أي شكل طبيعي يفشل فيه الجدول؟
وجود قيمتين في خلية واحدة هو فشل 1NF. انقل الأرقام إلى STUDENT_PHONE(StudentID, Phone)، قيمة واحدة في كل صف.
مثال محلول: الشكل الطبيعي الثاني
ORDER(OrderID, CustomerID, CustomerName, ProductID, Quantity)لديه المفتاح الأساسي المركب(OrderID, ProductID). هل هو في 2NF؟- اختبر كل حقل غير مفتاحي ضد المفتاح الكامل.
Quantityيعتمد على كلٍ منOrderIDوProductID: أي ترتيب، أي منتج. جيد. CustomerIDوCustomerNameيعتمدان علىOrderIDوحده، وهو جزء فقط من المفتاح: اعتماد جزئي، لذا فإن الجدول ليس في 2NF. قسّمه:ORDER(OrderID, CustomerID, CustomerName)وORDER_LINE(OrderID, ProductID, Quantity).
مثال محلول: الشكل الطبيعي الثالث
- هل
ORDER(OrderID, CustomerID, CustomerName)في 3NF؟ - تكون الجدول في 3NF عندما يكون في 2NF ويعتمد كل حقل غير مفتاحي فقط على المفتاح الأساسي، وليس على حقل غير مفتاحي آخر.
CustomerNameيعتمد علىCustomerID، وهو ليس المفتاح: اعتماد متروّج، لذا الجدول ليس في 3NF. - قسّم مرة أخرى:
ORDER(OrderID, CustomerID)وCUSTOMER(CustomerID, CustomerName)، معCustomerIDمفتاح أجنبي. الاسم مخزن الآن مرة واحدة، بغض النظر عن عدد الطلبات التي يضعها العميل.

كل شكل يزيل نوعًا من الاعتماد
التطبيع نحو 3NF يخزن كل حقيقة مرة واحدة وي إزالة تشوهات التحديث، على حساب المزيد من الجداول وعمليات الربط.
هذا التوازن بين — البيانات الأنظف مقابل زيادة عدد الروابط — هو السبب في أن 3NF هو الهدف المعتاد.
تفسير سبب كون الجدول في 3NF أو عدم كونه كذلك
- ليس في 3NF: سمِّ الاعتماد. "
TEACHERليس في 3NF لأن الخاصية غير المفتاحيةDepartmentNameتعتمد على الخاصية غير المفتاحيةDepartmentID، وليس على المفتاح الأساسي." - في 3NF: غطِ جميع الشروط الثلاثة. "كل خاصية ذرية دون مجموعات مكررة؛ لا يوجد اعتماد جزئي على جزء من المفتاح؛ كل خاصية غير مفتاحية تعتمد فقط على المفتاح الأساسي، دون اعتماد متصاعد."
- ثم، إذا طُلب،给出 المعلمات المطابقة بصيغة القياسية مع تحديد المفاتيح الأجنبية.
في جدول TEACHER(TeacherID, Name, DepartmentID, DepartmentName)، لماذا لا يكون الجدول في 3NF؟
اعتمادية متعدية. افصل DEPARTMENT(DepartmentID, DepartmentName) وأبقِ DepartmentID في TEACHER كمفتاح أجنبي.
علامات ضائعة
- الـ2NF هو مسألة فقط عندما يكون المفتاح الأساسي مركباً. لا يمكن للمفتاح أحادي الحقل أن يحتوي على اعتماد جزئي.
- الـ3NF يتطلب الـ2NF. اذكر ذلك عند التبرير.
- ذري يعني قيمة واحدة لكل خلية. "رقما هاتف في حقل واحد" هو فشل في الـ1NF، وليس في الـ3NF.
- تسمية الشكل العادي ليس هو الإجابة؛ تسمية الاعتماد هو. وجود جداول أكثر بعد التطبيع هو الهدف، وليس عيباً.
لقد فهمت الأمر
- رسم الكيان والعلاقة يُظهر الكيانات كمستطيلات والعلاقات كخطوط مع الكاردينالية (التعدد) في كل طرف: 1:1، 1:M، M:N
- تُخزن العلاقة الكثيرة-إلى-الكثير من خلال جدول رابط يحتوي على مفاتيح أجنبية الاثنين، ومفتاحهما الأساسي مركب لهما.
- الـ1NF قيم ذرية، عدم وجود مجموعات متكررة، مفتاح أساسي · الـ2NF عدم وجود اعتماد جزئي على جزء من مفتاح مركب · الـ3NF عدم وجود اعتماد انتقالي بين السمات غير المفتاحية
- برّر بتسمية الاعتماد، ثم قدّم الجداول المقسومة مع مفاتيحها الأجنبية