Skip to main content

كيفية تحويل قاعدة بيانات إلى النموذج Normal الثالث (3NF)

الدرس الثامن: الصيغ المعيارية - تسوية قواعد البيانات - تطبيع قواعد البيانات - Database normalization (قد 2024)

الدرس الثامن: الصيغ المعيارية - تسوية قواعد البيانات - تطبيع قواعد البيانات - Database normalization (قد 2024)
Anonim

الشكل الثالث (3NF) هو مبدأ قاعدة البيانات التي تدعم سلامة البيانات عن طريق بناء مبادئ تطبيع قاعدة البيانات المقدمة من النموذج الأول العادي (1NF) والنموذج الطبيعي الثاني (2NF).

المتطلبات النموذجية الثالثة

هناك نوعان من المتطلبات الأساسية لقاعدة البيانات لتكون في الشكل العادي الثالث:

  • يجب أن تستوفي قاعدة البيانات بالفعل متطلبات كل من 1NF و 2NF.
  • يجب أن تعتمد جميع أعمدة قاعدة البيانات على المفتاح الأساسي ، وهذا يعني أنه يمكن اشتقاق قيمة أي عمود من المفتاح الأساسي فقط.

حول اعتماد المفتاح الأساسي

دعونا نستكشف ما نعنيه بحقيقة أن جميع الأعمدة يجب أن تعتمد على المفتاح الأساسي.

إذا كان من الممكن اشتقاق قيمة العمود من كلٍّ من المفتاح الأساسي وعمود آخر في الجدول ، فإنه ينتهك 3NF. خذ بعين الاعتبار جدول Employees Employees مع هذه الأعمدة:

  • هوية الموظف
  • الاسم الاول
  • الكنية

هل يعتمد الاسمان LastName و FirstName على قيمة EmployeeID فقط؟ حسنًا ، هل يمكن أن يعتمد اسم العائلة على الاسم الأول؟ لا ، لأن أي شيء متأصل في LastName قد يقترح قيمة FirstName. يمكن أن تعتمد FirstName على LastName؟ لا مرة أخرى ، لأن نفس الشيء صحيح: أيًا ما يكون اسم العائلة ، فقد لا يوفر تلميحًا إلى قيمة FirstName. لذلك ، هذا الجدول متوافق مع 3NF.

لكن ضع في اعتبارك جدول المركبات:

  • رقم المركبة
  • الصانع
  • نموذج

يمكن أن تستمد الشركة المصنعة والطراز من معرف السيارة - ولكن يمكن أن يستمد النموذج أيضًا من الشركة المصنّعة نظرًا لأن طراز السيارة يتم فقط من قِبل جهة تصنيع معينة. تصميم الجدول هذا غير متوافق مع 3NF ، وبالتالي ، يمكن أن يؤدي إلى تشوهات في البيانات. على سبيل المثال ، قد تقوم بتحديث الشركة المصنعة دون تحديث النموذج ، بإدخال عدم الدقة.

لجعله متوافقًا ، سنحتاج إلى نقل العمود الإضافي الإضافي إلى جدول آخر والإشارة إليه باستخدام مفتاح خارجي. سيؤدي ذلك إلى جدولين:

جدول المركبات

في الجدول أدناه ، يعد ModelID مفتاحًا خارجيًا لـ عارضات ازياء الطاولة:

  • رقم المركبة
  • الصانع
  • ModelID

جدول النماذج

هذا الجدول الجديد خرائط النماذج للمصنعين. إذا كنت ترغب في تحديث أي معلومات مركبة خاصة بنموذج ، فستقوم بذلك في هذا الجدول ، بدلاً من جدول "المركبات".

  • ModelID
  • الصانع
  • نموذج

الحقول المشتقة في نموذج 3NF

قد يحتوي الجدول على حقل مشتق - حقل يتم حسابه استنادًا إلى أعمدة أخرى في الجدول. على سبيل المثال ، ضع في اعتبارك هذا الجدول لأوامر عنصر واجهة المستخدم:

  • رقم الطلب
  • رقم العميل
  • سعر الوحده
  • كمية
  • مجموع

مجموع كسر الامتثال 3NF لأنه يمكن أن تستمد من خلال مضاعفة سعر الوحدة بالكمية ، بدلا من أن تعتمد بشكل كامل على المفتاح الأساسي. يجب أن نزيله من الجدول ليتوافق مع النموذج العادي الثالث.

في الواقع ، لأنه مشتق ، فمن الأفضل عدم تخزينها في قاعدة البيانات على الإطلاق.

يمكننا ببساطة حساب "على الطاير" عند تنفيذ استعلامات قاعدة البيانات. على سبيل المثال ، ربما سبق لنا استخدام هذا الاستعلام لاسترداد أرقام الطلبات والإجماليات:

حدد OrderNumber ، الإجمالي من WidgetOrders

يمكننا الآن استخدام الاستعلام التالي:

SELECT OrderNumber، UnitPrice * Quantity AS Total من WidgetOrders

لتحقيق نفس النتائج دون انتهاك قواعد التطبيع.