Data Model

  • Uploaded by: أكبر مكتبة كتب عربية
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Data Model as PDF for free.

More details

  • Words: 2,042
  • Pages: 35
‫نماذج البيانات ‪Data Model‬‬ ‫‪ ‬تمثيل مجرد (أو توصيف) للبيانات الخاصة بمؤسسة حيث‬ ‫يوضح هذا النموذج الكيانات ‪ Entities‬والحداث ‪Events‬‬ ‫والنشاطات ‪ Activities‬المرتبطة بهذه المؤسسة‪ .‬نستطيع‬ ‫القول بأن نموذج البيانات يصف المؤسسة بحد ذاتها ويهدف‬ ‫إلى تمثيل البيانات وجعلها قابلة للفهم بشكل أفضل‪.‬‬

‫مخطط كيان – ارتباط ‪ER Diagram‬‬ ‫‪ ‬الوحدات الساسية المكونة لنماذج البيانات‪:‬‬ ‫‪ ‬الكيانات ‪:Entities‬‬ ‫الكيان هو شيء ‪ Thing‬أو غرض ‪ Object‬ذو معنى بالنسبة لعمل‬ ‫المؤسسة ‪ ،Business‬يمكن توصيفه من خلل مجموعة‬ ‫خصائص(واصفات)‪ .‬قد تكون الكيانات شخصاً‪ ،‬بناءً أو نشاطاً (كموعد‬ ‫أو عملية)‪.‬‬ ‫مثال‪ :‬الكتاب في المكتبة يمثل كيان له خصائص وميزات‪.‬‬ ‫‪ ‬يمثل الكيان في مخططات ‪ ERD‬بمستطيل يحتوي اسم الكيان‪ ،‬الذي غالباً ما‬ ‫يُكتب بأحرف كبيرة‪.‬‬ ‫‪ENTITY‬‬

‫مخطط كيان – ارتباط ‪ER Diagram‬‬ ‫‪ ‬الواصفات(الخصائص)‪:Attributes‬‬ ‫إن عملية وصف الكيان بعد تمييزه تعني تحديد جميع خصائصه التي نريد‬ ‫معرفتها وتخزينها في قاعدة البيانات‪.‬‬ ‫‪ ‬مثال‪:‬‬ ‫إذا عدنا إلى كيان الكتاب نجد أن خصائصه هي‪ :‬العنوان‪ ،‬الرقم ‪،ISBN‬‬ ‫الناشر‪ ،‬المؤلف‪ ،‬تاريخ النشر‪ ،‬الخ‪...‬‬ ‫(‪Book )ISBN, Title, Publisher, Author, Publish_Date‬‬ ‫لحظ أن خصائص الكيان يمكن أن تختلف من تطبيق لخر‪ ،‬فقد يهتم صاحب‬ ‫مكتبة بالخاصية "عدد الصفحات"‪ ،‬بينما ل يهتم آخر بهذه المعلومة‪ ،‬وعندها ل‬ ‫يصبح "عدد الصفحات" أحد الخصائص المطلوبة‪.‬‬

‫مخطط كيان – ارتباط ‪ER Diagram‬‬ ‫‪‬‬

‫أنواع الواصفات‪:‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬

‫‪‬‬ ‫‪‬‬

‫المفاتيح الرئيسية‪ :‬تُشير الواصفات إلى المفاتيح الرئيسية في مخططات ‪ ERD‬بوضع خط‬ ‫تحتها‬ ‫الواصفة المركبة‪ :‬هي الواصفة التي يمكن تقسيمها إلى عدة واصفات أخرى‪ .‬فعلى سبيل‬ ‫المثال‪ ،‬يمكن تقسيم واصفة العنوان إلى شارع‪ ،‬مدينة‪ ،‬ولية ودولة‪.‬‬ ‫الواصفة البسيطة‪ :‬هي الواصفة التي ل يمكن تقسيمها‪ .‬مثل العمر‪ ،‬الحالة الجتماعية‬ ‫وغيرها‪.‬‬ ‫الواصفة المشتقة‪ :‬هي الواصفة التي يتم حساب قيمتها استناداً إلى واصفات أخرى‪ ،‬بالعتماد‬ ‫على خوارزميات محددة‪ ،‬بحيث يمكن الستغناء عن تخزينها في قاعدة المعطيات‪ .‬فعلى‬ ‫سبيل المثال يمكن حساب عمر الموظف اعتمادا على تاريخ ميلده المُخزن في قاعدة‬ ‫المعطيات‪.‬‬ ‫وحيدة القيمة‪ :‬هي الواصفات التي ل يمكن أن تأخذ أكثر من قيمة‪ .‬فعلى سبيل المثال‪ ،‬ل‬ ‫يمكن أن يكون للشخص أكثر من رقم هوية وحيد‪ .‬إل أنها ليست واصفة بسيطة بالضرورة‪.‬‬ ‫متعددة القيم‪ :‬هي الواصفات التي يمكن أن تأخذ عدة قيم‪ .‬مثل قد يحمل الشخص عدة شهادات‬ ‫أو قد يكون له عدة أرقام هاتف‪.‬‬

