عرض مشاركة واحدة
  #6  
قديم 02-22-2010, 07:03 PM
ليالى111 ليالى111 غير متواجد حالياً
مراقب عام
 
تاريخ التسجيل: Feb 2010
المشاركات: 115
افتراضي Normalization






ماذا تعنى هذة الكلمة(Normalization) ؟؟

معنى هذة الكلمة حرفيا هو جعل الشئ طبيعيا او ارجاعة لطبيعتة

والغرض منها فى مجال قواعد البيانات هو جعل كل مايوجد فى قاعدة البيانات من كائنات اى كان نوعها مقننة وتخضع لقوانين معينة ومصنفة لتحقيق الهدف المنشود من تلك القوانين او القوالب المفروض ان تخرج هذة الكائنات على الشكل المطلوب والصحيح

ما فائدة Normalization وكيف تخدم قواعد البيانات؟؟

الفائدة من Normalization هوة انها تنقسم الى عدة اصناف
لكل نوع او صنف منها قوانين محددة الهدف منها جعل قاعدة البيانات صحيحة وخالية من الاخطاء
او التداخلات
وايضا الحفاظ على كل ما يدخل من بيانات الى قاعدة البيانات من الضياع او دخولها فى مكان غير المخصص لها

وهذة الفوائد والاهداف تتلخص فى الاتى

1- تنظيم وترتيب مابداخل قاعدة البيانات من جداول وغيرها من الكائنات.

2- تنظيم وترتيب وتصحيح العلاقات بين الجداول او اى كائن اخر.

3- تخليص قاعدة البيانات من مشاكل تكرار البيانات المدخلة والتى تسبب مشاكل لا حصر لها اثناء التعامل مع قاعدة البيانات.

4- تسهيل عملية ادخال البيانات بشكل صحيح ومرتب وبدون ظهور اخطاء اثناء عملية الادخال بان البرنامج غير قادر على الحفظ وخلافة من الاخطاء.

5- تسهيل عملية البحث واستخراج البيانات اثناء العملية بدقة متناهية دون اخطاء.

6- الحفاظ على المساحات التخزينية لقاعدة البيانات وذلك لشدة التنظيم وعدم السماح للتكرار.


وينقسم Normalization الى خمسة اجزاء وهم :

1- First Normal Form
2- Second normal form

3- Third normal form
4- Fourth normal form

5- Fifth normal form

وسنقوم فقط بدراسة الثلاث حالات الاولى


1- First Normal Form
2- Second normal form

3- Third normal form


لان تلك الحالات هى ماتهمنا دراستها.

والان نبدا بدراسة كل حالة على حدة


اولا: First Normal Form :

والقاعدة الاساسية لعمل هذة الحالة هى
1- القضاء على الازدواجيه في الاعمده من الجدول نفسه.

2- انشاء جداول منفصلة لكل مجموعة من البيانات ذات الصلة وتحديد كل صف مع عمود فريد
واداة الربط بين الجداول المنشأة هى (المفتاح الأساسي).


مثال على هذة الحالة :


نفرض انة عندنا جدول فى قاعدة البيانات بالشكل دة



زى مواضح فى الصورة ان عندنا الجدول دة وفية الشخص اللى اسمة James عندة رقمين للتليفون
طيب علشان نطبق الشرط الاول اللى هوة
First Normal Form


هنلغى الجدول دة خالص من قاعدة البيانات ونعمل بدالة جدولين باسمين مختلفين وليكن ان دة جدول العملاء
الجدول الاول هيكون بالشكل دة واسمة العملاء



والجدول الثانى هيكون بالشكل دة واسمة ارقام تليفونات العملاء وحلقة الوصل هيا المفتاح الاساسى فى الجدولين اللى هوة هوة نفسة customer id دة هيكون المفتاح الاساسى الجدول الاول اللى هوة جدول العملاء وهيكون مفتاح اجنبى فى جدول ارقام تليفونات العملاء



كدة احنا استفدنا من الموضوع دة فى اننا حلينا مشكلة تداخل البيانات ودة بيزود قاعدة البيانات مرونة وخاصة عند البحث



ثانيا : Second normal form:

والقاعدة الاساسية للحالة هى:

1- ازالة مجموعات فرعية من البيانات التي تنطبق على متعددة الصفوف من الجدول ووضعها في جداول منفصلة.

2- انشاء علاقات جديدة بين هذه الجداول وأسلافهم من خلال استخدام مفاتيح الاجنبية.



ودى شبيهة بالاولى ولكن مع بعض الاختلاف
والاختلاف اللى بينها وبين الحالة الاولى ان الحالة الاولى فيها تكرار فى فى بيانات عمود واحد
اللى هوة ان James لة اكتر من تليفون وان التليفونات دى مفيش حد غيرة واخدها
يعنى التكرار اللى موجود دة مش موجود الا مرة واحدة

انما فى احالة التانية التكرار بيكون فى اكتر من عمود



شوف هنا اكثر من تكرار فى نفس العمود

والمشكلة دى بتحلها الحالة التانية

طيب هتتحل ازاى??

هنعمل جدولين واحد بيعرض employees
ومفتاحة الاساسى employee
وهيكون بالشكل دة


والجدول التانى هيكون فية مفتاح اجنبى هوة employee والمفتاح دة بيشير للجدول Employees وبكدة الجدولين اتكونت بينهم علاقة

واسم الجدول هيكون employee's skills والجدول هيكون بالشكل دة


وبكدة نكون تخلصنا من المشكلة اللى هيا تكرار البيانات فى عمود واحد




ثالثا : Third normal form:

القاعدة الساسية للحالة :
1- لابد من تطبيق شروط الحالتين الاولى والثانية (First Normal Form ,Second normal form) .

2- ازالة الاعمده التي لا تعتمد اعتمادا كاملا على المفتاح الأساسي.


والحالة دى قمة فى التطور وبتحل مشاكل لا حصر لها ولكن نتعامل معها بحرص شديد جدااا
ولو حد طلب منى انى اعملة قاعدة بيانات بالنظام دة بيدفعة دم قلبة

الحالة دى لازم وشرط ولابد يكون مطبق الحالتين لالولى والثانية

والشرط الثانى للحالة

شوف الصورة للجدول دة


فى الجدول دة عمود لا يعتمد مطلقا على المفتاح الاساسى

اية هوة العمود دة؟


اللى هوة تاريخ ميلاد الفائز winner date of birth

طيب لما نحذفة هنودية فين؟؟؟؟

هنعمل جدول جدولين
الاول هيكون Tournament Winners اللى هوة المسابقات الفائزة اة التنظيمات
وهيكون بالشكل دة



والجدول الثانى هنعملة بمراعاة حذف اى تكرار
وهيكون مثلا اسم الجدول Player Dates of Birth

وهيكون بالشكل دة



انظر: لايوجد اى تكرار لاسماء اللاعيبين




وبكدة احبائى نكون انتهينا من موضوع قواعد البيانات العلائقية بالكامل

والمحاضرة الجاية مهمة جدا جدا جدا جداااااااااااااااا لاننا هنتعرف على حاجات كتيرة حلوة ومفيدة فى شغلنا

رد مع اقتباس