Your SlideShare is downloading. ×
Normalization
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Normalization

8,736
views

Published on

Published in: Business, Technology

5 Comments
8 Likes
Statistics
Notes
No Downloads
Views
Total Views
8,736
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
469
Comments
5
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ‫المادة: تصميم قواعد المعطيات ‪DBAR‬‬ ‫الفصل الخامس التنظيم )‪(Normalization‬‬ ‫ملخص:‬ ‫يركز هذا الفصل على تعريف إشكاليات التصميم السيئ لقاعدة البيانات،‬ ‫وطرق تنظيم القاعدة.‬ ‫أهداف تعليمية:‬ ‫يتضمن هذا الفصل:‬ ‫•تعريف إشكاليات التصميم السيئ لقاعدة البيانات.‬ ‫•الشكل النظامي الول )‪.(1NF‬‬ ‫•الشكل النظامي الثاني )‪.(2NF‬‬ ‫•الشكل النظامي الثالث )‪.(3NF‬‬ ‫•الشكل النظامي ‪.(BCNF (Boycee-Codd Normal form‬‬ ‫•الشكل النظامي الرابع )‪.(4NF‬‬ ‫1/42‬
  • 2. ‫1.مقدمة:‬ ‫تعرفنها سهابقاً على مسهتويات التجريهد الثلث التهي يمهر بهها بناء قاعدة‬ ‫البيانات، وههي المسهتوى المفهومهي والمسهتوى المنطقهي والمسهتوى‬ ‫الفيزيائي، ورأينها أن المسهتوى المفهومهي ينتههي ببناء مخطهط ‪ERD‬‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ويتضمن ما يلي:‬ ‫•عزل الكيانات.‬ ‫•تحديد الواصفات ومجالت تعريفها.‬ ‫•تحديد العلقات بين الكيانات.‬ ‫•تحديد المفاتيح المرشحة والمفاتيح الساسية للكيانات.‬ ‫•إنشاء مخطط ‪.ERD‬‬ ‫•تدقيق مخطط ‪ ERD‬من قبل مصمم قاعدة البيانات‬ ‫ّ‬ ‫بالتعاون مع المستثمرين.‬ ‫يبدأ المسهتوى المنطقهي فهي بناء قاعدة المعطيات بعمليهة التنظيهم،‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ويقصهد بالتنظيهم )‪ (Normalization‬تصهميم جداول قاعدة البيانات بحيهث‬ ‫نتحكم بتكرار المعطيات ونتجنب حالت الشذوذ التي يمكن أن تنتج عن‬ ‫عمليات الضافة والحذف والتعديل على المعطيات.‬ ‫سهنقوم بدايهة بدراسهة الشكاليات التهي يعانهي منهها التصهميم السهيئ‬ ‫لقاعدة البيانات، ومهن ثهم سهندرس مسهتويات التنظيهم وخصهائص كهل‬ ‫منها.‬ ‫2.جداول قواعد المعطيات والتنظيم‬ ‫•ل يعتبر التصميم الجيد لقواعد المعطيات العلئقية كافياً لتجنب‬ ‫تكرار المعطيات، فطالما أن التعامل مع جداول قاعدة المعطيات‬ ‫مبني على أساس ملفات مخزنة في نظام الملفات، لن يستطيع‬ ‫نظام إدارة قواعد المعطيات العلئقية أن يدرك كيفية وضرورة‬ ‫تحديد توزع المعطيات أو معالجتها؛‬ ‫•يعتبر الجدول حجر الساس في بنية تصميم قاعدة المعطيات،‬ ‫بالتالي تعتبر دراسة بنية الجدول أمر من أهم مراحل عملية‬ ‫التصميم تلك، فعلى الرغم من أن تصميم قاعدة المعطيات‬ ‫بالعتماد على معايير ومخططات خاصة - كمخططات الكيانات-‬ ‫العلقات - غالباً ما ينتج عنها بنى جداول جيدة، إل أن احتمال‬ ‫الحصول على البنى السيئة يبقى كبيراً؛‬ ‫2/42‬
  • 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. ‫‪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. ‫‪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. ‫مستو‬ ‫ى‬ ‫عملية التنظيم‬ ‫التنظ‬ ‫يم‬ ‫حذف المجموعات المكررة. أنشئ جدول ً مستقل ً لكل مجموعة واصفات‬ ‫‪1NF‬‬ ‫مترابطة، وعيّن مفتاحا أساسيا لكل جدول.‬ ‫حذف البيانات المكررة. إذا وجدت أي واصفة تعتمد فقط على جزء من مفتاح‬ ‫‪2NF‬‬ ‫متعدد-القيمة، انقل الواصفة إلى جدول مستقل.‬ ‫حذف العمدة غير المرتبطة على مفتاح. إذا وجد مجموعة من الواصفات ل‬ ‫‪3NF‬‬ ‫تساهم في وصف المفتاح، انقلها إلى جدول مستقل.‬ ‫‪ .Boyce-Codd Normal Form‬إذا لم تكن العلقة بين المفاتيح المرشحة‬ ‫‪BCNF‬‬ ‫علقة واضحة، افصل هذه المفاتيح في جداول مختلفة.‬ ‫عزل العلقات العديدة المستقلة عن بعضها. ل وجود لجدول يحوي علقات‬ ‫‪4NF‬‬ ‫1:‪ n‬أو ‪ n:m‬غير المترابطة بشكل مباشر.‬ ‫عزل العلقات العديدة المترابطة دلليا. وجود قيود عمليّة على البيانات‬ ‫‪5NF‬‬ ‫تستدعي الفصل المنطقي للعلقات عديد لعديد.‬ ‫س هنتناول ف هي هذا الفص هل الشكال النظامي هة الثلث الس هاسية، كم ها‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫ه‬ ‫سنتناول المستويان ‪.BCNF, 4NF‬‬ ‫6/42‬
  • 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. ‫‪ 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. ‫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. ‫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. ‫يمكهن السهتنتاج مهن التعريهف السهابق أن جميهع الجداول ذات المفتاح‬ ‫البسهيط )غيهر المركهب( والتهي تخضهع لمعيار ‪ 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. ‫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. ‫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. ‫32‪Po‬‬ ‫‪Jones‬‬ ‫44‪Po‬‬ ‫‪Jan‬‬ ‫23‪Po‬‬ ‫‪Jill‬‬ ‫الش كل النظا مي الثالث ي حل إشكاليات التعد يل والحذف والضا فة،‬ ‫بالضافههة إلى حههل مشكلة تكرار البيانات، وعندمهها يطلب تنظيههم‬ ‫قاعدة بيانات فيقصههد بذلك عادة وضعههها فههي الشكههل النظامههي‬ ‫الثالث.‬ ‫41/42‬
  • 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. ‫ل يحتوي المخطط على تبعيات جزئية أو متعدية، وبالتالي فهو يحقق‬ ‫الشكل النظامي الثالث ولكن الجدول السابق ل يحقق الشكل النظامي‬ ‫‪ 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. ‫‪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. ‫‪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. 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. ‫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. ‫طبق القواعد اللزمة للوصول إلى الشكل النظامي الثالث للجدول‬ ‫التالي:‬ ‫:‪1NF‬‬ ‫1.نُعبِّر عن المفتاح الرئيسي بلون مميز؛‬ ‫2.تُعبِّر السهم الموضحة في الجهة العلوية من المخطط عن‬ ‫التبعيات المتعلقة بالمفتاح الرئيسي؛‬ ‫3.تُعب ِّر السهم الموضحة في الجهة السفلية من المخطط عن‬ ‫التبعيات الخرى القل أهمية وهي نوعان:‬ ‫‪o‬تبعيات جزئية: وهي التبعيات التي تعتمد على جزء‬ ‫واحد من مفتاح رئيسي مركب من أكثر من واصفة؛‬ ‫‪o‬تبعيات متعدية: وهي التبعيات التي تعتمد على واصفة‬ ‫غير رئيسية وهي ليست موجهة إلى واصفة رئيسية‬ ‫أيضاً، يمكن أن يؤدي هذا النوع من التبعيات إلى‬ ‫الحصول على معطيات شاذة أو غير قياسية.‬ ‫12/42‬
  • 22. ‫:‪2NF‬‬ ‫:‪3NF‬‬ ‫ملحظة:‬ ‫على الرغم من توافر العديد من الشكال النظامية ذات المستويات‬ ‫العلى، كالشكل النظامي الخامس ‪ 5NF‬أو الشكل النظامي الخاص‬ ‫بالمجال، إل أنه ل يمكن تطبيق تلك الشكال النظامية عملياً أو ضمن بيئة‬ ‫عملية، وهي موجهه بشكل رئيسي للهتمامات الكاديمية والنظرية.‬ ‫22/42‬
  • 23. ‫7.إعادة تنظيم قواعد المعطيات‬ ‫•الغرض من إعادة التنظيم:‬ ‫على الرغم من أهمية تنظيم العلقات أثناء تصميم قواعد المعطيات،‬ ‫إل أن عملية التصميم تلك تحتوي على عدّة معايير هامة أخرى ينبغي‬ ‫أخذها بعين العتبار، فقاعدة المعطيات الجيدة تتطلب –على سبيل‬ ‫المثال- توافر معالجة وتحليل جيد للمتطلبات، كذلك فإن تطور‬ ‫التصميم وتوسيع قاعدة المعطيات لتحقيق كافة معايير التنظيم‬ ‫يمكن أن يؤدي إلى فرض المزيد من العبء على نظام إدارة قواعد‬ ‫المعطيات وبالتالي ينخفض الداء، بالتالي نستنتج مما سبق ضرورة‬ ‫وجود درجات معينة من إعادة الستنظام بهدف تحسين الداء؛‬ ‫•ينبغي دوما إجراء مقارنات ما بين حسنات وسيئات التنظيم‬ ‫ً‬ ‫وإعادة التنظيم، كأن تتم المقارنة فيما بين سرعة الداء‬ ‫وإمكانيات الشذوذ في المعطيات، مع العلم أن بعض تلك الحالت‬ ‫يندرج تحت الدراسات النظرية. مثلً، هل ينبغي على المصمم أن‬ ‫يوضح أثناء بناء قاعدة المعطيات بأن الواصفة التي تعبر عن‬ ‫الرمز المحلي ‪ ZIP_CODE‬تعبر بدورها عن المدينة في جدول‬ ‫الزبون الذي يحتوي على مفتاح رئيسي هو رقم ذلك الزبون؟ أو‬ ‫أنه من الفضل فصل التبعية المتعدية تلك في جدول خاص، كما‬ ‫يلي:‬ ‫جدول_الرمز_المحلي )الرمز_المحلي، المدينة(‬ ‫في الحقيقة ل يمكن تحديد الجابة عن السؤال السابق، فذلك يعتمد‬ ‫بشكل رئيسي على نمط وتوجه النظام الذي تصمم قاعدة المعطيات‬ ‫من أجله، أو بأسلوب آخر، يمكن إهمال علقة التبعية المتعدية‬ ‫السابقة تلك في معظم أنظمة العمال، في حين يمكن اعتبار‬ ‫ًّ‬ ‫الجدول الجديد المنشأ فعال في أنظمة القوائم البريدية على سبيل‬ ‫المثال والتي تستخدم الرمز المحلي بشكل كبير !!!‬ ‫وكنتيجة لما سبق يمكن أن نستنتج أن التنظيم ل يخضع لقواعد ثابتة،‬ ‫إذ يمكن تجاوز بعض الحالت في سبيل تحسين الداء، وذلك يعتمد‬ ‫بشكل كبير على نوع النظام المصمم؛‬ ‫•يمكن أن تتعرض الجداول غير المنظمة إلى عدة مشاكل، نذكر‬ ‫منها:‬ ‫1.فعالية أقل بكثير أثناء تحديث المعطيات، ففي حالة‬ ‫الجداول غير المنظمة، ينبغي على التطبيقات أن‬ ‫32/42‬
  • 24. ‫تقوم بالولوج إلى جداول كبيرة للحصول على‬ ‫المعلومات.‬ ‫2.تعتبر إجراءات فهرسة الجداول غير المنظمة‬ ‫مرهقة، فليس عملياً أن يتم بناء العديد من الفهارس‬ ‫للعديد من الواصفات التي تتواجد في جدول غير‬ ‫منظم.‬ ‫3.تؤدي الجداول غير المنظمة إلى التعرض للعديد من‬ ‫العقبات أثناء بناء المناظير )الجداول الفتراضية(.‬ ‫المراجع:‬ ‫•‬ ‫/931001‪http://support.microsoft.com/kb/q‬‬ ‫•‬ ‫‪http://www.ischool.utexas.edu/~wyllys/DMPAMaterials/normover.html‬‬ ‫42/42‬