‫مخطط كيان – ارتباط ‪ER Diagram‬‬ ‫‪ ‬ترميز الواصفات‪:‬‬ ‫‪ ‬يرمز للواصفة في مخططات ‪ ER‬بشكل بيضوي‪.‬‬ ‫‪ ‬وإذا كانت الواصفة متعددة القيم يرمز لها بشكل بيضوي مزدوج الطار‪.‬‬ ‫‪ ‬ويرمز للواصفة المركبة بمجموعة أشكال بيضوية مرتبطة بخطوط‪ ،‬أو بشكل بيضوي‬ ‫يرتبط مع الكيان بخط مزدوج‪.‬‬ ‫‪ ‬يرمز للواصفة المشتقة بشكل بيضوي منقط الطار أو اتصاله مع الكيان يتم بخط منقط‪.‬‬ ‫‪attribute‬‬

‫‪attribute‬‬

‫‪attribute‬‬

‫واصفة بسيطة‬

‫واصفة متعددة القيم‬

‫‪attribute‬‬

‫‪attribute‬‬ ‫‪attribute‬‬ ‫واصفة مشتقة‬

‫واصفة مركبة‬

‫ عن تمثيل الكيان والواصفات‬:‫ مثال‬

ISBN

Publish_date Book Title

ً‫يمكن تمثيل هذا الشكل علئقيا‬ : ‫كما يلي‬

Publisher

Author Book

ISBN

Title

Author

Publisher

Publish_date

1000-13-4

database

--

-----

------

1000-14-5

oracle1

--

------

-----

‫مخطط كيان – ارتباط ‪ER Diagram‬‬ ‫‪ ‬العلقات ‪:Relationships‬‬ ‫تشكل العلقات أو الروابط ‪ Association or Linkage‬بين الكيانات‪،‬‬ ‫كأن نقول مثلً‬ ‫" يُكلف مهندسو الشركة بالمشاريع "‪.‬‬ ‫لحظ أن الشارة إلى العلقة بين الكيانين مهندس ومشروع تمت باستخدام‬ ‫فعل التكليف‪.‬‬ ‫‪ ‬يرمز للعلقة بمعين يوضع ضمنه اسم العلقة ويربط بين الكيانات‬ ‫المرتبطة ببعضها عن طريق هذه العلقة‪.‬‬ ‫مهندس‬

‫مكلف‬

‫مشروع‬

‫‪ ‬غالبا العلقة تكون ثنائية(بين كيانين) في قواعد البيانات ول نستخدم‬ ‫علقات ثلثية أو أكثر أما العلقة الحادية فهي للكيان مع نفسه‬

‫مخطط كيان – ارتباط ‪ER Diagram‬‬ ‫‪ ‬يمكن النظر إلى قاعدة البيانات العلئقية على أنها‪:‬‬ ‫‪ ‬مجموعة من الكيانات‬ ‫‪ ‬روابط (علقات) بين هذه الكيانات‪.‬‬

‫مثال للدراسة‬ ‫‪‬‬

‫‪‬‬

‫‪‬‬

‫‪‬‬ ‫‪‬‬

