You are on page 1of 33

‫الصيغة المعيارية‬

5/23/2019 Free Photo Template from www.brainybetty.com 1


‫الصيغة المعيارية‬
‫هي أن يكون هناك قاعدة بيانات بها جداول مغلوطة أو غير‬
‫سليمة والحل يكون إنشاء قاعدة بيانات سليمة وجيدة عن‬
‫طريق أسس وصيغ معينة‪.‬‬
‫مبينة على ما يأتي‪:‬‬
‫أ) من فوق لـ تحت ( ‪( top down‬‬
‫ب) تقليل التكرار وهو من أهم أعمال الصيغة المعيارية‪.‬‬
‫جـ) االعتماد الوظيفي ( ‪( FD‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪2‬‬


‫• االعتماد الوظيفي ‪:Functional dependencies‬‬
‫وهو اعتماد قيمة إحدى صفات الكيان علي قيمة صفة أخرى‪.‬‬
‫مثال‪A  B :‬‬
‫بفرض أن ‪A: ID , B: NAME‬‬
‫بمعنى أن ‪ B‬تعتمد اعتماداً وظيفيا ً على ‪ , A‬وقيمة الـ ‪ A‬تحدد لنا قيمة الـ ‪B‬‬
‫وأن الـ ‪ A‬ترجع لنا قيمة واحدة فقط لـ ‪B‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪3‬‬


‫الصيغة المعيارية‬
‫عبارة عن أربع اختبارات تجرى على قاعدة البيانات وهي‪:‬‬
‫‪ (1‬االختبار األول ( ‪)1 NF‬‬
‫‪ (2‬االختبار الثاني )‪) 2 NF‬‬
‫‪ (3‬االختبار الثالث ( ‪)3 NF‬‬
‫‪ (4‬االختبار الرابع ( ‪)BC NF‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪4‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫في االختبار األول لقاعدة البيانات هناك قاعدتان أساسيتان‪:‬‬

‫‪ -1‬أن ال يكون هناك صفة متعددة القيم ‪:‬‬


‫بمعنى أن يكون داخل العمود أكثر من بيان‪ .‬مثالً كوجود ‪3‬‬
‫مناطق بها قسم موارد بشرية‪.‬‬

‫‪ -2‬أن ال يكون هناك صفة مركبة ‪:‬‬


‫بمعنى أن يقسم العمود إلى قسمين أو اكثر‪ .‬مثالً داخل‬
‫عمود المشروع هناك رقمه وساعات العمل به‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪5‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫في االختبار األول نسأل سؤالين‪..‬‬
‫األول‪ :‬هل هناك صفة متعددة القيم ؟‬

‫الثاني‪ :‬هل هناك صفة مركبة ؟‬

‫إذا كان الجواب على احدهم أو كالهم نعم فإن قاعدة‬


‫البيانات بحاجة إلى تعديل لكي تجتاز االختبار األول‬
‫للصيغة المعيارية‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪6‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬

‫‪ -1‬في حالة وجدت صفة متعددة القيم ‪:‬‬

‫في الجدول التالي نجد أن في الموقع هناك أكثر من بيان‪.‬‬


‫وهذا غير مقبول في االختبار االول فيجب ان يكون هنا‬
‫كيان واحد فقط في كل خانة‪..‬‬
‫‪D_NO‬‬ ‫‪D_NAME‬‬ ‫‪MANAGER‬‬ ‫‪LOCATION‬‬
‫‪12‬‬ ‫‪H.R‬‬ ‫‪JON‬‬ ‫‪JEDDAH, MAKAH, RIYAD‬‬

‫‪14‬‬ ‫‪MARKING‬‬ ‫‪DONA‬‬ ‫‪JEDDAH, RIYAD‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪7‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫متعددة القيم يكون الحل بأن‬
‫‪J‬‬ ‫في حالة وجود صفة‬
‫ننشأ جدول جديد ونضع به الصفة المتعددة القيم‬
‫بإضافة إلى المفتاح الرئيسي في الجدول القديم‪.‬‬
‫‪D_NO‬‬ ‫‪LOCATION‬‬
‫* الجدول الجديد‬
‫يتم تعين المفتاح الرئيسي للجدول القديم ‪+‬‬
‫‪12‬‬ ‫‪JEDDAH‬‬

‫‪12‬‬ ‫‪MAKAH‬‬

‫‪12‬‬ ‫‪RIYAD‬‬ ‫الصفة المتعددة القيم كالهما مفتاحا ً‬


‫‪14‬‬ ‫‪RIYAD‬‬
‫رئيسيا ً‪ ,‬ولكن سيكون المفتاح الرئيسي‬
‫‪14‬‬
‫للجدول القديم مفتاح أجنبي‪.‬‬
‫‪JEDDAH‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪8‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫الجدول الجديد ستكون حذف‬
‫الخطوة الثانية بعد إنشاء ‪J‬‬
‫الصفة المتعددة القيم من الجدول األساسي وسيصبح‬
‫شكله كاآلتي‪:‬‬

‫‪D_NO‬‬ ‫‪D_NAME‬‬ ‫‪MANAGER‬‬ ‫‪D_NO‬‬ ‫‪D_NAME‬‬ ‫‪MANAGER‬‬ ‫‪LOCATION‬‬

‫‪12‬‬ ‫‪H.R‬‬ ‫‪JON‬‬ ‫‪JEDDAH, MAKAH,‬‬


‫‪12‬‬ ‫‪H.R‬‬ ‫‪JON‬‬
‫‪RIYAD‬‬
‫‪14‬‬ ‫‪MARKING‬‬ ‫‪DONA‬‬
‫‪14‬‬ ‫‪MARKING‬‬ ‫‪DONA‬‬ ‫‪JEDDAH, RIYAD‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪9‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫وجدت صفة مركبة ‪:‬‬
‫‪J‬‬ ‫‪ -2‬في حالة‬

‫في الجدول التالي نجد أن بداخل عمود المشروع هناك‬


‫رقمه وعدد ساعات العمل به‪ .‬وهذا غير مقبول في‬
‫االختبار األول ويحتاج إلى تعديل ليجتاز االختبار االول‬
‫‪PROJECT‬‬
‫‪SSN‬‬ ‫‪NAME‬‬
‫‪PRO_NO‬‬ ‫‪HOURS‬‬
‫‪27819‬‬ ‫‪JONA‬‬ ‫‪14‬‬ ‫‪56‬‬
‫‪57981‬‬ ‫‪DONA‬‬ ‫‪7‬‬ ‫‪78‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪10‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫ننشأ جدول جديد نضع به‬
‫في هذه الحالة يكون الحل بأن ‪J‬‬
‫المفتاح الرئيسي للجدول القديم باإلضافة إلى الصفة المركبة‬
‫بجميع ما تحتويه بشرط أن يتم تفكيكها إلى أعمدة‪.‬‬
‫الجدول الجديد‬ ‫المفتاح الرئيسي يكون هو نفسه الذي في‬
‫الجدول األساسي ويكون مفتاح أجنبي‪+‬‬
‫اختيار أحد الصفات المركبة التي تنفع‬
‫‪SSN‬‬ ‫‪PRO_NO‬‬ ‫‪HOURS‬‬

‫‪27819‬‬ ‫‪14‬‬ ‫‪56‬‬


‫لتكون مفتاحا ً رئيسيا ً فمثال هنا اخترنا رقم‬
‫‪57981‬‬ ‫‪7‬‬ ‫‪78‬‬
‫المشروع مفتاحا ً رئيسيا ً أخر‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪11‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫الجدول الجديد ستكون حذف‬
‫الخطوة الثانية بعد إنشاء ‪J‬‬
‫الصفة المركبة من الجدول األساسي وسيصبح شكله‬
‫كاآلتي‪:‬‬
‫‪SSN‬‬ ‫‪NAME‬‬

‫‪27819‬‬ ‫‪JONN‬‬

‫‪57981‬‬ ‫‪DONA‬‬

‫‪PROJECT‬‬
‫‪SSN‬‬ ‫‪NAME‬‬
‫‪PRO_NO‬‬ ‫‪HOURS‬‬
‫‪27819‬‬ ‫‪JONA‬‬ ‫‪14‬‬ ‫‪56‬‬
‫‪57981‬‬ ‫‪DONA‬‬ ‫‪7‬‬ ‫‪78‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪12‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (1NF‬االختبار األول‬


‫‪J‬‬ ‫مالحظات ‪:‬‬
‫* في حالة الصفة المركبة نجد أنها في نفس الوقت تكون صفة‬
‫متعددة القيم‪.‬‬
‫* في حالة الصفة المركبة يكون اختيار المفتاح الرئيسي للجدول‬
‫الجديد بأن نعتبر الصفات المركبة جدوالً منفصالً ونختار من بينهم‬
‫المفتاح الرئيسي المناسب‪.‬‬

‫* نرمز للقيمة المتعددة بـ } { ‪ ,‬بينما نرمز للقيمة المركبة ] [‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪13‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫‪J‬‬
‫* وصول قاعدة البيانات إلى االختبار الثاني يعني أنه ليس بها‬
‫صفات متعدد القيم وال صفات مركبة‪.‬‬

‫* في االختبار الثاني سنتعرف على معنى الصفة األولية‪..‬‬

‫* وسنتعرف على االعتمادية الوظيفية الكاملة‪..‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪14‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫‪J‬‬
‫الصفة األولية‪:‬‬
‫عندما يكون لدينا مفتاحين رئيسين لنفس الجدول (مفتاح مجمع)‬
‫نقول أن كل منهم يسمى صفة أولية‪.‬‬
‫مثالً‪ :‬جدول المشروع به مفتاح مجمع‬
‫المفتاح الرئيسي عبارة عن ‪SSN + PRO_NO‬‬
‫‪SSN‬‬ ‫‪PRO_NO‬‬ ‫‪HOURS‬‬

‫‪27819‬‬ ‫‪14‬‬ ‫‪56‬‬


‫‪57981‬‬ ‫‪7‬‬ ‫‪78‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪15‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫‪J‬‬
‫الصفة األولية‪:‬‬
‫*إذن نطلق صفة أولية على كل من ‪SSN + PRO_NO‬‬

‫*ما غير ذلك يطلق عليه صفة ليست أولية مثل‬


‫‪SSN‬‬ ‫‪PRO_NO‬‬ ‫‪HOURS‬‬ ‫‪HOUES‬‬
‫‪27819‬‬ ‫‪14‬‬ ‫‪56‬‬
‫‪57981‬‬ ‫‪7‬‬ ‫‪78‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪16‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫وظيفية كاملة‪:‬‬
‫‪J‬‬ ‫اعتمادية‬
‫الجدول اآلتي يوضح درجات الطالبات في االختبار‬
‫‪S_ID‬‬ ‫‪C_ID‬‬ ‫‪GRADES‬‬ ‫فمثال لو أردنا أن نعرف درجة الطالبة رقم ‪10‬‬
‫‪10‬‬ ‫‪1‬‬ ‫‪70‬‬ ‫ستظهر لنا درجتان وهما ‪ . 88-70‬وهذا يدل أن‬
‫‪10‬‬ ‫‪2‬‬ ‫‪88‬‬
‫الدرجات ال تعتمد اعتمادا ً وظيفيا ً كامالً على رقم‬
‫‪20‬‬ ‫‪1‬‬ ‫‪100‬‬
‫‪20‬‬ ‫‪2‬‬ ‫‪94‬‬ ‫الطالبة‪ ,‬بل أنها تعتمد أيضا ً على رقم الكورس‪.‬‬
‫ويمكن توضيحها كاآلتي‪:‬‬
‫} ‪{ S_ID , C_ID‬‬ ‫‪GRADES‬‬
‫اذن فالدرجات تعتمد وظيفيا ً كامالً على رقم الطالبة ‪ +‬رقم االختبار‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪17‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫وظيفية كاملة‪:‬‬
‫‪J‬‬ ‫اعتمادية‬
‫مثالُ في حالة أضفنا على الجدول اسم الطالبة واسم الكورس‬
‫} ‪{ S_ID , C_ID‬‬ ‫‪S_NAME‬‬
‫هنا خطأ ألن رقم الطالبة يكفي لنعرف اسمها‪ .‬وهذه الحالة تسمى اعتماد‬
‫وظيفي جزئي‪.‬‬
‫‪S_ID‬‬ ‫‪C_ID‬‬ ‫‪GRADES‬‬ ‫‪S_NAME‬‬ ‫‪C_NAME‬‬

‫‪10‬‬ ‫‪1‬‬ ‫‪70‬‬ ‫‪NOHA‬‬ ‫‪MIS‬‬


‫إذن فإن اسم الطالبة‬
‫‪10‬‬ ‫‪2‬‬ ‫‪88‬‬ ‫‪NOHA‬‬ ‫‪DB‬‬ ‫يعتمد وظيفيا ً على رقم‬
‫‪20‬‬ ‫‪1‬‬ ‫‪100‬‬ ‫‪DANA‬‬ ‫‪MIS‬‬ ‫الطالبة فقط‪ .‬وهو اعتماد‬
‫‪20‬‬ ‫‪2‬‬ ‫‪94‬‬ ‫‪DANA‬‬ ‫‪DB‬‬ ‫وظيفي جزئي‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪18‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫وظيفية كاملة‪:‬‬
‫‪J‬‬ ‫اعتمادية‬
‫مثال أخر‪:‬‬
‫} ‪{ S_ID , C_ID‬‬ ‫‪C_NAME‬‬
‫هنا خطأ ألن رقم الكورس يكفي لنعرف اسمه‪ .‬وهذه الحالة تسمى اعتماد‬
‫وظيفي جزئي‪.‬‬
‫‪S_ID‬‬ ‫‪C_ID‬‬ ‫‪GRADES‬‬ ‫‪S_NAME‬‬ ‫‪C_NAME‬‬

‫‪10‬‬ ‫‪1‬‬ ‫‪70‬‬ ‫‪NOHA‬‬ ‫‪MIS‬‬


‫إذن فإن اسم الكورس‬
‫‪10‬‬ ‫‪2‬‬ ‫‪88‬‬ ‫‪NOHA‬‬ ‫‪DB‬‬ ‫يعتمد وظيفيا ً على رقم‬
‫‪20‬‬ ‫‪1‬‬ ‫‪100‬‬ ‫‪DANA‬‬ ‫‪MIS‬‬ ‫الكالس فقط‪ .‬وهو اعتماد‬
‫‪20‬‬ ‫‪2‬‬ ‫‪94‬‬ ‫‪DANA‬‬ ‫‪DB‬‬ ‫وظيفي جزئي‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪19‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫وظيفية كاملة‪:‬‬
‫‪J‬‬ ‫اعتمادية‬
‫* في االختبار الثاني ال ينفع أن يكون هناك صفة تعتمد اعتماد وظيفي جزئي‬
‫على المفتاح الرئيسي‪ .‬يجب أن يكون اعتمادا ً وظيفيا ً كامالً كما في حالة‬
‫الدرجات فهي تعتمد على المفتاح المجمع ( رقم الطالبة ‪ +‬رقم الكالس)‪.‬‬

‫* اما في حالة اسم الطالبة‪,‬اسم الكورس فهو اعتماد وظيفي جزئي‪.‬‬


‫الحل في هذه الحالة أن نضيف جدول جديد لكل صفة مع المفتاح الرئيسي‬
‫المعتمده عليه اعتمادا ً وظيفيا ً كامالً ‪ .‬وتحذف الصفات من الجدول األساسي‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪20‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫وظيفية كاملة‪:‬‬
‫‪J‬‬ ‫اعتمادية‬
‫‪S_ID‬‬ ‫‪S_NAME‬‬
‫‪10‬‬ ‫‪NOHA‬‬ ‫} ‪{ S_ID‬‬ ‫‪S_NAME‬‬
‫‪10‬‬ ‫‪NOHA‬‬
‫‪20‬‬ ‫‪DANA‬‬ ‫هنا يعتمد اسم الطالبة على رقمها‬
‫‪20‬‬ ‫‪DANA‬‬
‫اعتماد وظيفي كامل‪.‬‬
‫‪S_ID‬‬ ‫‪C_ID‬‬ ‫‪GRADES‬‬ ‫‪S_NAME‬‬ ‫‪C_NAME‬‬

‫‪10‬‬ ‫‪1‬‬ ‫‪70‬‬ ‫‪NOHA‬‬ ‫‪MIS‬‬


‫‪ )1‬ننشأ جدول جديد به المفتاح الرئيسي‬
‫‪10‬‬ ‫‪2‬‬ ‫‪88‬‬ ‫‪NOHA‬‬ ‫‪DB‬‬ ‫‪ +‬الصفة المعتمدة عليه اعتمادية‬
‫‪20‬‬ ‫‪1‬‬ ‫‪100‬‬ ‫‪DANA‬‬ ‫‪MIS‬‬ ‫وظيفية كاملة‪.‬‬
‫‪20‬‬ ‫‪2‬‬ ‫‪94‬‬ ‫‪DANA‬‬ ‫‪DB‬‬ ‫‪ )2‬نحذف الصفة من الجدول األساسي‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪21‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (2NF‬االختبار الثاني‬


‫وظيفية كاملة‪:‬‬
‫‪J‬‬ ‫اعتمادية‬
‫‪C_ID‬‬ ‫‪C_NAME‬‬

‫‪1‬‬ ‫‪MIS‬‬ ‫} ‪{ C_ID‬‬ ‫‪C_NAME‬‬


‫‪2‬‬ ‫‪DB‬‬
‫‪1‬‬ ‫‪MIS‬‬ ‫هنا يعتمد اسم الكالس على رقمه‬
‫‪2‬‬ ‫‪DB‬‬
‫اعتماد وظيفي كامل‪.‬‬
‫‪S_ID‬‬ ‫‪C_ID‬‬ ‫‪GRADES‬‬ ‫‪S_NAME‬‬ ‫‪C_NAME‬‬

‫‪10‬‬ ‫‪1‬‬ ‫‪70‬‬ ‫‪NOHA‬‬ ‫‪MIS‬‬


‫‪ )1‬ننشأ جدول جديد به المفتاح الرئيسي‬
‫‪10‬‬ ‫‪2‬‬ ‫‪88‬‬ ‫‪NOHA‬‬ ‫‪DB‬‬ ‫‪ +‬الصفة المعتمدة عليه اعتمادية‬
‫‪20‬‬ ‫‪1‬‬ ‫‪100‬‬ ‫‪DANA‬‬ ‫‪MIS‬‬ ‫وظيفية كاملة‪.‬‬
‫‪20‬‬ ‫‪2‬‬ ‫‪94‬‬ ‫‪DANA‬‬ ‫‪DB‬‬ ‫‪ )2‬نحذف الصفة من الجدول األساسي‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪22‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (3NF‬االختبار الثالث‬


‫الوظيفية االنتقالية‪:‬‬
‫‪J‬‬ ‫االعتمادية‬
‫‪TFD‬‬
‫‪X‬‬ ‫‪Y‬‬ ‫‪Z‬‬
‫* بمعنى انه هناك صفة تعتمد على صفة أخرى والصفة األخرى تعتمد على‬
‫المفتاح الرئيسي‪ ,‬في هذه الحالة تكون الصفة التي في المنتصف هي صفة‬
‫وسيطة‪.‬‬
‫* يعني أنها تعتمد بطريقة غير مباشرة على المفتاح الرئيسي‪ ,‬بمعنى أن‬
‫الصفة ال تعتمد على المفتاح الرئيسي على طول وإنما تعتمد على صفة‬
‫هي التي تعتمد على المفتاح الرئيسي‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪23‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (3NF‬االختبار الثالث‬


‫‪J‬‬
‫في الجدول التالي نالحظ أن رقم القسم يعتمد مباشرة على المفتاح الرئيسي‪,‬‬
‫بينما اسم مدير القسم يعتمد على رقم القسم وليس على المفتاح الرئيسي‪.‬‬

‫‪SSN‬‬ ‫‪Dep-no‬‬ ‫‪Dep-manager‬‬


‫‪ssn‬‬ ‫‪Dep-no‬‬ ‫‪Dep-manager‬‬
‫‪10‬‬ ‫‪1‬‬ ‫‪jon‬‬
‫‪35‬‬ ‫‪2‬‬ ‫‪dana‬‬
‫‪Dep-no‬‬ ‫‪TFD‬‬
‫‪55‬‬ ‫‪3‬‬ ‫‪nada‬‬
‫‪20‬‬ ‫‪4‬‬ ‫‪noha‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪24‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (3NF‬االختبار الثالث‬


‫في هذه الحالة يكون الحل‪:‬‬
‫‪J‬‬
‫‪ /1‬نحذف الصفة المتعمدة من الجدول األساسي‪.‬‬
‫‪ /2‬ننشأ جدول جديد به الصفة المعتمدة مع الصفة الوسيطة‪ ,‬ونعين الصفة‬
‫‪ssn‬‬ ‫‪Dep-no‬‬ ‫‪Dep-manager‬‬
‫الجدول الجديد‬ ‫الوسيطة مفتاح رئيسي‪.‬‬
‫‪10‬‬ ‫‪1‬‬ ‫‪jon‬‬
‫‪35‬‬ ‫‪2‬‬ ‫‪dana‬‬
‫‪55‬‬ ‫‪3‬‬ ‫‪nada‬‬
‫‪20‬‬ ‫‪4‬‬ ‫‪noha‬‬ ‫‪Dep-no‬‬ ‫‪Dep-manager‬‬
‫المفتاح الرئيسي في الجدول‬
‫الجديد هو الصفة الوسيطة‪.‬‬
‫‪1‬‬ ‫‪jon‬‬
‫‪2‬‬ ‫‪dana‬‬
‫‪3‬‬ ‫‪nada‬‬ ‫وهنا هي رقم القسم‪.‬‬
‫‪4‬‬ ‫‪noha‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪25‬‬


‫االختبار الرابع‬ ‫االختبار الثالث‬ ‫االختبار الثاني‬ ‫االختبار األول‬

‫)‪ (BCNF‬االختبار الرابع‬


‫‪J‬‬
‫هذا االختبار استخدامه غير شائع‪ ,‬ومن النادر‬
‫وجود حاالت تحتاج إلى إمرارها من خالله‪.‬‬

‫‪5/23/2019‬‬ ‫‪Free Photo Template from www.brainybetty.com‬‬ ‫‪26‬‬


‫مسائل على الصيغة المعيارية‬

..‫ضعي الجداول التالية في الصيغة المعيارية الثالثة‬


Student = ( S_ID , S_Name , Course , [ C_No ,
C_Name , Instructor , Grade ] )
1NF:
R1= ( S_ID , S_Name )
R2 = ( S_ID , C_No , C_Name , Instructor , Grade )
2NF:
R1= ( S_ID , S_Name )
R3 = ( C_No , C_Name , Instructor )
R4 = (S_ID , C_No , Grade )

5/23/2019 Free Photo Template from www.brainybetty.com 27


‫مسائل على االختبارات‬

3NF:
R1= ( S_ID , S_Name )
R3 = ( C_No , C_Name , Instructor )
R4 = (S_ID , C_No , Grade )

5/23/2019 Free Photo Template from www.brainybetty.com 28


‫مسائل على االختبارات‬
..‫ضعي الجداول التالية في الصيغة المعيارية الثالثة‬
Patient = ( P_No , P_Name , BD , Madicl_history
[{ Dise_ Code , Dise_Name ]} , Date_in ,
Date_out ) 1NF:

R1= ( P_No , P_Name , BD , Date_in , Date_out )


R2 = (P_No , Dise_ Code , Dise_Name )
2NF:
R1 = ( P_No , P_Name , BD , Date_in , Date_out )
R3 = ( Dise_ Code , Dise_Name )
R4 = ( P_No , Dise_ Code )

5/23/2019 Free Photo Template from www.brainybetty.com 29


‫مسائل على االختبارات‬

3NF:
R1 = ( P_No , P_Name , BD , Date_in ,
Date_out )
R3 = ( Dise_ Code , Dise_Name )
R4 = ( P_No , Dise_ Code )

5/23/2019 Free Photo Template from www.brainybetty.com 30


‫مسائل على االختبارات‬
..‫ضعي الجداول التالية في الصيغة المعيارية الثالثة‬
Doctor = ( D_ID , D_Name , Dept_no ,
Dept_Name , patios [{ P_No , P_Name ,
Treatment [{ T_no , Dese , Quality ]} ]} )
1NF:
R1= ( D_ID, P_No , P_Name , Treatment [{ T_no , Dese ,
Quality ]} )
R2 = ( D_ID , D_Name , Dept_no , Dept_Name )
R3 = ( D_ID , P_NO , T_No , Dese , Quality )
R4 = ( D_ID, P_No , P_Name )

5/23/2019 Free Photo Template from www.brainybetty.com 31


‫مسائل على االختبارات‬
2NF:

R2 = ( D_ID , D_Name , Dept_no , Dept_Name )


R5 = ( T_No , Dese )
R6 = ( D_ID , P_NO , T_No , Quality )
R7 = ( P_No , P_Name )
R8 = ( D_ID , P_No )

5/23/2019 Free Photo Template from www.brainybetty.com 32


‫مسائل على االختبارات‬
3NF:

R5 = ( T_No , Dese )
R6 = ( D_ID , P_NO , T_No , Quality )
R7 = ( P_No , P_Name )
R8 = ( D_ID , P_No )
R9 = ( Dep_no , Dep_Name )
R10 = ( D_ID , D_Name , dep_no )

5/23/2019 Free Photo Template from www.brainybetty.com 33

You might also like