Professional Documents
Culture Documents
قواعد بيانات 2
قواعد بيانات 2
وهي مهمة مصمم قاعدة البيانات بالدرجة األولى لوضع آليات عمل من
قوانين وشروط للتأكد من أن كل تغيير أو إجراء على قاعدة البيانات ال
يؤدي إلى إخالل أو تناقض في البيانات.
1
23/09/1442
أو وضع إشارة النقود مثال حساب في بنك قد يكون ضمن الشكل التالي :
Balance
$ 540.50
$ 1,000.00
$ 9,835,00
2
23/09/1442
نلحظ هنا أنه تم تعريف المفتاح Empnoمن نوع Integerوبشرط ال يقبل قيمة NULLأي
أن وجوده أساسي ويجب إدخاله كقيمة رقمية .
3
23/09/1442
في هذا الجدول بإمكاننا الوصول إلى مفتاح أعظم وهو Stnoوحده وذلك ألننا إذا حذفنا قيم Age
Nameيبقى باإلمكان تحديد السجل الواحد بشكل مفرد من بين السجالت األخرى وفي حال استخدامنا
لغة SQLنستطيع تحديد المفتاح األعظم أو الرئيسي كما يبين المثال التالي :
Create Student (Stno Int NOT NULL , Name char (20) , H_phone Int
Address char (15) , Age Int,
)) constraint pk_stno Primary Key ( Stno
4
23/09/1442
مثال :
في هذا المثال سندرس جميع الحاالت المحتملة للتأكد من سالمة المفاتيح المرجعية
وكمالها كما يبين الشكل:
لنفرض اآلن أنه تم تحويل المخطط في الشكل إلى جداول قاعدة البيانات التالية :
P# Pname S# S# Sname
P1 al S10 S10 Eman
P2 D S40 S20 Sami
P3 B S30 S30 Hani
P4 C S10 S40 Lila
واآلن يمكن تعريف بعض القوانين للتأكد من كمال قاعدة البيانات وسالمتها حسب
النماذج التالية :
.1قواعد اإلضافة : Insertion Rules
يقوم هذا النوع من القواعد بالتأكد من عدم إضافة سجالت في جدول Partإال إذا وجد
مزود في جدول Supplierوهذا منطقي حيث ال يمكن إضافة قطع ال يوجد لها مزود.
ومثال ذلك محاولة إضافة قطعة جديدة p5في جدول القطع partزودنا بها Supplierرقم
،S70هنا واضح أن المزود رقم S70ليس أحد المزودين في جدول Supplier
5
23/09/1442
تابع ...
.2إضافة قيمة :NULL
هنا قد نسمح بعمليات الحذف ولكنها مقننة بحيث نقوم بعمليات حذف جزئي ليس على مستوى
السجل حيث نضع قيمة NULLفقط في األماكن المرتبطة بعملية الحذف.
مثال :عند حذف المزود رقم S10من جدول المزودين supplierنالحظ أنه ما زال له
وجود كمفتاح أجنبي في جدول القطع partفيمكن عندها أن نسمح بذلك الحذف مع إضافة
NULLفي موقع S10في جدول partكما يلي :
وهذا الحل أيضا غير مجد ألنه ال يمكن قبول NULLفي مجال قيم لصفة هي في األساس مفتاح جدول
مثل S#
الشرط ملزم يجب تحقيقه بمنطق صحيح وتسمح هذه القوانين بعمليات التعديل واإلضافة على قاعدة
البيانات طالما أن الشروط الملزمة تبقى صحيحة.
الشرط ملزم قد يؤدي إلى إبطاء النظام عند التطبيق بوجود عدد كبير من القوانين أما الصيغة العامة
لهذا النوع من القوانين فهي :
SQL > Assert < assertion > on <Relation name > : < Predicate > .
أمثلة:
يمكن تعريف شرط ملزم على عالقة اإليداع بحيث يبقى الرصيد دائما ا أكبر من الصفر .1
; SQL > Assert Balance – constraint on Ownership : Balance > = 0
يمكن تعريف شرط ملزم على جدول العمالء لشركة الكهرباء بحيث ال يمكن أن يكون الجابي محصل عداد بيته .2
6
23/09/1442
تابع ...
استخدام قوانين اإلسقاط :Cascade Rules
باستخدام هذا النوع من قوانين اإلسقاط فإن أي عملية أو إجراء يتم على بيانات في
جدول يمكن إسقاطها لتتم أيضا على مكان تكرارها في جدول آخر كما هو موضح في
الخطوات التالية :
إذا تم حذف مزود رقم S10من جدول المزودين
حذف أي قطعة في جدول القطع تابعة لهذا المزود S10
واصبح باإلمكان استخدام مثل هذه القوانين في لغة SQLكجزء من DDLأو باستخدام
الصيغ التالية :
When EVENTS - After EVENTS - Before EVENTS
.3قوانين التعديل :Update Rules
وهي مشابهة لقوانين الحذف حيث يمكن استخدام إجراءات مشابهة مثل المنع أو اإلسقاط
وتقوم هذه القوانين بالتأكد من أن أي تعديل يحصل على بيانات جدول يتم التأكد من البيانات
المتكررة بالجداول األخرى
ومثال على ذلك فإن تعديل رقم المزود S10وجعله S11في جدول المزودين يجب أن
ينعكس بالضرورة على جدول القطع وأن يتم تغيير رقم المزود S10وجعله S11في جدول
القطع
كمال القيم التي تتعلق بالمعنى وسالمتها :Semantic Integrity Constraints .4
هذا النوع من الشروط له مدلوالت ذات معنى ويتبع التطبيقات وبيئتها فمثال ما يكون
شرطا متعلقا بمعنى في بيئة قد ال يصلح وال يعطي نفس المدلول في بيئة أخرى ومثال
ذلك :
في إحدى المؤسسات ال يجوز أن يزيد راتب الموظف عن راتب مديره وعدا ذلك فهو
إخالل بشروط سالمة قاعدة البيانات وكمالها .
ال يجوز أن تزيد أيام العطل واإلجازات لموظف عن ثالثين يوما إال في الحاالت المرضية
وعدا ذلك فهو إخالل بقوانين سالمة قاعدة البيانات وكمالها .
سن التقاعد يبدأ بسن 60عاما لإلناث و 65عاما للذكور ويعتبر إخالال بقاعدة بيانات وجود
شخص تجاوز سن التقاعد .
ويمكن استخدام القوانين أو أوامر لغات قواعد البيانات البرمجية أو لغات العليا للتأكد من كمال
البيانات وسالمتها في هذا المجال
7
23/09/1442
وهي عبارة عن قوانين يتم تنفيذها بشكل آلي ( أوتوماتيكي ) بواسطة نظام قاعدة البيانات كأثر
جانبي لتنفيذ بعض اإلجراءات على قاعدة البيانات مثل الحذف والتعديل واإلضافة وعند تصميم
هذا النوع من القوانين يجب تحديد الشروط الالزمة لتنفيذ هذه النوابض وزمن وجوب تنفيذها
لتقوم بواجبها للحفاظ على كمال البيانات وسالمتها :
إلعادة تعريف بعض مفاتيح لوحة المفاتيح key Boardللقيام بواجبات محددة .
نالحظ :خيارين في التنفيذ إما التنفيذ باالتجاه trueوإذا فشل شرط النابض فسيتم تنفيذ الجزء اآلخر للداللة
على أن الشرط خطأ .
8
23/09/1442
تابع...
.3نوابض ومحفزات األحداث Event Triggers
وهذا النوع من النوابض يترقب حدثا معينا ينفذ ضمن شروط معينة في قاعدة
البيانات ثم يتم تنفيذه ويأخذ هذا النابض عدة صيغ تضاف إلى اسم النابض للداللة
على اللحظة والوقت المناسب لتنفيذه وتتضمن التالي :
قبل الحدث – مثال PRE-change :
عند الحدث – مثال ON-change :
بعد الحدث – مثال POST-change :
تابع...
• نوابض االسترجاع :Query Triggersوينقسم هذا النوع إلى قسمين :
نابض قبل االسترجاع :Pre-Queryهذا النوع من النوابض ينفذ طلب االسترجاع ولكن قبل .1
القيام بتنفيذ االسترجاع ومثال ذلك :
• مثال :لمنع المستخدم من عمل استرجاع إال إذا قام بإدخال رقم الطالب Student-noألنه
المفتاح لذلك الجدول :
Pre-Query on student Block
If : student . Student_no IS NULL
Then
) " Message ( " Empty Student No
Raise from-Triggers-failuer
; Endif
.2نوابض بعد االسترجاع : Post-Query Triggersهذا النوع من النوابض ينفذ بعد تنفيذ
االسترجاع ولكن عادة قبل عرض البيانات للمستخدم ومثال ذلك :
لحساب عدد الطالب في قسم معين يتم إدخال رمز ذلك القسم من قبل المستخدم
Post-Query on student Block
Select count ( student _no ) into countV From student
Where Dep_no = student . Dep_no
9
23/09/1442
تابع...
نوابض النماذج Form Triggers
تنفذ هذه النوابض عند وقوع أحداث متعلقة بالنماذج التي تعرض على الشاشة
وتنقسم إلى نوعين :
.1نابض قبل النموذج Pre – form Trigger
وينفذ قبل لحظات تنفيذ عرض النموذج ويقوم بعدة وظائف منها :
عمليات تحديد الصالحيات والتفويض باستخدام النموذج وذلك لتوثيق األمان والسرية في
نظام قاعدة البيانات.
وضع قيم مبدئية في حقول النموذج Initialization
10
23/09/1442
Questions?
21
11