‫تم افتتاح مركز تجاري (‪ )Mall‬جديد و يقوم هذا المركز باجتذاب عدد كبير من الزبائن و‬ ‫المتاجر ‪ ,‬و هذا المركز التجاري يعتبر واحد من سلسلة من المراكز التجارية المملوكة من قبل‬ ‫شركة واحدة (‪ )Parent Company‬يحتاج إلى قاعدة بيانات لمتابعة إدارة هذا المركز و ذلك‬ ‫من خلل مراقبة جميع المتاجر و كذلك مالكي هذه المتاجر و العاملين فيها ‪ ,‬قبل أن نبدأ في‬ ‫تصميم قاعدة البيانات لهذا المركز يجب أن تكون الخطوة الولى هي تصميم مخطط كيان‪ -‬ارتباط‬ ‫لتقديمه إلى صاحب المركز التجاري ‪ ,‬لقد قمنا بجمع المعلومات التالية عن المراكز التجارية و‬ ‫التي سنعتمد عليها في بناء مخطط كيان‪ -‬ارتباط‪:‬‬ ‫يجب أن نقوم بتخزين معلومات عن المركز التجاري و عن كل متجر في المركز يجب أن نخزن‬ ‫اسم المركز التجاري و كذلك عنوانه و يجب أن يتضمن المركز التجاري في أي لحظة متجر‬ ‫واحد أو أكثر‪.‬‬ ‫من أجل كل متجر سنقوم بتسجيل المعلومات التالية‪( :‬رقم المتجر و الذي يجب أن يكون فريد ‪,‬‬ ‫اسم المركز موقع المتجر (رقم الغرفة) ‪ ,‬القسام ‪ ,‬مالك المتجر ‪ ,‬و مدير المتجر) يمكن أن‬ ‫يحتوي المتجر على أكثر من قسم و كل قسم مدار من قبل مدير و كل متجر يجب أن يكون له‬ ‫مدير واحد فقط و كل متجر له مالك وحيد فقط و كل متجر موجود في مركز تجاري واحد فقط ‪.‬‬ ‫يستطيع مدير المتجر أن يدير متجر واحد فقط‪ ,‬يجب أن نخزن معلومات عن مدير المتجر (السم‬ ‫‪ ,‬الرقم (‪ , )SSN‬المتجر الذي يديره ‪ ,‬و الراتب)‪.‬‬ ‫إن مالك المتجر هو شخص‪ ,‬و يجب أن نسجل معلومات عن مالك المتجر مثل (السم ‪ ,‬الرقم‬ ‫(‪ , )SSN‬العنوان ‪ ,‬و رقم المكتب ) ‪ ,‬يجب أن يكون المالك يملك متجر واحد على القل و‬ ‫يمكن أن يملك أكثر من متجر واحد‪.‬‬

‫‪Mall‬‬

‫وتكون قاعدة البيانات العلئقية الموافقة‪:‬‬

‫‪‬‬

‫أشكال العلقات‪:‬‬ ‫‪ ‬علقة واحد لواحد ‪:One-to-One‬‬ ‫"يجب أن يملك كل موظف حاسوباً وحيداً"‪ .‬تعبر هذه الجملة عن علقة واحد لواحد بين‬ ‫كيان الموظف وكيان الحاسوب في المؤسسة حيث ل يحق للموظف امتلك أكثر من‬ ‫حاسوب‪ ،‬ول يمكن أن يكون الحاسوب ملكاً لكثر من موظف‪ .‬وتُعتبر هذه العلقة من‬ ‫العلقات القليلة الستخدام في نماذج البيانات‪.‬‬

‫‪ ‬علقة واحد لعدة ‪:One-to-Many‬‬ ‫"يمكن أن يشرف كل قسم في المؤسسة على أكثر من مشروع ويجب أن يكون كل‬ ‫مشروع تابعاً لقسم واحد على الكثر"‪ ،‬تعبر هذه الجملة عن علقة واحد لعدة بين‬ ‫المشاريع والقسام في المؤسسة‪ ،‬حيث تكون العدة ‪ Many‬من جهة كيان المشروع‪،‬‬ ‫والواحد ‪ One‬من جهة الكيان قسم‪ .‬نميز في هذا النوع من العلقات بين الكيان الب‬ ‫‪( Parent‬القسم) والكيان البن ‪( Child‬المشروع)‪.‬‬

‫‪ ‬علقة عدة لعدة ‪:Many-to-Many‬‬ ‫"يُكلف كل مهندس بعدة مشاريع ويعمل في كل مشروع عدد من المهندسين"‪ .‬تُعبر هذه‬ ‫الجملة عن علقة عدة لعدة بين المشاريع والمهندسين‪.‬‬

:‫ تمثيل العلقات‬ 1

1

:one-to-one ‫ علقة‬ )1:1( 

1

M

:one-to-many ‫ علقة‬ )M:1( 

M

N

:many-to-many ‫ علقة‬ )M:N( 

‫‪ ‬تحويل العلقات إلى جداول‪:‬‬ ‫‪:One-to-One ‬‬ ‫‪ ‬من أجل العلقات الثنائية (‪ )1:1‬إذا كان كل من الطرفين لهما مشاركة‬ ‫كلية يمكنك اختيار أحد الجدولين ليتضمن المفتاح الرئيسي للجدول الخر‬ ‫كمفتاح أجنبي و كذلك ليتضمن واصفات العلقة إن وجدت‬

‫‪:One-to-Many ‬‬ ‫‪ ‬إذا كان الطرف (‪ )M‬من العلقة ذو مشاركة كاملة قم بتضمين المفتاح‬ ‫الرئيسي للطرف(‪ )1‬في جدول الطرف ‪ M‬كمفتاح أجنبي‬

‫‪:Many-to-Many ‬‬ ‫‪ ‬في هذه الحالة نحول العلقة إلى جدول جديد يحوي المفتاح الرئيسي‬ ‫للجدول الول والمفتاح الرئيسي للجدول الثاني ويمكن إضافة حقول‬ ‫أخرى إذا أردنا‪.‬‬

‫إشكاليات قاعدة البيانات ذات التصميم السيئ‬

‫‪‬‬ ‫‪‬‬ ‫‪‬‬

‫إشكالية الدخال‪ :‬إدخال بيانات لبعض حقول الجدول يجعل المفتاح‬ ‫الرئيسي يأخذ القيمة ‪ null‬وبالتالي انتهاك قيد‬ ‫إشكالية الحذف‪ :‬حذف سطر معين قد يؤثر على صحة البيانات‬ ‫الحقيقية(قاعدة بيانات غير موثوقة)‬ ‫إشكالية التعديل‪ :‬تعديل معلومة معينة تحتاج لتعديل عدد كبير من‬ ‫أسطر قاعدة البيانات (بطء)‬

‫تنظيم قاعدة البيانات‬ ‫‪ ‬التنظيم هو عملية ترتيب وتوزيع جداول قاعدة المعطيات‬ ‫العلئقية‪ ،‬للتقليل من تكرار المعطيات وتقليص حجم التخزين‬ ‫المطلوب ولحل إشكاليات الدخال والحذف والتعديل مع‬ ‫المحافظة على تكامل البيانات‪.‬‬ ‫‪ ‬مستويات التنظيم الساسية هي ثلث (الشكل النظامي الول‬ ‫‪ ،1NF‬الشكل النظامي الثاني ‪ ،2NF‬الشكل النظامي الثالث‬ ‫‪ ،)3NF‬ويقصد عادة بتنظيم القاعدة وضعها في الشكل‬ ‫النظامي الثالث‪.‬‬

‫تنظيم قاعدة البيانات‬ ‫‪‬‬

‫الشكل النظامي الول (‪:)1NF‬‬ ‫‪‬‬

‫‪‬‬

‫يقال عن جدول في قاعدة البيانات أنه من الشكل النظامي الول إذا كان‬ ‫تقاطع كل سطر وعمود فيه (أي الخليا)‪ ،‬يتضمن قيمة وحيدة غير قابلة‬ ‫للتجزئة‪.‬‬ ‫الخطوات التي يتكون منها الشكل النظامي الول‪:‬‬ ‫‪‬‬

‫‪‬‬ ‫‪‬‬

‫إزالة المجموعات المكررة‪ :‬تبدأ هذه المرحلة من خلل عرض المعطيات ضمن‬ ‫جدول بحيث تتكون كل خلية فيه من قيمة وحيدة ول توجد هناك أية مجموعات‬ ‫مكررة‪ .‬يتم إزالة المجموعات المكررة من خلل إزالة كافة القيم الفارغة (‪)NULL‬‬ ‫والتأكد من أن كافة الواصفات تحتوي على قيم مناسبة‪.‬‬ ‫تعريف المفتاح الرئيسي‪.‬‬ ‫تعريف كافة التبعيات‪.‬‬

‫‪ ‬وبتطبيق معيار ‪ 1NF‬على الجدول السابق يصبح بالشكل‪:‬‬

‫‪‬‬

‫وضع الجدول في الشكل النظامي الول ل يحل مشاكل التصميم‬ ‫السيئ إنما هو خطوة في طريق حلها‪ ،‬فبالرغم من وضع جدول إيجار‬ ‫العقارات في الشكل النظامي الول فإنه ل يزال يعاني من مشكلة‬ ‫تكرار البيانات‪ ،‬وإشكاليات الضافة والتعديل والحذف‪.‬‬

‫تنظيم قاعدة البيانات‬ ‫‪‬‬

‫الشكل النظامي الثاني ‪:2NF‬‬ ‫‪ ‬يقال عن جدول أنه من الشكل النظامي الثاني إذا حقق ما يلي‪:‬‬ ‫‪‬‬ ‫‪‬‬

‫هو من الشكل النظامي الول‪.‬‬ ‫كل الواصفات التي ل تشكل جزءاً من المفتاح الساسي‪ ،‬تعتمد وظيفياً وبشكل كلي على‬ ‫المفتاح الساسي‪.‬‬

‫‪ ‬الخطوات التي يتكون منها الشكل النظامي الثاني‪:‬‬ ‫‪‬‬

‫‪‬‬

‫تعريف كافة مكونات المفاتيح‪ :‬ينبغي أولً كتابة كل جزء من المفتاح الرئيسي (المركب)‬ ‫على حدة ثم كتابة المفتاح ككل على سطر آخر‪ .‬و بعد ذلك سيتم اعتبار كل سطر مما‬ ‫سبق مفتاح رئيسي في جدول خاص‪.‬‬ ‫تعريف الواصفات ذات التبعيات‪:‬‬ ‫‪‬‬

‫تعتمد الواصفة ‪ B‬على الواصفة ‪ A‬وظيفياً إذا كانت كل قيمة لـ ‪ A‬تقابلها قيمة وحيدة لـ‬ ‫‪ ،B‬فمثلً‬ ‫‪C_id → c_name‬‬ ‫‪P_num → p_address, owner_num, owner‬‬

‫‪‬‬ ‫‪‬‬

‫تنظيم قاعدة البيانات‬ ‫‪‬‬

‫‪‬‬

‫يبدأ وضع الجداول في الشكل النظامي الثاني بتحديد جميع علقات‬ ‫التبعية بين الواصفات‪ ،‬ومن ثم تجزيء الجداول‬ ‫(‪ ،)decomposition‬وهي تضمن اعتماد جميع الواصفات التي ل‬ ‫تشكل جزءاً من المفتاح الساسي كلياً وبشكل مباشر على المفتاح‬ ‫الساسي‪.‬‬ ‫من التعريف السابق نستنتج أن جميع الجداول ذات المفتاح البسيط‬ ‫(غير المركب) والتي تخضع لمعيار ‪ 1NF‬هي حتماً من الشكل‬ ‫النظامي الثاني‪.‬‬

‫‪C_id + p_num → r_start, r_end.‬‬ ‫‪C_id‬‬ ‫‪→ c_name.‬‬ ‫‪P_num‬‬ ‫‪→ p_address, rent, owner_num, owner.‬‬ ‫‪Owner_num → owner.‬‬

‫‪‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪‬‬

‫تنظيم قاعدة البيانات‬ ‫‪‬‬

‫الشكل النظامي الثالث ‪:3NF‬‬ ‫‪‬‬

‫‪‬‬

‫يكون الجدول من الشكل النظامي الثالث إذا حقق ما يلي‪:‬‬ ‫‪ ‬من الشكل النظامي الثاني‪.‬‬ ‫‪ ‬ل توجد فيه واصفات ل تشكل جزءاً من المفتاح الساسي وتعتمد بالتعدّي على المفتاح‬ ‫الساسي‬ ‫الجداول ‪ Rental‬و ‪ Customer‬ل تحوي واصفات تعتمد بالتعدي على المفتاح الساسي‪،‬‬ ‫بينما الواصفة ‪ owner‬في الجدول ‪ Property‬يعتمد على ‪ owner_num‬الذي بدوره‬ ‫يعتمد على ‪ P_num‬ولوضع هذا الجدول في الشكل النظامي الثالث يجب تجزيئه إلى‬ ‫الجدولين التاليين‪:‬‬

DDL ‫تعليمات‬ :‫تعليمة إنشاء جدول‬



 Create Table tab-name )

