Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Normalization

22,685 views

Published on

Published in: Business, Technology

Normalization

  1. 1. ‫المادة: تصميم قواعد المعطيات ‪DBAR‬‬ ‫الفصل الخامس التنظيم )‪(Normalization‬‬ ‫ملخص:‬ ‫يركز هذا الفصل على تعريف إشكاليات التصميم السيئ لقاعدة البيانات،‬ ‫وطرق تنظيم القاعدة.‬ ‫أهداف تعليمية:‬ ‫يتضمن هذا الفصل:‬ ‫•تعريف إشكاليات التصميم السيئ لقاعدة البيانات.‬ ‫•الشكل النظامي الول )‪.(1NF‬‬ ‫•الشكل النظامي الثاني )‪.(2NF‬‬ ‫•الشكل النظامي الثالث )‪.(3NF‬‬ ‫•الشكل النظامي ‪.(BCNF (Boycee-Codd Normal form‬‬ ‫•الشكل النظامي الرابع )‪.(4NF‬‬ ‫1/42‬
  2. 2. ‫1.مقدمة:‬ ‫تعرفنها سهابقاً على مسهتويات التجريهد الثلث التهي يمهر بهها بناء قاعدة‬ ‫البيانات، وههي المسهتوى المفهومهي والمسهتوى المنطقهي والمسهتوى‬ ‫الفيزيائي، ورأينها أن المسهتوى المفهومهي ينتههي ببناء مخطهط ‪ERD‬‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ويتضمن ما يلي:‬ ‫•عزل الكيانات.‬ ‫•تحديد الواصفات ومجالت تعريفها.‬ ‫•تحديد العلقات بين الكيانات.‬ ‫•تحديد المفاتيح المرشحة والمفاتيح الساسية للكيانات.‬ ‫•إنشاء مخطط ‪.ERD‬‬ ‫•تدقيق مخطط ‪ ERD‬من قبل مصمم قاعدة البيانات‬ ‫ّ‬ ‫بالتعاون مع المستثمرين.‬ ‫يبدأ المسهتوى المنطقهي فهي بناء قاعدة المعطيات بعمليهة التنظيهم،‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ويقصهد بالتنظيهم )‪ (Normalization‬تصهميم جداول قاعدة البيانات بحيهث‬ ‫نتحكم بتكرار المعطيات ونتجنب حالت الشذوذ التي يمكن أن تنتج عن‬ ‫عمليات الضافة والحذف والتعديل على المعطيات.‬ ‫سهنقوم بدايهة بدراسهة الشكاليات التهي يعانهي منهها التصهميم السهيئ‬ ‫لقاعدة البيانات، ومهن ثهم سهندرس مسهتويات التنظيهم وخصهائص كهل‬ ‫منها.‬ ‫2.جداول قواعد المعطيات والتنظيم‬ ‫•ل يعتبر التصميم الجيد لقواعد المعطيات العلئقية كافياً لتجنب‬ ‫تكرار المعطيات، فطالما أن التعامل مع جداول قاعدة المعطيات‬ ‫مبني على أساس ملفات مخزنة في نظام الملفات، لن يستطيع‬ ‫نظام إدارة قواعد المعطيات العلئقية أن يدرك كيفية وضرورة‬ ‫تحديد توزع المعطيات أو معالجتها؛‬ ‫•يعتبر الجدول حجر الساس في بنية تصميم قاعدة المعطيات،‬ ‫بالتالي تعتبر دراسة بنية الجدول أمر من أهم مراحل عملية‬ ‫التصميم تلك، فعلى الرغم من أن تصميم قاعدة المعطيات‬ ‫بالعتماد على معايير ومخططات خاصة - كمخططات الكيانات-‬ ‫العلقات - غالباً ما ينتج عنها بنى جداول جيدة، إل أن احتمال‬ ‫الحصول على البنى السيئة يبقى كبيراً؛‬ ‫2/42‬
  3. 3. ‫•يمكن التعرف على أن بنى بعض الجداول في قاعدة المعطيات‬ ‫سيئة، ويمكن تجنب الحصول على ذلك النوع من بنى الجداول من‬ ‫خلل تنظيم تلك الجداول؛‬ ‫•يعبر مصطلح التنظيم عن الطريقة المتبعة لنشاء وتصحيح بنى‬ ‫الجداول من أجل تجنب تكرار المعطيات أو التخلص من الشذوذ‬ ‫المحتمل في تلك المعطيات؛‬ ‫َّ‬ ‫•يعمل التنظيم من خلل مجموعة مراحل معرفة على قاعدة‬ ‫المعطيات يطلق عليها اسم الشكال النظامية، يطلق على‬ ‫المراحل الثلثة الولى اسم الشكل النظامي الول، الشكل‬ ‫النظامي الثاني، الشكل النظامي الثالث على الترتيب، بحيث‬ ‫يعتبر – من وجهة نظر بنيوية – أن الشكل النظامي الثاني أفضل‬ ‫من الشكل النظامي الول كما أن الشكل النظامي الثالث أفضل‬ ‫من الشكل النظامي الثاني؛‬ ‫•يعتبر الشكل النظامي الثالث أكثر الشكال السابقة ملءمة‬ ‫لغراض تصميم قواعد معطيات العمال، ولكن وعلى الرغم من‬ ‫أن تنظيم قواعد المعطيات هو عامل أساسي في تصميم قواعد‬ ‫المعطيات، إل أنه ل ينبغي الفتراض بأن المستوى العلى من‬ ‫التنظيم هو المستوى الفضل، فكلما ارتفع مستوى التنظيم كلما‬ ‫ازداد عدد الرتباطات المنفذة لسترجاع الخرج المطلوب وكلما‬ ‫ازداد زمن الستجابة من قبل قاعدة المعطيات، وبالتالي ينبغي‬ ‫أن تؤخذ سرعة الداء بعين العتبار أثناء تنظيم قواعد المعطيات‬ ‫مما يؤدي إلى ظهور مفهوم إعادة التنظيم ‪Denormalization‬؛‬ ‫•يعبر مصطلح إعادة التنظيم عن النتقال من شكل نظامي إلى‬ ‫شكل نظامي أدنى منه، ويهدف إلى تسريع الداء واستجابة‬ ‫قاعدة المعطيات على حساب تكرار المعطيات.‬ ‫3.إشكاليات التصميم السيئ لقاعدة البيانات:‬ ‫بفرض أن شركة ما تضم مجموعة من مسؤولي المبيعات يعملون في‬ ‫عدة مواقهع، تريهد الدارة تخزيهن البيانات المتعلقهة بموظفيهها وبيانات‬ ‫مسههتودعاتها فههي قاعدة معطيات. المحاولة الولى لبناء القاعدة نتههج‬ ‫عنها الجدول التالي:‬ ‫‪Id‬‬ ‫‪Name‬‬ ‫‪Address‬‬ ‫‪Title‬‬ ‫‪Store‬‬ ‫‪Store_Address‬‬ ‫‪Store_Phone‬‬ ‫1‪Sr‬‬ ‫‪Jane‬‬ ‫1‪E‬‬ ‫‪Sales Rep‬‬ ‫1‪A‬‬ ‫1‪S‬‬ ‫7654321-110‬ ‫2‪Sr‬‬ ‫‪Fred‬‬ ‫2‪E‬‬ ‫‪Sales Rep‬‬ ‫1‪A‬‬ ‫1‪S‬‬ ‫7654321-110‬ ‫3‪Sr‬‬ ‫‪Ed‬‬ ‫3‪E‬‬ ‫‪Manager‬‬ ‫1‪A‬‬ ‫1‪S‬‬ ‫7654321-110‬ ‫4‪Sr‬‬ ‫‪Ann‬‬ ‫4‪E‬‬ ‫‪Sales Rep‬‬ ‫2‪A‬‬ ‫2‪S‬‬ ‫4321987-110‬ ‫3/42‬
  4. 4. ‫‪Sr5 Jone‬‬ ‫5‪E‬‬ ‫‪Sales Rep‬‬ ‫2‪A‬‬ ‫2‪S‬‬ ‫4321987-110‬ ‫‪Sr6 Smith‬‬ ‫6‪E‬‬ ‫‪Manager‬‬ ‫2‪A‬‬ ‫2‪S‬‬ ‫4321987-110‬ ‫يتضمههن هذا الجدول بيانات الموظفيههن وبيانات المسههتودعات، ومههن‬ ‫الواضح وجود تكرار في بيانات المستودعات.‬ ‫إذا أردن هها إدخال بيانات موظ ههف جدي ههد فيج ههب إدخال بيانات موقع ههه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫)المسهتودع( أيضاً، وللحفاظ على عدم تناقهض البيانات فهي القاعدة‬ ‫يج هب إدخال بيانات المس هتودع بدق هة وبشك هل مطاب هق للقي هم المدخلة‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ً‬ ‫سهابقا )لحهد الموظفيهن السهابقين فهي نفهس المسهتودع(، هنها تظههر‬ ‫مشكلة تكرار البيانات بالضافة طبعاً لحجم التخزين المهدور.‬ ‫لحظ الشكاليات التالية:‬ ‫1.3.بفرض أننها نريهد إدخال بيانات مسهتودع جديهد قبهل توظيهف أحهد‬ ‫فيههه، هذا يتطلب إدخال قيههم ‪ Null‬فههي بيانات الموظههف ومههن‬ ‫ضمنههها الحقههل المفتاح )‪ (Id‬ممهها يخرق شرط تكامههل البيانات.‬ ‫هذا ما يدعى بإشكالية الدخال )‪.(Insertion anomaly‬‬ ‫2.3.بفرض أننههها حذفنههها تسهههجيلة الموظهههف الخيهههر فهههي أحهههد‬ ‫المس هتودعات، س هيؤدي ذلك إلى فقدان بيانات مس هتودع موجود‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫في الشركة. هذا ما يدعى بإشكالية الحذف )‪.(Deletion anomaly‬‬ ‫3.3.إذا أردنها تغييهر رقهم هاتهف أحهد المسهتودعات، عندهها يجهب تغييهر‬ ‫رقم الهاتف في كل تسجيلت موظفي ذلك المستودع، فإذا تم‬ ‫تغييهر جزء مهن هذه التسهجيلت دون جزء آخهر سهيؤدي ذلك إلى‬ ‫بيانات متناقضهة فهي قاعدة البيانات، وهذا مها يدعهى بإشكاليهة‬ ‫التعديل )‪.(Update anomaly‬‬ ‫هابق إلى‬ ‫هء الجدول السه‬ ‫هابقة هن خلل تجزيه‬ ‫مه‬ ‫هل السه‬ ‫هم هل المشاكه‬ ‫يته حه‬ ‫هتورد مفتاح الجدول‬ ‫هن ويسه‬ ‫هل بيانات الموظفيه‬ ‫ها يحمه‬ ‫هن، أحدهمه‬ ‫جدوليه‬ ‫الثاني الذي يحمل بيانات المستودعات:‬ ‫‪Id‬‬ ‫‪Name‬‬ ‫‪Address‬‬ ‫‪Title‬‬ ‫‪Store‬‬ ‫1‪Sr‬‬ ‫‪Jane‬‬ ‫1‪E‬‬ ‫‪Sales Rep‬‬ ‫1‪A‬‬ ‫2‪Sr‬‬ ‫‪Fred‬‬ ‫2‪E‬‬ ‫‪Sales Rep‬‬ ‫1‪A‬‬ ‫3‪Sr‬‬ ‫‪Ed‬‬ ‫3‪E‬‬ ‫‪Manager‬‬ ‫1‪A‬‬ ‫4‪Sr‬‬ ‫‪Ann‬‬ ‫4‪E‬‬ ‫‪Sales Rep‬‬ ‫2‪A‬‬ ‫5‪Sr‬‬ ‫‪Jone‬‬ ‫5‪E‬‬ ‫‪Sales Rep‬‬ ‫2‪A‬‬ ‫6‪Sr‬‬ ‫‪Smith‬‬ ‫6‪E‬‬ ‫‪Manager‬‬ ‫2‪A‬‬ ‫4/42‬
  5. 5. ‫‪Store‬‬ ‫‪Store_Address‬‬ ‫‪Store_phone‬‬ ‫1‪A‬‬ ‫1‪S‬‬ ‫7654321-110‬ ‫2‪A‬‬ ‫2‪S‬‬ ‫4321987-110‬ ‫- حهل إشكاليهة الدخال: عنهد إدخال بيانات موظهف جديهد، يتهم تسهجيل‬ ‫مفتاح المس هتودع الذي يعم هل في هه، أم ها بقي هة بيانات المس هتودع فه هي‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫هة هي‬ ‫هر بيانات متناقضه فه‬ ‫هتقل وبالتالي لن تظهه‬ ‫هة هي جدول مسه‬ ‫مخزنه فه‬ ‫هتودع‬ ‫ها إدخال بيانات مسه‬ ‫هتودعات، وإذا أردنه‬ ‫قاعدة البيانات بشأن المسه‬ ‫جديهد فيمكهن إدخالهها بصهرف النظهر عمهن يعمهل فهي المسهتودع، ممها‬ ‫يجنبنا إشكالية الدخال.‬ ‫- حهل إشكاليهة الحذف: عنهد حذف الموظهف الخيهر فهي مسهتودع، تبقهى‬ ‫بيانات المستودع في جدول مستقل.‬ ‫- حل إشكال ية التعد يل: ع ند تعد يل ر قم ها تف الم ستودع، ي تم التعد يل‬ ‫على تسجيلة واحدة في جدول المستودعات.‬ ‫الجراءات السابقة )تجزيء الجدول( هي جزء من عملية تنظيم قاعدة‬ ‫البيانات، والتي سنتعرف عليها بتفصيل أكثر في هذا الفصل والفصل‬ ‫القادم.‬ ‫4.مستويات التنظيم:‬ ‫كمها سهبق وعرفنها، التنظيهم ههو عمليهة ترتيهب وتوزيهع جداول قاعدة‬ ‫المعطيات العلئقيههة، للتقليههل مههن تكرار المعطيات وتقليههص حجههم‬ ‫التخزيههن المطلوب ولحههل إشكاليات الدخال والحذف والتعديههل مههع‬ ‫المحافظ هة على تكام هل البيانات. وغالباً م ها ينت هج ع هن عملي هة التنظي هم‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫زيادة فهي عدد جداول القاعدة. ويتهم تنظيهم قاعدة البيانات مهن خلل‬ ‫إخضاعهها لمجموعهة اختبارات والتعديهل على البنيهة لتحقيهق مجموعهة‬ ‫معايير.‬ ‫مسهتويات التنظيهم السهاسية ههي ثلث )الشكهل النظامهي الول ‪،1NF‬‬ ‫الشكهل النظامهي الثانهي ‪ ،2NF‬الشكهل النظامهي الثالث ‪ ،(3NF‬ويقصهد‬ ‫عادة بتنظيم القاعدة وضعها في الشكل النظامي الثالث.‬ ‫يضاف للمس هتويات الثلث الشك هل المقترح مهن قب هل ‪ R. Boyce‬ويطلق‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫عليه تسمية ‪ ،BCNF‬والشكلين النظاميين الرابع والخامس.‬ ‫5/42‬
  6. 6. ‫مستو‬ ‫ى‬ ‫عملية التنظيم‬ ‫التنظ‬ ‫يم‬ ‫حذف المجموعات المكررة. أنشئ جدول ً مستقل ً لكل مجموعة واصفات‬ ‫‪1NF‬‬ ‫مترابطة، وعيّن مفتاحا أساسيا لكل جدول.‬ ‫حذف البيانات المكررة. إذا وجدت أي واصفة تعتمد فقط على جزء من مفتاح‬ ‫‪2NF‬‬ ‫متعدد-القيمة، انقل الواصفة إلى جدول مستقل.‬ ‫حذف العمدة غير المرتبطة على مفتاح. إذا وجد مجموعة من الواصفات ل‬ ‫‪3NF‬‬ ‫تساهم في وصف المفتاح، انقلها إلى جدول مستقل.‬ ‫‪ .Boyce-Codd Normal Form‬إذا لم تكن العلقة بين المفاتيح المرشحة‬ ‫‪BCNF‬‬ ‫علقة واضحة، افصل هذه المفاتيح في جداول مختلفة.‬ ‫عزل العلقات العديدة المستقلة عن بعضها. ل وجود لجدول يحوي علقات‬ ‫‪4NF‬‬ ‫1:‪ n‬أو ‪ n:m‬غير المترابطة بشكل مباشر.‬ ‫عزل العلقات العديدة المترابطة دلليا. وجود قيود عمليّة على البيانات‬ ‫‪5NF‬‬ ‫تستدعي الفصل المنطقي للعلقات عديد لعديد.‬ ‫س هنتناول ف هي هذا الفص هل الشكال النظامي هة الثلث الس هاسية، كم ها‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫سنتناول المستويان ‪.BCNF, 4NF‬‬ ‫6/42‬
  7. 7. ‫1.4.الشكل النظامي الول )‪:(1NF‬‬ ‫يقال عن جدول في قاعدة البيانات أنه من الش كل النظامي الول إذا‬ ‫كان تقاطهع كهل سهطر وعمود فيهه )أي الخليها(، يتضمهن قيمهة وحيدة‬ ‫غير قابلة للتجزئة.‬ ‫الخطوات التي يتكون منها الشكل النظامي الول:‬ ‫1.إزالة المجموعات المكررة: تبدأ هذه المرحلة من خلل‬ ‫عرض المعطيات ضمن جدول بحيث تتكون كل خلية فيه‬ ‫من قيمة وحيدة ول توجد هناك أية مجموعات مكررة. يتم‬ ‫إزالة المجموعات المكررة من خلل إزالة كافة القيم‬ ‫الفارغة )‪ (NULL‬والتأكد من أن كافة الواصفات تحتوي‬ ‫على قيم مناسبة.‬ ‫2.تعريف المفتاح الرئيسي.‬ ‫3.تعريف كافة التبعيات.‬ ‫مثال:‬ ‫يمثل الشكل التالي بيانات شركة تأجير عقارات:‬ ‫‪C_id‬‬ ‫‪P_num‬‬ ‫‪C_name‬‬ ‫‪P_address‬‬ ‫‪R_start‬‬ ‫‪R_end‬‬ ‫‪Rent‬‬ ‫‪Owner_num‬‬ ‫‪Owner‬‬ ‫3‪Pr‬‬ ‫‪A‬‬ ‫69-1-1‬ ‫89-1-21‬ ‫587‬ ‫32‪Po‬‬ ‫‪Jones‬‬ ‫10‬ ‫‪Jane‬‬ ‫22‪Pr‬‬ ‫‪B‬‬ ‫89-1-2‬ ‫00-03-3‬ ‫0021‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫20‬ ‫71‪Pr‬‬ ‫‪Fred‬‬ ‫‪C‬‬ ‫88-1-2‬ ‫09-11-1‬ ‫0001‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫23‪Pr‬‬ ‫‪D‬‬ ‫09-1-6‬ ‫59-1-3‬ ‫059‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫30‬ ‫‪Ed‬‬ ‫22‪Pr‬‬ ‫‪B‬‬ ‫00-1-4‬ ‫‪null‬‬ ‫0021‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫حيث:‬ ‫‪C_id‬‬ ‫رقم الزبون‬ ‫‪P_num‬‬ ‫رقم العقار‬ ‫‪C_name‬‬ ‫اسم الزبون‬ ‫‪P_address‬‬ ‫عنوان العقار‬ ‫‪R_start‬‬ ‫تاريخ بدء اليجار‬ ‫‪R_end‬‬ ‫تاريخ نهاية اليجار‬ ‫‪Rent‬‬ ‫قيمة اليجار‬ ‫‪Owner_num‬‬ ‫رقم مالك العقار‬ ‫‪Owner‬‬ ‫اسم مالك العقار‬ ‫7/42‬
  8. 8. ‫‪ C_id‬هو المفتاح الساسي للجدول.‬ ‫يمكههن ملحظههة أن قيههم خليهها الجدول قابلة للتجزئة )لحههظ البيانات‬ ‫المكتوبههة بخههط غامههق(، وهذا التصههميم سههيء حيههث ل يمكههن فيههه‬ ‫استخلص معلومات مالك عقار معين بسهولة. كما يعاني هذا التصميم‬ ‫أيضاً من مشكلة تكرار المعطيات، فكلما تم تأجير عقار يجب أن تدخل‬ ‫بياناته التفصيلية من جديد.‬ ‫لوضهع الجدول السهابق فهي الشكهل النظامهي الول يجهب تجزئة الخليها‬ ‫الحاوية على معطيات قابلة للتجزئة. ويمكن عمل ذلك من خلل إدخال‬ ‫بيانات كهل عمليهة إيجار فهي سهطر جديهد، أي يجهب أن يصهبح المفتاح‬ ‫السهاسي ههو نتيجهة تركيهب رقهم الزبون ورقهم العقار )‪(c_id, p_num‬‬ ‫علماً أن التصهميم مبنهي على أسهاس تخزيهن بيانات العقارات المؤجرة‬ ‫حالياً دون حفظ تاريخ حركات اليجار، بمعنى أن نفس الزبون ل يمكن‬ ‫أن تتواجد له حركتي إيجار لنفس العقار.‬ ‫‪C_id‬‬ ‫‪P_num‬‬ ‫‪C_name‬‬ ‫‪P_address‬‬ ‫‪R_start‬‬ ‫‪R_end‬‬ ‫‪Rent‬‬ ‫‪O_num‬‬ ‫‪Owner‬‬ ‫10‬ ‫3‪Pr‬‬ ‫‪Jane‬‬ ‫‪A‬‬ ‫69-1-1‬ ‫89-1-21‬ ‫587‬ ‫32‪Po‬‬ ‫‪Jones‬‬ ‫10‬ ‫22‪Pr‬‬ ‫‪Jane‬‬ ‫‪B‬‬ ‫89-1-2‬ ‫00-03-3‬ ‫0021‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫20‬ ‫71‪Pr‬‬ ‫‪Fred‬‬ ‫‪C‬‬ ‫88-1-2‬ ‫09-11-1‬ ‫0001‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫30‬ ‫23‪Pr‬‬ ‫‪Ed‬‬ ‫‪D‬‬ ‫09-1-6‬ ‫59-1-3‬ ‫059‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫30‬ ‫22‪Pr‬‬ ‫‪Ed‬‬ ‫‪B‬‬ ‫00-1-4‬ ‫‪null‬‬ ‫0021‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫تطبيق:‬ ‫طبق معيار ‪ 1NF‬على الجدول التالي:‬ ‫‪Employees‬‬ ‫‪id‬‬ ‫‪Name‬‬ ‫‪children‬‬ ‫‪birth_date‬‬ ‫1001‬ ‫‪John Doe‬‬ ‫‪Betty, Frank‬‬ ‫09-3-4 ,88-2-2‬ ‫2001‬ ‫‪Jane Doe‬‬ ‫‪Betty, Frank‬‬ ‫09-3-4 ,88-2-2‬ ‫3001‬ ‫‪Freda Fish‬‬ ‫,‪Henry, Jane‬‬ ‫,48-8-2 ,97-4-4‬ ‫‪Jill, Bill‬‬ ‫09-3-01 ,88-9-7‬ ‫8/42‬
  9. 9. ‫4001‬ ‫‪Bill Bass‬‬ ‫,‪Hank, April‬‬ ‫,49-9-9 ,98-4-5‬ ‫‪Ellen‬‬ ‫89-01-7‬ ‫الحل:‬ ‫‪id‬‬ ‫‪Name‬‬ ‫‪children‬‬ ‫‪birth_date‬‬ ‫1001‬ ‫‪John Doe‬‬ ‫‪Betty‬‬ ‫88-2-2‬ ‫1001‬ ‫‪John Doe‬‬ ‫‪Frank‬‬ ‫09-3-4‬ ‫2001‬ ‫‪Jane Doe‬‬ ‫‪Betty‬‬ ‫88-2-2‬ ‫2001‬ ‫‪Jane Doe‬‬ ‫‪Frank‬‬ ‫09-3-4‬ ‫3001‬ ‫‪Freda Fish‬‬ ‫‪Henry‬‬ ‫97-4-4‬ ‫3001‬ ‫‪Freda Fish‬‬ ‫‪Jane‬‬ ‫48-8-2‬ ‫3001‬ ‫‪Freda Fish‬‬ ‫‪Jill‬‬ ‫88-9-7‬ ‫3001‬ ‫‪Freda Fish‬‬ ‫‪Bill‬‬ ‫09-3-01‬ ‫4001‬ ‫‪Bill Bass‬‬ ‫‪Hank‬‬ ‫98-4-5‬ ‫4001‬ ‫‪Bill Bass‬‬ ‫‪April‬‬ ‫49-9-9‬ ‫4001‬ ‫‪Bill Bass‬‬ ‫‪Ellen‬‬ ‫89-01-7‬ ‫وضهع الجدول فهي الشكهل النظامهي الول ل يحهل مشاكهل التصهميم‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫السيئ إنما هو خطوة في طريق حلها، فبالرغم من وضع جدول إيجار‬ ‫العقارات فهي الشكهل النظامهي الول فإنهه ل يزال يعانهي مهن مشكلة‬ ‫تكرار البيانات، وإشكاليات الضافة والتعديل والحذف.‬ ‫9/42‬
  10. 10. ‫2.4.الشكل النظامي الثاني )‪:(2NF‬‬ ‫يقال عن جدول أنه من الشكل النظامي الثاني إذا حقق ما يلي:‬ ‫•هو من الشكل النظامي الول.‬ ‫• كل الواصفات التي ل تشكل جزءاً من المفتاح الساسي،‬ ‫تعتمد وظيفياً وبشكل كلي على المفتاح الساسي.‬ ‫الخطوات التي يتكون منها الشكل النظامي الثاني:‬ ‫1.تعريف كافة مكونات المفاتيح: ينبغي أولً كتابة كل‬ ‫جزء من المفتاح الرئيسي )المركب( على حدة ثم‬ ‫كتابة المفتاح ككل على سطر آخر. و بعد ذلك‬ ‫سيتم اعتبار كل سطر مما سبق مفتاح رئيسي‬ ‫في جدول خاص.‬ ‫2.تعريف الواصفات ذات التبعيات‬ ‫التبعية الوظيفية )‪:(functional dependency‬‬ ‫تعتم هد الواص هفة ‪ B‬على الواص هفة ‪ A‬وظيفياً إذا كان هت ك هل قيم هة له ه ‪A‬‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ً‬ ‫تقابل ها قيمة وحيدة ل ه ‪ ،B‬فمثل ر قم الزبون يحدد اسمه، و كل قي مة ل ه‬ ‫‪ c_id‬تقابلهها قيمهة وحيدة لهه ‪ c_name‬لذلك يقال أن ‪ c_name‬تتبهع وظيفياً‬ ‫له ‪ ،c_id‬أو يقال أن ‪ c_id‬تحدّد ‪.(c_name(Determine‬‬ ‫‪ B‬تعتمهههد وظيفياً بشكهههل كلي على مفتاح مركهههب )‪functional‬‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫‪fully‬‬ ‫‪ ،(dependency‬إذا كان المفتاح المرك هههب يحدد ‪ ،B‬و ‪ B‬ل تعتم هههد وظيفياً‬ ‫ه‬ ‫ه‬ ‫على جزء منه.‬ ‫تكتب علقات التبعية بين الواصفات على الشكل التالي:‬ ‫‪C_id → c_name‬‬ ‫‪P_num → p_address, owner_num, owner‬‬ ‫يبدأ وضهع الجداول فهي الشكهل النظامهي الثانهي بتحديهد جميهع علقات‬ ‫التبعية بين الواصفات، ومن ثم تجزيء الجداول )‪ ،(decomposition‬وهي‬ ‫تضمههن اعتماد جميههع الواصههفات التههي ل تشكههل جزءاً مههن المفتاح‬ ‫الساسي كلياً وبشكل مباشر على المفتاح الساسي.‬ ‫01/42‬
  11. 11. ‫يمكهن السهتنتاج مهن التعريهف السهابق أن جميهع الجداول ذات المفتاح‬ ‫البسهيط )غيهر المركهب( والتهي تخضهع لمعيار ‪ 1NF‬ههي حتماً مهن الشكهل‬ ‫النظامي الثاني.‬ ‫بتطبيق ذلك على مثالنا نجد العلقات التالية:‬ ‫.‪a‬‬ ‫‪C_id + p_num‬‬ ‫.‪→ r_start, r_end‬‬ ‫.‪b‬‬ ‫‪C_id‬‬ ‫.‪→ c_name‬‬ ‫.‪c‬‬ ‫‪P_num‬‬ ‫.‪→ p_address, rent, owner_num, owner‬‬ ‫.‪d‬‬ ‫‪Owner_num‬‬ ‫.‪→ owner‬‬ ‫.‪e‬‬ ‫‪C_id + r_start‬‬ ‫,‪→ p_num, p_address, r_end, r_end, rent, owner_num‬‬ ‫.‪owner‬‬ ‫‪f. P_num + r_start‬‬ ‫.‪→ c_id, c_name, r_end‬‬ ‫بمناقشة هذه العلقات نجد ما يلي:‬ ‫‪ r_start, r_end.a‬تعتمهد على )‪ ،(c_id, p_num‬وبمها أن )‬ ‫‪ (c_id, p_num‬ههو المفتاح المركهب فذلك ل يتناقهض‬ ‫مع ‪.2NF‬‬ ‫‪ C_name.b‬تعتمههههد جزئياً على المفتاح السههههاسي )‬ ‫ه‬ ‫ه‬ ‫‪ ،(partial functional dependency‬وهذا يتناقض مع ‪.2NF‬‬ ‫‪.c‬هذه الحالة تشابه الحالة ‪.b‬‬ ‫‪ owner.d‬تعتم هد على ‪ ،owner_num‬و ‪ owner_num‬تعتم هد‬ ‫ه‬ ‫ه‬ ‫على المفتاح السههاسي، أي أن ‪ owner‬تعتمههد على‬ ‫المفتاح الس هاسي بالتعدّي )‪،(transitive dependency‬‬ ‫ه‬ ‫وهذا ل يتناقض مع شرط ‪.2NF‬‬ ‫‪ c_id + r_start.e‬تحدد ,‪p_num, p_address, r_end, r_start‬‬ ‫‪ ،rent, owner, owner_num‬ولك هن )‪ (c_id, r_start‬ه هي‬ ‫ه‬ ‫ه‬ ‫مفتاح مرشح ممكن أن يكون مفتاحاً أساسياً، وبما‬ ‫أننهها لم نقرر بعههد )نحههن فههي طور إعادة تصههميم‬ ‫قاعدة البيانات( فإن هذه العلقهههههة ل تخرق شرط‬ ‫‪.2NF‬‬ ‫‪.f‬هذه الحالة تشابه الحالة ‪.e‬‬ ‫يبدأ تطهبيق معيار ‪ 2NF‬بتجزيهء الجدول انطلقاً مهن علقهة التبعيهة‬ ‫الكاملة )‪:(a‬‬ ‫‪Rental‬‬ ‫‪C_id‬‬ ‫‪P_num‬‬ ‫‪R_start‬‬ ‫‪R_end‬‬ ‫10‬ ‫3‪Pr‬‬ ‫69-1-1‬ ‫89-1-21‬ ‫10‬ ‫22‪Pr‬‬ ‫89-1-2‬ ‫00-03-3‬ ‫11/42‬
  12. 12. ‫20‬ ‫71‪Pr‬‬ ‫88-1-2‬ ‫09-11-1‬ ‫30‬ ‫23‪Pr‬‬ ‫09-1-6‬ ‫59-1-3‬ ‫30‬ ‫22‪Pr‬‬ ‫00-1-4‬ ‫‪Null‬‬ ‫من ثم نشكل الجداول اللزمة لحقول علقات التبعية الجزئية:‬ ‫‪Customer‬‬ ‫‪C_id‬‬ ‫‪C_name‬‬ ‫10‬ ‫‪Jane‬‬ ‫20‬ ‫‪Fred‬‬ ‫30‬ ‫‪Ed‬‬ ‫‪Property‬‬ ‫‪P_num‬‬ ‫‪P_address‬‬ ‫‪rent‬‬ ‫‪Owner_num‬‬ ‫‪Owner‬‬ ‫3‪Pr‬‬ ‫‪A‬‬ ‫587‬ ‫32‪Po‬‬ ‫‪Jones‬‬ ‫22‪Pr‬‬ ‫‪B‬‬ ‫0021‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫71‪Pr‬‬ ‫‪C‬‬ ‫0001‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫23‪Pr‬‬ ‫‪D‬‬ ‫059‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫جداول الشكل النظامي الثاني تحل إشكاليات الحذف والضافة ول‬ ‫ً‬ ‫تحهل إشكاليهة التعديهل، فمثل إذا أردنها تعديهل بيانات أحهد المالكيهن‬ ‫فيج هب تعدي هل مجموع هة م هن التس هجيلت، م ما يتف هق م هع إشكالي هة‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ّه‬ ‫التعديل سابقة الذكر.‬ ‫21/42‬
  13. 13. ‫3.4.الشكل النظامي الثالث )‪:(3NF‬‬ ‫يكون الجدول من الشكل النظامي الثالث إذا حقق ما يلي:‬ ‫•من الشكل النظامي الثاني.‬ ‫•ل توجهد فيهه واصهفات ل تشكهل جزءاً مهن المفتاح‬ ‫الساسي وتعتمد بالتعدّي على المفتاح الساسي.‬ ‫الخطوات التي يتكون منها الشكل النظامي الثالث:‬ ‫1.تعريف كل المحددات الجديدة: ينبغي اعتبار‬ ‫كل محدد في تبعية متعدية مفتاحاً أساسيا‬ ‫لجدول جديد، بحيث يعبر المحدد عن‬ ‫الواصفة التي تحدد قيمتها قيماً أخرى ضمن‬ ‫السطر نفسه.‬ ‫2.تعريف الواصفات ذات التبعيات: يتم في‬ ‫هذه الخطوة تحديد كافة الواصفات‬ ‫المرتبطة بكل محدد معرف في الخطوة‬ ‫ّ‬ ‫الولى، كما يتم هنا تعريف علقات التبعية‬ ‫المتشكلة.‬ ‫3.إزالة الواصفات ذات التبعيات من التبعيات‬ ‫المتعدية: إزالة كافة الواصفات ذات‬ ‫التبعيات من علقات التبعيات المتعدية لكل‬ ‫جدول من جداول العلقة المتعدية.‬ ‫الجداول ‪ Rental‬و ‪ Customer‬ل تحوي واص ههفات تعتم ههد بالتعدي على‬ ‫ه‬ ‫ه‬ ‫المفتاح الساسي، بينما الواصفة ‪ owner‬في الجدول ‪ Property‬يعتمد‬ ‫على ‪ owner_num‬الذي بدوره يعتمهد على ‪ P_num‬ولوضهع هذا الجدول‬ ‫في الشكل النظامي الثالث يجب تجزيئه إلى الجدولين التاليين:‬ ‫‪Property‬‬ ‫‪P_num‬‬ ‫‪P_address‬‬ ‫‪rent‬‬ ‫‪Owner_num‬‬ ‫3‪Pr‬‬ ‫‪A‬‬ ‫587‬ ‫32‪Po‬‬ ‫22‪Pr‬‬ ‫‪B‬‬ ‫0021‬ ‫44‪Po‬‬ ‫71‪Pr‬‬ ‫‪C‬‬ ‫0001‬ ‫23‪Po‬‬ ‫23‪Pr‬‬ ‫‪D‬‬ ‫059‬ ‫23‪Po‬‬ ‫‪Owner‬‬ ‫‪Owner_num‬‬ ‫‪Owner‬‬ ‫31/42‬
  14. 14. ‫32‪Po‬‬ ‫‪Jones‬‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫الش كل النظا مي الثالث ي حل إشكاليات التعد يل والحذف والضا فة،‬ ‫بالضافههة إلى حههل مشكلة تكرار البيانات، وعندمهها يطلب تنظيههم‬ ‫قاعدة بيانات فيقصههد بذلك عادة وضعههها فههي الشكههل النظامههي‬ ‫الثالث.‬ ‫41/42‬
  15. 15. ‫5.الشكل النظامي ‪:(Boycee-Codd (BCNF‬‬ ‫رأينها سهابقاً أنهه عندمها يطلب تنظيهم قاعدة البيانات، فالمقصهود بذلك‬ ‫عادة وضعههها فههي الشكههل النظامههي الثالث )‪ ،(3NF‬ونادراً مهها تحقههق‬ ‫القاعدة شروط ‪ 3NF‬وتخرق الشكال النظاميههة التاليههة )‪،(4Nf, BCNF‬‬ ‫هههل القاعدة هههن ‪ 3NF‬إلى ‪4NF‬‬ ‫مه‬ ‫يضاف إلى ذلك أن الفائدة هههن تحويه‬ ‫مه‬ ‫بسيطة ول تقابل الجهد اللزم لهذا التحويل.‬ ‫يطبق الشكل النظامي ‪ BCNF‬على الجداول الحاوية على:‬ ‫•عدة مفاتيح مرشحة.‬ ‫•مفاتيح مرشحة مركبة.‬ ‫•مفاتيح مرشحة متقاطعة.‬ ‫يكون الجدول مهن الشكهل ‪ BCNF‬إذا كان كهل محدّد مهن محدداتهه يشك ّهل‬ ‫ِ‬ ‫مفتاحاً مرشحاً. وبالتالي إذا كان الجدول يحتوي على مفتاح مرشه‬ ‫هههههح‬ ‫وحي هد س هيتطابق الشك هل النظام هي ‪ Boyce-Codd‬م هع الشك هل النظام هي‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫الثالث.‬ ‫الواصهفة )أو مجموعهة الواصهفات( المحددة ههي واصهفة تعتمهد عليهها‬ ‫واصفات أخرى بشكل كلي.‬ ‫خرق شرط ‪ BCNF‬يحدث عادة ف ههي الجداول الحاوي ههة على أكث ههر م ههن‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫مفتاح مرشههح مركههب وفههي حالت تقاطههع المفاتيههح المرشحههة فههي‬ ‫الجدول.‬ ‫ليكن الشكل التالي، الذي يمثل مخطط تبعيات لجدول معين:‬ ‫يمكن أن نستنتج من المخطط التبعيات التالية:‬ ‫‪‬‬ ‫‪A+B‬‬ ‫‪C, D‬‬ ‫‪‬‬ ‫‪C‬‬ ‫‪B‬‬ ‫51/42‬
  16. 16. ‫ل يحتوي المخطط على تبعيات جزئية أو متعدية، وبالتالي فهو يحقق‬ ‫الشكل النظامي الثالث ولكن الجدول السابق ل يحقق الشكل النظامي‬ ‫‪ Boyce-Codd‬بسبب وجود علقة التبعية من ‪ C‬إلى ‪.B‬‬ ‫يمكن تحويل بنية الجدول السابق بحيث تندرج تحت الشكل النظامي‬ ‫الثالث والشكل النظامي ‪ Boyce-Codd‬من خلل الخطوات التالية:‬ ‫•أولً ينبغي تحويل المفتاح الرئيسي إلى الحقلين ‪ A+C‬وذلك على‬ ‫اعتبار أن ‪ C‬مفتاح مرشح وهو الشرط الذي نفترض تحققه على‬ ‫كافة واصفات الجدول، وبالتالي فإن العلقة من ‪ C‬إلى ‪ B‬تتحول‬ ‫الن إلى علقة تبعية جزئية، وعند هذه النقطة تندرج بنية الجدول‬ ‫تحت الشكل النظامي الول؛‬ ‫•يتم بعد ذلك إتباع الستراتيجية التي نستطيع من خللها التخلص‬ ‫من علقة التبعية الجزئية، كما في الشكل التالي:‬ ‫مثال ١:‬ ‫‪Rental‬‬ ‫‪C_id‬‬ ‫‪P_num‬‬ ‫‪R_start‬‬ ‫‪R_end‬‬ ‫10‬ ‫3‪Pr‬‬ ‫69-1-1‬ ‫89-1-21‬ ‫10‬ ‫22‪Pr‬‬ ‫89-1-2‬ ‫00-03-3‬ ‫20‬ ‫71‪Pr‬‬ ‫88-1-2‬ ‫09-11-1‬ ‫30‬ ‫23‪Pr‬‬ ‫09-1-6‬ ‫59-1-3‬ ‫30‬ ‫22‪Pr‬‬ ‫00-1-4‬ ‫‪Null‬‬ ‫‪Customer‬‬ ‫‪C_id‬‬ ‫‪C_name‬‬ ‫10‬ ‫‪Jane‬‬ ‫20‬ ‫‪Fred‬‬ ‫30‬ ‫‪Ed‬‬ ‫61/42‬
  17. 17. ‫‪Property‬‬ ‫‪P_num‬‬ ‫‪P_address‬‬ ‫‪rent‬‬ ‫‪O_num‬‬ ‫3‪Pr‬‬ ‫‪A‬‬ ‫587‬ ‫32‪Po‬‬ ‫22‪Pr‬‬ ‫‪B‬‬ ‫0021‬ ‫44‪Po‬‬ ‫71‪Pr‬‬ ‫‪C‬‬ ‫0001‬ ‫23‪Po‬‬ ‫23‪Pr‬‬ ‫‪D‬‬ ‫059‬ ‫23‪Po‬‬ ‫‪Owner‬‬ ‫‪O_num‬‬ ‫‪Owner‬‬ ‫32‪Po‬‬ ‫‪Jones‬‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫ها يتضمههن مفتاح بسههيط‬ ‫الجداول ‪ Customer, Owner, Property‬هل منهه‬ ‫كه‬ ‫تعتمد عليه بقية الحقول، فهي حتماً من الشكل ‪.BCNF‬‬ ‫الجدول ‪ Rental‬نجد فيه علقات التبعية التالية:‬ ‫‪a. C_id + p_num‬‬ ‫.‪→ r_start, r_end‬‬ ‫‪b. C_id + r_start → p_num, r_end‬‬ ‫‪c. P_num + r_start‬‬ ‫.‪→ c_id, r_end‬‬ ‫افترضنا في هذا الشكل أن المستأجر ل يستأجر نفس الشقة مرتين،‬ ‫وإل فإن تصميم القاعدة سيختلف.‬ ‫ها‬ ‫المحددات )‪ (C_id + p_num)، (C_id + r_start)، (P_num + r_start‬كلهه‬ ‫مفاتيح مرشحة، وبالتالي فإن الجدول ‪ Rental‬هو من الشكل ‪.BCNF‬‬ ‫مثال ٢:‬ ‫لننظر إلى الجدول التالي:‬ ‫‪Client_Meeting‬‬ ‫‪C_id‬‬ ‫‪I_date‬‬ ‫‪I_time‬‬ ‫‪Room_num‬‬ ‫‪Emp_num‬‬ ‫80‬ ‫00-02--40‬ ‫03:90‬ ‫07‪P‬‬ ‫32-‪Pe‬‬ ‫71‬ ‫00-10-50‬ ‫03:90‬ ‫06‪P‬‬ ‫23-‪Pe‬‬ ‫02‬ ‫00-10-50‬ ‫03:01‬ ‫07‪P‬‬ ‫32-‪Pe‬‬ ‫يتضمههن هذا الجدول بيانات لقاءات موظفههي التسههويق مههع الزبائن. )‬ ‫‪ (C_id, I_date‬ههو المفتاح السهاسي، ويفترض هذا الجدول أن الزبون ل‬ ‫يمكنه إجراء أكثر من مقابلة في نفس اليوم، بينما يستطيع الموظف‬ ‫إجراء أكثر من مقابلة في اليوم، وفي غرفة واحدة.‬ ‫علقات التبعية في الجدول السابق تتضمن:‬ ‫‪a. C_id + I_date‬‬ ‫.‪→ I_time, room_num, Emp_num‬‬ ‫‪b. I_date + I_time + Emp_num‬‬ ‫.‪→ C_id‬‬ ‫71/42‬
  18. 18. ‫‪c. I_date + I_time + Room_num‬‬ ‫.‪→ C_id, Emp_num‬‬ ‫‪d. I_date + Emp_num‬‬ ‫.‪→ Room_num‬‬ ‫ً‬ ‫ل تشكل ‪ a، b، c‬خرقا له ‪ BCNF‬لن المحدد فيها هو مفتاح مرشح.‬ ‫ههل مفتاحاً مرشحاً )يمكه‬ ‫ههن‬ ‫ههاري ل يشكه‬ ‫ههد أن الطرف اليسه‬ ‫ههي ‪ d‬نجه‬ ‫فه‬ ‫للموظف إجراء أكثر من مقابلة في نفس اليوم(، هذه العلقة ل تخرق‬ ‫شرط ‪ 3NF‬لن الطرف اليمينهي ههو جزء مهن مفتاح مرشهح )‪ (C‬ولكنهها‬ ‫تخرق شرط ‪.BCNF‬‬ ‫لوضع الجدول السابق في الشكل ‪ BCNF‬يجب تجزئته على الشكل:‬ ‫‪C_id‬‬ ‫‪I_date‬‬ ‫‪I_time‬‬ ‫‪Emp_num‬‬ ‫80‬ ‫00-02--40‬ ‫03:90‬ ‫32-‪Pe‬‬ ‫71‬ ‫00-10-50‬ ‫03:90‬ ‫23-‪Pe‬‬ ‫02‬ ‫00-10-50‬ ‫03:01‬ ‫32-‪Pe‬‬ ‫‪Emp_num‬‬ ‫‪I_date‬‬ ‫‪Room_num‬‬ ‫32-‪Pe‬‬ ‫00-02--40‬ ‫07‪P‬‬ ‫23-‪Pe‬‬ ‫00-10-50‬ ‫06‪P‬‬ ‫32-‪Pe‬‬ ‫00-10-50‬ ‫07‪P‬‬ ‫الشكهل النظامهي الثالث ههو شكهل كاف لتنظيهم قاعدة البيانات، وههو‬ ‫كاف لتلفي تكرار البيانات ومشاكل الحذف والتعديل والضافة.‬ ‫ملحظة:‬ ‫قهد يكون مهن المفيهد فهي بعهض الحيان إعادة تركيهب الجداول الناتجهة‬ ‫عههن التنظيههم، لعتبارات تسههريع أداء قاعدة البيانات وهذا مهها يدعههى‬ ‫بإعادة التنظيم )‪.(denormalization‬‬ ‫مثال ٣:‬ ‫يضم الجدول التالي بيانات توريد مواد.‬ ‫‪Supplier_id‬‬ ‫‪Supplier_name‬‬ ‫‪Part_num‬‬ ‫‪Quantity‬‬ ‫بفرض أن اس ههههههههههم المورد ل يتكرر، فهناك مفتاحان مرشحان لهذه‬ ‫ه‬ ‫هة )‪ (supplier_id ,part_num‬و )‪ ،(supplier_name ,part_num‬التبعيات‬ ‫العلقه‬ ‫الموجودة في الجدول هي:‬ ‫‪a. Supplier_id‬‬ ‫.‪→ supplier_name‬‬ ‫81/42‬
  19. 19. b. Supplier_name → supplier_id. c. Supplier_id + part_num → quantity. d. Supplier_id + part_num → supplier_name. e. Supplier_name + part_num → supplier_id. f. Supplier_name + part_num → quantity. ‫3 لن الواصهفة الوحيدة التهي ل تشكهل‬NF ‫هذا الجدول ههو مهن الشكهل‬ ‫، وه هي ل تتحدد بجزء م هن مفتاح‬quantity ‫جزءاً م هن مفتاح مرش هح ه هي‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ .‫مرشح‬ ‫ كلهما محدد وليس مفتاحاً مرشحاً، فالجدول‬Supplier_id, supplier_name ‫ يجهب تجزئتهه على‬BCNF ‫. ولجعله مهن الشكهل‬BCNF ‫ليهس مهن الشكهل‬ :‫الشكل‬ Supplier_id Part_num Quantity Supplier_id Supplier_name 24/19
  20. 20. ‫6.الشكل النظامي الرابع )‪:(4NF‬‬ ‫يعتمههههد تعريههههف ‪ 4NF‬على مفهوم التبعيههههة متعددة القيههههم )—<<( )‬ ‫‪ .(multivalued dependency‬تحدث التبعيهة متعددة القيهم فهي جدول يضهم‬ ‫ثلثهة حقول على القهل، عندمها تتطابهق قيهم عدة أسهطر مهن عمود مهع‬ ‫قيمة سطر وحيد في عمود آخر، أي أن قيمة حقل تحدد مجموعة قيم‬ ‫لحقل آخر.‬ ‫يكون الجدول مهن الشكهل ‪ 4NF‬إذا كان مهن الشكهل ‪ BCNF‬وكهل واصهفة‬ ‫تحددهها )تحديهد متعدد القيهم( مجموعهة واصهفات أخرى يجهب أن تعتمهد‬ ‫ً‬ ‫كليا على مجموعة الواصفات هذه.‬ ‫مثال:‬ ‫موظفون تسند لهم مشاريع ويتمتعون بكفاءات معينة:‬ ‫‪Emp‬‬ ‫‪Prj‬‬ ‫‪Skill‬‬ ‫1121‬ ‫1‬ ‫‪Analysis‬‬ ‫1121‬ ‫5‬ ‫‪Analysis‬‬ ‫1121‬ ‫1‬ ‫‪Design‬‬ ‫1121‬ ‫1‬ ‫‪Prog‬‬ ‫مفتاح الجدول السابق هو الواصفات الثلث مجتمعة.‬ ‫والجدول السهابق ههو مهن الشكهل ‪ ،BCNF‬ولكنهه ليهس مهن الشكهل ‪،4NF‬‬ ‫لن:‬ ‫‪a. Emp + prj‬‬ ‫.‪—>> skill‬‬ ‫‪b. Emp + skill‬‬ ‫.‪—>> prj‬‬ ‫ً‬ ‫بينمهها ‪ skill‬تعتمههد على ‪ emp‬أي تعتمههد جزئيا على )‪ ،(emp, prj‬ونفههس‬ ‫الشيء نجده في العلقة ‪ ،b‬حيث ‪ prj‬تعتمد جزئياً على )‪.(emp, skill‬‬ ‫لوضع الجدول السابق في الشكل ‪ 4NF‬يجب تجزئته على الشكل:‬ ‫‪Emp‬‬ ‫‪Prj‬‬ ‫‪Emp‬‬ ‫‪Skill‬‬ ‫تمرين:‬ ‫02/42‬
  21. 21. ‫طبق القواعد اللزمة للوصول إلى الشكل النظامي الثالث للجدول‬ ‫التالي:‬ ‫:‪1NF‬‬ ‫1.نُعبِّر عن المفتاح الرئيسي بلون مميز؛‬ ‫2.تُعبِّر السهم الموضحة في الجهة العلوية من المخطط عن‬ ‫التبعيات المتعلقة بالمفتاح الرئيسي؛‬ ‫3.تُعب ِّر السهم الموضحة في الجهة السفلية من المخطط عن‬ ‫التبعيات الخرى القل أهمية وهي نوعان:‬ ‫‪o‬تبعيات جزئية: وهي التبعيات التي تعتمد على جزء‬ ‫واحد من مفتاح رئيسي مركب من أكثر من واصفة؛‬ ‫‪o‬تبعيات متعدية: وهي التبعيات التي تعتمد على واصفة‬ ‫غير رئيسية وهي ليست موجهة إلى واصفة رئيسية‬ ‫أيضاً، يمكن أن يؤدي هذا النوع من التبعيات إلى‬ ‫الحصول على معطيات شاذة أو غير قياسية.‬ ‫12/42‬
  22. 22. ‫:‪2NF‬‬ ‫:‪3NF‬‬ ‫ملحظة:‬ ‫على الرغم من توافر العديد من الشكال النظامية ذات المستويات‬ ‫العلى، كالشكل النظامي الخامس ‪ 5NF‬أو الشكل النظامي الخاص‬ ‫بالمجال، إل أنه ل يمكن تطبيق تلك الشكال النظامية عملياً أو ضمن بيئة‬ ‫عملية، وهي موجهه بشكل رئيسي للهتمامات الكاديمية والنظرية.‬ ‫22/42‬
  23. 23. ‫7.إعادة تنظيم قواعد المعطيات‬ ‫•الغرض من إعادة التنظيم:‬ ‫على الرغم من أهمية تنظيم العلقات أثناء تصميم قواعد المعطيات،‬ ‫إل أن عملية التصميم تلك تحتوي على عدّة معايير هامة أخرى ينبغي‬ ‫أخذها بعين العتبار، فقاعدة المعطيات الجيدة تتطلب –على سبيل‬ ‫المثال- توافر معالجة وتحليل جيد للمتطلبات، كذلك فإن تطور‬ ‫التصميم وتوسيع قاعدة المعطيات لتحقيق كافة معايير التنظيم‬ ‫يمكن أن يؤدي إلى فرض المزيد من العبء على نظام إدارة قواعد‬ ‫المعطيات وبالتالي ينخفض الداء، بالتالي نستنتج مما سبق ضرورة‬ ‫وجود درجات معينة من إعادة الستنظام بهدف تحسين الداء؛‬ ‫•ينبغي دوما إجراء مقارنات ما بين حسنات وسيئات التنظيم‬ ‫ً‬ ‫وإعادة التنظيم، كأن تتم المقارنة فيما بين سرعة الداء‬ ‫وإمكانيات الشذوذ في المعطيات، مع العلم أن بعض تلك الحالت‬ ‫يندرج تحت الدراسات النظرية. مثلً، هل ينبغي على المصمم أن‬ ‫يوضح أثناء بناء قاعدة المعطيات بأن الواصفة التي تعبر عن‬ ‫الرمز المحلي ‪ ZIP_CODE‬تعبر بدورها عن المدينة في جدول‬ ‫الزبون الذي يحتوي على مفتاح رئيسي هو رقم ذلك الزبون؟ أو‬ ‫أنه من الفضل فصل التبعية المتعدية تلك في جدول خاص، كما‬ ‫يلي:‬ ‫جدول_الرمز_المحلي )الرمز_المحلي، المدينة(‬ ‫في الحقيقة ل يمكن تحديد الجابة عن السؤال السابق، فذلك يعتمد‬ ‫بشكل رئيسي على نمط وتوجه النظام الذي تصمم قاعدة المعطيات‬ ‫من أجله، أو بأسلوب آخر، يمكن إهمال علقة التبعية المتعدية‬ ‫السابقة تلك في معظم أنظمة العمال، في حين يمكن اعتبار‬ ‫ًّ‬ ‫الجدول الجديد المنشأ فعال في أنظمة القوائم البريدية على سبيل‬ ‫المثال والتي تستخدم الرمز المحلي بشكل كبير !!!‬ ‫وكنتيجة لما سبق يمكن أن نستنتج أن التنظيم ل يخضع لقواعد ثابتة،‬ ‫إذ يمكن تجاوز بعض الحالت في سبيل تحسين الداء، وذلك يعتمد‬ ‫بشكل كبير على نوع النظام المصمم؛‬ ‫•يمكن أن تتعرض الجداول غير المنظمة إلى عدة مشاكل، نذكر‬ ‫منها:‬ ‫1.فعالية أقل بكثير أثناء تحديث المعطيات، ففي حالة‬ ‫الجداول غير المنظمة، ينبغي على التطبيقات أن‬ ‫32/42‬
  24. 24. ‫تقوم بالولوج إلى جداول كبيرة للحصول على‬ ‫المعلومات.‬ ‫2.تعتبر إجراءات فهرسة الجداول غير المنظمة‬ ‫مرهقة، فليس عملياً أن يتم بناء العديد من الفهارس‬ ‫للعديد من الواصفات التي تتواجد في جدول غير‬ ‫منظم.‬ ‫3.تؤدي الجداول غير المنظمة إلى التعرض للعديد من‬ ‫العقبات أثناء بناء المناظير )الجداول الفتراضية(.‬ ‫المراجع:‬ ‫•‬ ‫/931001‪http://support.microsoft.com/kb/q‬‬ ‫•‬ ‫‪http://www.ischool.utexas.edu/~wyllys/DMPAMaterials/normover.html‬‬ ‫42/42‬

×