هل ممكن تبسيط مفهوم Database Normalization

السلام عليكم ورحمة الله

تابعت وقرأت عدة فيديوهات ومقالات سواء عربية أو إنجليزية لكن لم أستطع فهم ال Database Normalization

1NF 2NF 3NF

هل ممكن تبسيط المفهوم وجزاكم الله خيرا!

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

مجهول
  • حذف بواسطة المستخدم

وعليكم السلام ,

اولا مفهوم Database Normalization يعني عملية تحسين هيكل قاعدة البيانات لجعلها أكثر فعالية وذالك من خلال تقسيم قاعدة البيانات إلى جداول متعددة وتحديد العلاقات بين هذه الجداول ,

وذالك من خلال:-

  • تقليل التكرار في البيانات
  • التكامل بين الجداول
  • جعل قاعدة البيانات قابلة للتوسع

و1NF 2NF 3NF هي مستوايات يتم من خلالها تنفيذ مفهوم الDatabase Normalization

مثال لتوضيح مفهوم تطبيع قواعد البيانات:

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

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

لحل هذه المشكلة، يمكننا تقسيم الجدول إلى جدولين، أحدهما يسمى "الطلاب" ويحتوي على معلومات حول الطلاب، والآخر يسمى "العناوين" ويحتوي على معلومات حول العناوين. سيؤدي هذا إلى إزالة التكرار من قاعدة البيانات.

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

وهذه مقال يساعدك لفهم الموضوع بشكل افضل :-

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

هناك ثلاثة مستويات رئيسية للتطبيع:

  • الشكل الأولي (1NF): يتطلب أن تكون جميع البيانات في قاعدة البيانات محددة بشكل فريد.
  • الشكل الثاني (2NF): يتطلب أن تكون جميع البيانات في قاعدة البيانات معتمدة بشكل كامل على مفتاح أساسي.
  • الشكل الثالث (3NF): يتطلب أن تكون جميع البيانات في قاعدة البيانات معتمدة بشكل كامل على مفتاح أساسي، وأن تكون البيانات غير الرئيسية معتمدة بشكل كامل على مفتاح أساسي أو مفتاح خارجي.

وبالطبع هناك 4NF و5NF ولكن لا يتم استخدامهما إلا في تطبيقات قاعدة بيانات معقدة.

4NF هو الشكل الرابع من التطبيع، ويتطلب أن تكون جميع البيانات في قاعدة البيانات مستقلة تمامًا، أي يعني أنه لا توجد بيانات يمكن اشتقاقها من بيانات أخرى في نفس الجدول.

5NF هو الشكل الخامس من التطبيع، ويتطلب أن تكون جميع البيانات في قاعدة البيانات مستقلة تمامًا، وأن تكون جميع العلاقات بين البيانات علاقات وظيفية.

وكمثال على قاعدة بيانات غير مُنمَطَة

لنفترض أننا نريد إنشاء قاعدة بيانات لتسجيل الطلاب والصفوف التي يدرسون فيها، فنستطيع إنشاء جدول واحد يحتوي على الحقول التالية:

  • رقم الطالب (مفتاح أساسي)
  • اسم الطالب
  • رقم الصف

وذلك الجدول غير مُنمَطَ لأنه يحتوي على بيانات مكررة، فلو كان لدى الطالب "أحمد" رقم الصف "101"، فسيظهر هذا الرقم مرتين في الجدول.

مثال على قاعدة بيانات مُنمَطَة

لتحسين قاعدة البيانات، نقوم بتقسيمها إلى جدولين:

الجدول الأول (الطلاب): يحتوي على الحقول التالية:

  • رقم الطالب (مفتاح أساسي)
  • اسم الطالب

الجدول الثاني (الفصول): يحتوي على الحقول التالية:

  • رقم الصف (مفتاح أساسي)
  • اسم الصف
  • رقم الطالب (مفتاح خارجي)

يؤدي ذلك التغيير إلى إزالة البيانات المكررة، وضمان أن تكون البيانات ذات الصلة مرتبطة بشكل صحيح.

وبعض الفوائد الرئيسية للتطبيع:

  • تحسين أداء قاعدة البيانات من خلال إزالة البيانات المكررة.
  • الحفاظ على اتساق البيانات من خلال ضمان أن تكون البيانات ذات الصلة مرتبطة بشكل صحيح.
  • يجعل التطبيع قاعدة البيانات أكثر قابلية للنقل من نظام إلى آخر.
Abdelbaset_ibrahem أضف ردا

تطبيع قواعد البيانات Database Normalization هو عملية تحسين بنية قاعدة البيانات لجعلها أكثر كفاءة وسهولة في الاستخدام. يتضمن ذلك إزالة التكرار وتجنب الاعتمادات الجزئية.

مثال:

هكذا يكون جدول ما غير مطبّع:

ID - Name - City - FavoriteFood - FavoriteDrink

1NF: تقسم إلى جدولين:

الجدول الأول:

ID - Name - City

الجدول الثاني:

ID - FavoriteFood - FavoriteDrink

2NF:فصل المدن إلى جدول منفصل لأنها غير مرتبطة بالـ ID

الجدول الأول:

ID - Name

الجدول الثاني:

ID - City

الجدول الثالث:

ID - FavoriteFood - FavoriteDrink

3NF: لا توجد اعتمادية على مفاتيح غير أساسية، إذن نحن في الشكل الثالث.

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