col-name1 data-type [default-value] [not null] [,col-name2 data-type [default-value] [not null], --] [ [CONSTRAINT constraint-name ] PRIMARY KEY ) col1, col2, ... ( , FOREIGN KEY ) col1, col2, ... ( REFERENCES f-table [ ) col1, col2, ... ( ] , UNIQUE ) col1, col2, ... ( ] (; ‫وتعني نمط البيانات مثل‬:Data-type  char,varchar,varchar2,number,date,blob,clob .‫نكتبها عندما نريد وضع قيمة افتراضية للحقل‬:Default-value  :‫وتعني تعريف قيد على حقل أو أكثر ضمن الجدول والقيود هي‬:Constraint  Primary key, Foreign key, Unique

‫تعليمة إنشاء جدول‬ ‫‪‬‬

‫ملحظات حول إنشاء جداول‪:‬‬

‫‪ ‬يجب أن يبدأ السم بمحرف‬ ‫‪ ‬أن ل يكون السم أطول من ‪ 30‬محرف‪.‬‬ ‫‪ ‬ل يجب أن يكون اسم الجدول من الكلمات المحجوزة في أوراكل‪.‬‬ ‫‪ ‬يجب أن يكون اسم الجدول فريداً (لم يستخدم من قبل ضمن قاعدة البيانات)‬ ‫‪ ‬مثال‪ :‬أنشئ جدول للموظفين يحوي رقم الموظف ‪ emp-id‬واسمه ‪emp-name‬‬ ‫ورقم هاتفه ‪ phone‬بحيث رقم الموظف مفتاح أساسي‪:‬‬ ‫‪ Create table employee )emp-id varchar)10( not null, emp‬‬‫‪name varchar)30( not null, phone varchar2)10(,‬‬ ‫;((‪constraint pk primary key )emp-id‬‬ ‫‪ ‬أنشئ جدول بالسم ‪ loan‬ويحوي على البيانات ‪:‬رقم القرض ‪,l-num‬المبلغ‬ ‫‪, amount‬تاريخ البدء ‪, s-date‬تاريخ النتهاء‪, e-date‬رقم الموظف‬ ‫‪empno‬على أن يكون رقم القرض مفتاح أساسي ورقم الموظف مفتاح خارجي‬ ‫للجدول ‪emp‬‬

‫حل التمرين‬ create table loan )l_num varchar2)20( not null, amount varchar2)20( not null, s_date date, e_date date,empno number not null, constraint pk_loan primary key )l_num(, constraint fk_loan foreign key)empno( REFERENCES emp )empno( (



‫إنشاء جدول بالعتماد على جدل موجود مسبقًا‬ 

Create table tab-name )col1,col2,col3,----( AS SQL query ; :‫ مثال‬  Create

table new-emp )id, name, salary( as select empno, ename, sal*12 annual from emp where deptno=20;

Alter ‫تعديل جدول‬ ‫يتم تعديل جدول بإضافة عمود جديد أو تعديل نمط بيانات حقل من الجدول أو تعديل حجمه أو‬ ‫إلغاء تفعيل) قيد أو تحرير العمدة غير المستخدمة‬/‫إضافة) قيد أو (تفعيل‬/‫حذف حقل أو (حذف‬ :‫في جدول‬  Alter table tab-name Add )col-name type [default-value] [not null],----(;  Alter table tab-name modify )col-name new-type(;  Alter table tab-name drop col-name;  Alter table tab-name drop unused columns;  Alter table tab-name add constraint cons-name primary key )col-name(;  Alter table tab-name drop constraint-name cascade;  Alter table tab-name disable/enable constraint cons-name cascade;


Related Documents