تسوية جداول قواعد البيانات - DB Normalization
السلام عليكم ورحمة الله وبركاته
من فضلكم يا إخوه من لديه أى شرح أو كتب عن DB Normalization ياريت يساعدنا بيها ولكم جزيل الشكر وجزاكم الله خيرا
1 إجابة
التسوية هي عملية تعين صفات لجدول ما. مثل تحديد صفات لجدول الموظفين: حيث من صفاتة الأساسية وجود رقم للموظف، أسم الموظف. وتمر هذه العملية بعدة مراحل تسمى شكل التسوية (Normal Forms) وهي تصنف بالتوالي:
- الشكل الأول للتسوية (1NF) - الشكل الثاني للتسوية (2NF) - الشكل الثالث للتسوية (3NF) وحسب الترتيب فإن الشكل الثاني للتسوية الجدول أفضل من الشكل الأول، ويعتبر الثالث أفضل من الثاني، كلما قمنا بتسوية الجدول نكون قد حسنا من تصميمنا لقاعدة البيانات. ولكل مستوى من التسوية شروط يجب استفائها قبل انتقاله من مستوى الى مستوى أخر في التصنيف. وستم التطرق لك مستوى على حدى لحقا. وقبل القيام بذلك يجب التعرف على بعض المصطلحات المتعلقة بالجداول لتسهيل عملية التحليل بغرض تسوية الجدول. مصطلحات أساسية لصفات (حقول) الجدول:يتم مراجة بعض المفاهيم الأساسية لتسهيل عملية فهم فروقات كل مستوى من التسوية (ضروري جدا) أنواع الحقول في الجدول:1- حقل مفتاح للجدول (Key Attribute) 2- حقل غير مفتاح للجدول ( Non-key Attribute ) ما هو الفرق بين المفتاح وغير المفتاح، والفرق جدا بسيط ما يميز حقل مفتاح الجدول هو: أ) اشتراط أن قمية الحقل لا يمكن أن تتكرر (NO Duplicate ) - توضيح: لتحديد سجل واحد فقط ب) أن يكون الحقل مفهرس (Indexed) - توضيح: لتسريع عملية البحث وهذا ما يميز حقول المفاتيح. مثال على ذلك: جدول الموظفين ( رقم الموظف، والأسم الأول، الفئة الوظيفية، تكلفةالفئة بالساعة) يتم وضع خط تحت المتاح الأساسي للجدول أسم الجدول (المفتاح الأساسي ، مفتاح أجنبي،الحقول الأخرى) من المنطقي عدم تكرار رقم الموظف لأكثر من موظف، أما الأسم الأول فقد يكون لدينا أكثر من موظف اسمه محمد أو عبدالله. علاقة الحقول ببعضها:توجد نوعين اساسين من العلاقة للحقول: 1-أعتماد على مفتاح أساسي، وهي اعتماد حقل غير مفتاح لحقل أخر مفتاح لتحديد قيمتها. مثل أعتماد اسم الموظف على رقم الموظف في المثال السابق. 2- أعتماد على حقل غير مفتاح، وهي اعتماد حقل على حقل أخر غير مفتاح بالجدول. مثل على ذلك بالنظر للمثال السابق يتم تحديد التكلفة بالساعة حسب الفئة الوظيفية. حيث أن ولا واحد منهم يعتبر مفتاح بالجدول. ماهي المجموعة المكرره؟عند وجود جدول يوجد فيه اعتماد حقل غير مفتاح على حقل أخر غير مفتاح يتكون لدينا مجموعة مكرره. أو عند تحديد أكثر من قيمة لحقل واحد. وستم توضيح كذلك في أمثلة لاحقة. 4- شروط المستويات لــــ Normalization: سيتم ذكر شروط كل مستوى من خلال مثال يظهر كيفية تحويل أي جدول من مستوى إلى أخر. والمثال عبارة عن قاعدة بيانات لشركة مقاولات ترغب في معرفة كل موظف وماهو المشروع الذي يعمل فيه ومع احتساب التكلفة لكل موظف حسب الساعة. فقام احد الموظفين بأخذ التقرير اليومي البسيط من مديرة المباشر وقام بانشاء جدول في قاعدة البيانات تعكس حقول الجدولن وهو موجود ادناه اعتقد الموظف بأن العمل انتها للجدول وكاد ان يسلمة لمديرة ولكن لاحظ بأن بعض السجلات لا يوجد لها مفتاح ؟ ملاحظ: كل سجل ممثل بسطر والرقم الذي تحتة حظ يعني مفتاح أساسي للجدول ولكن الموظف اكتشف بأن كل سجل سيتكرر فية رقم المشروع ولا يكمن تحديد الموظف فقر بإضافة رقم الموظف كفتاح اساسي، فأصبح للجدول مفتاح مركب (رقم المشروع + رقم الموظف). المستوى الأول:وما قم بة الموظف دون علم هو تحويل الجدول إلى المستوى الأول من التسوية بكل بساطة حيث أن شروطها كما يلي: 1- وجود لكل جدول مفتاح/مفاتيح يحدد سجل معين (إضافة رقم المشروع والموظف كمفاتيح) 2- التخلص من أي مجموعة مكرره (لا يوجد مجموعة مكرره لأن كل حقل يمثل قيمة واحدة من المجال التابع له، قد يضيف البعض أكثر من وظيفة في حقل واحد أو يضيف حقل إضافي للجدول تمثل الوظيفة الأولى والثانية وهذا شائع جدا جدا) 3- جميع الحقول معتمدة على المفتاح/المفاتيح الأساسية (حيث يمكن تحديد أي قيمة من السجل من خلال معرفة رقم المشروع وريقم الموظف) ويكمن توضيحها بالعلاقات التالية: رقم المشروع + رقم الموظف > اسم المشروع، اسم الموظف، الفئة الوظيفية، تكلفة الساعة، عدد الساعات المستوى الثاني:ويشترط ما لي: 1- أن يكون الجدول في المستوى الأول وحقق شروطها 2- إزاله أي حقل يعتمد على جزئ من المفتاح رقم المشروع + رقم الموظف > اسم المشروع، اسم الموظف، الفئة الوظيفية، تكلفة الساعة، عدد الساعات اللون الأخضر: اعتماد اسم المشروع على رقم المشروع فقط اللون الاحمر: اعتماد اسم الموظف والفئة والتكلفة على رقم الموظف فقط ولكي يتمكن الموظف من تحويل جدوله البسط السابق إلى المستوى التالي يستلزم إنشاء جداول إضافة وهي: جدول المشروع (رقم المشروع، اسم الشروع) جدول الموظف (رقم الموظف، اسم الموظف، الفئة الوظيفية، تكلفة الساعة) جدول التكليف (رقم الموظف، رقم المشروع، عدد ساعات العمل) وبهذا نحصل على المستوى الثاني من تسوية الجداول حيث يتم ربط الجداول باستخدام المفتاح الأجنبي (رقم المشروع في جدول التكليف عبارة عن مفتاح اساسي بجدول المشروع ولكن مفتاح اجنبي في جدول التكليف. المستوى الثالث:ولكن تكمن مشكل واحده، هو وجود بعض الحقول في جدول الموظف لا تعتمد على المفتاح الأساسي وهي جدول الموظف (رقم الموظف، اسم الموظف، الفئة الوظيفية، تكلفة الساعة) وشروط المستوى الثالث هي: 1- أن تكون في المستوى الثاني 2- عدم وجود حقل غير مفتاح يعتمد على حقل غير مفتاح ولكي يتم تحويل تصميم الموظف السابق لهذا المستوى يجب إضافة جدول الفئة الوظيفية وربطها بالموظف من خلال متاح أجنبي نحصل على: جدول الفئة الوظيفية (الفئة الوظيفية ، تكلفة الساعة) وتصبح باقي الجداول كما يلي: جدول المشروع (رقم المشروع، اسم الشروع) جدول الموظف (رقم الموظف، اسم الموظف، الفئة الوظيفية) جدول التكليف (رقم الموظف، رقم المشروع، عدد ساعات العمل) جدول الفئة الوظيفية (الفئة الوظيفية ، تكلفة الساعة) بواسطة: MacOS 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا |