كنا نتكلم في الشابتر المقدمة وما زلنا نتكلم فيه
وقلنا من أهم ميزات استخدام database management
system إنه صار في عندي فصل الdata عن الapplication
سواء كان الفصل هذا من أجل الحماية أو
من أجل الأداء الأفضل للdatabase أو أكثر من شغلها
وقلنا الفصل هذا صار في عندي على أكثر من مستوى
يسمونه level of abstractions كان في عندي ثلاثة
مستويات external schema قلنا هذا بيكون اللي للend
user وفي عندنا الlogical schema أو conceptual
schema للdeveloper أو للprogrammer وفي عندنا ال
physical schemaللadministrator واتفقنا بعد هيك
أن الdata independence أو الisolation هذا أو
الفصل هذا ولد عندي data independence بمعنى أن
استخدام الdatabase management system leads to
data independence
والData Independence كان هذا على مستويين على
مستوى الLogical Data Independence بحيث أنه تم
فصل الStructure تبع الSchemas وصف البيانات أو
وصف الجداول عن الend user وضربنا مثال أنه أنا و
أنتِ لما نستخدم برنامج التسجيل ما بنشوفش الجدول
ولا بنتعامل معه بشكل مباشر احنا بنشوف الdata
اللي موجودة ولا بيظهر لنا ولا بيهمني نعرف ايش ال
attributes المستخدمة ولا ايش هي الdata types كل
اللي بيهمني لما أنا بدي معدل الطالب يظهر لي المعدل
بشكل صحيح لما بدي علامته في مساق معين أحصل عليها
بشكل واضح وفي المقابل صار في عندي physical data
independence بحيث أنه تم عزل الprogrammer عن ال
physical files اللي مخزنة فيها الdata بحيث أن ال
programmer ما بيلزموش يعرف ايش هي الملفات المستخدمة
وفي نفس الوقت مش لازم يحس لو الdata انتقلت أو ال
files انتقلت من hard disk لhard disk آخر ال
programmer ما لوش دخل في الموضوع وب هيك بيكون حققنا
physical data independence وقلنا في المقابل استخدام
الdatabase management system ولد عندي concurrent
access بمعنى لو كان في عندي أكثر من application
وال
database management system في الوسط والdatabase
هذا ملخص للرسم السابق أصبح لدي أكثر من application
بتواصل مع الdata من خلال الdatabase management
system طب تواصل هم يعني أن في عندي concurrent
access وصول متزامن الوصول المتزامن هذا يقتضي أن
يصير في عندي control للعملية بشكل بسيط أو بشكل
صحيح بحيث أن أضمن أن الdata تبقى consistent
متناسقة بحيث أن التغييرات اللي بيعملها ال
application الأول يشوفها الapplication الثاني والثالث
إلى آخره المحاضرة الماضية تكلمنا على مثال البنك
لو كان لو ما كانش في عندي concurrent access control
لها كويس معناته أنا ممكن يصير في عندي فقدان في
فلوس البنك بداية بالخطأ احنا الآن لو على مثال
البرنامج الtest deal تخيلي أنك أنت تحاول تغير
شعبة الdatabase من 201 ل 202 باعتمادك على
الweb Application ما ضبطت معك الأمور تغير
الشعبة ل2 و 2 على فرض أنها موجودة وجيتني وقلت
للدكتورة أنا مش قادر أحد أغير الشعبة بده أغير
الشعبة للشعبةتان الموعدها بتناسب معايا أكثر قلت
لك okay أنا ما عنديش مشكلة بس اكتبي لي رقمك الجامعي
ورقم المساق والشعبة اللي بدك إياها لأنه أنا أنا
عندي محاضرة بعملها بعدين وضلت الورقة على المكتب أنتِ
روحتِ على البيت اجت الكهرباء الساعة 11 بالليل أو
ثلاثة اجت الكهرباء على السبتة وأنا لسه كنت في
الجامعة شفت الورقة اتذكرت ف أنا وأنتِ مباشرة أو
بشكل متزامن فتحنا حسابك من خلال two different
applications بحيث أن أنا بدي أعدل على رقم الشعب
ةلكِ الآن إذا الdatabase management system
ما خبرتنيش أو ما عملتش لوحد فينا lock بحيث إن ال
resource هذا مشغول معناته احنا ممكن التعديل يتناقض
مع بعضه فرضا أنتِ سبقتني و روحتِ عدلتي لمتين واثنين
أنا بعد ذلك لحظة فتحت الsystem طب هي كتبالي على
الورق جابتها متين واثنين وهي شعبتها حاليا متين
واثنين فمباشرة هروح حمق أرجع لك إياها لجداشلـ 200 و1
لأنه فعليا أنا مش عارف ايش اللي نعمله بيصير وهذا
عدم التزامن أو خلّيني أقول الconcurrent axis لو
ما كانش مضبوط بشكل كويس بيصير في عندنا data
inconsistency وبالتالي مسئولية الdatabase
management system إنها تحافظ أو تعمل control لل
concurrent access اللي موجودة واتفقنا كمان إنه في
الdatabase كل شيء بتمثل بtransaction وال
transaction هو عبارة عن مجموعة من العمليات الصغيرة
أو عمليات القراءة والكتابة على قاعدة البيانات
atomic sequence of database actions database
actions معروف إما read بدأ أخذ بيانات أو write أو
بدك تعدل أو بدي أضيف بيانات جديدة واتفقنا أن ال
Transaction لازم يتم للاخر أو بدو يلتقى بالآخر
والUsers اللي هم الdatabase developers اللي
سميناهم لازم يعملوا شغل بيسموها Integrity
Constraints قيود على الdata عشان يضمنوا البيانات
متناسقة ومتكاملة وضربنا مثال رقم الهوية أو رقم
الوطن لكل واحد فينا هو عبارة عن الرقم هذا ليس
رقم عشوائي الرقم هذا محطوط ضمن خوارزمية معينة
فلازم لما أنا أدخله أفحص أن الرقم صحيح وبعدين
أروح أدور هل الرقم هذا موجود فعليا لuser ولا لأ
وبالتالي الdatabase أو الtransaction مسئولية ال
user أو الconsistency تبع الdata مسئولية الuser
اللي هو بين جسيم الdeveloper واتفقنا أن ال
database management system كونها بتشتغل concurrent
access معناته ايش يمنع إن هدول الapplication
الثلاثة يعملوا transaction في نفس الوقت حد بيشتغل
وحدة بيشتغل وحدة بيشتغل وبالتالي في عنده three
transaction T1, T2, T3 تبع للبرنامج اللي جاية منه
خلنا نقول وصل للdatabase management system كده
بتعامل معاهم القاعدة البسيطة جدا المطبقة حاليا أو
فيك أمور first come first serve اللي بيجي في الأول
بنخدمه في الأول طيب يا أستاذ أنت بتقول أن ال
transaction هو عبارة عن sequence طويلة من عملية
القراءة والكتابة صحيح؟ وبالتالي اتخيل أن ال
sequence هذه بتتبع بتبعد لتلري transaction
وبالترتيب بده يتم الشغل عليها والترتيب هذا أيضا له
أهمية كمان لما نيجي نتكلم عن الrecovery أو على ال
log وبالتالي هتصير العملية عملية طويلة في بعض
الأحيان الdatabase administrators ممكن يدي
أولويات لuser معين تمام يدي أولوية عن user آخر
بمعنى إذا كان الtransaction جاي من X user نفذ ال
transaction تبعه قبل أي user آخر وهذا الpriority
برضه معمول فيها حتى على مستوى الoperating system
الآن لtransaction الموجود هذا قلنا بمجرد أنه بدي يوصل
للrecord الخاص برقم الشعبة هيروح
يعمل عليها lock lock ليش؟ عشان ينبه المستخدم الآخر
أنه فيه user الآن عماله بيعمل update أو بيعدل على
القيام اللي موجودة هنا وكله عشان يمنع الdata
inconsistency بسبب الconcurrent access وبالتالي
في عندي protocol اسمه two phase locking protocol
الprotocol هذا ببساطة لtransaction بده record
الفلاني بنعمل lock على الrecord الفلاني لحد ما
يخلص الtransaction بنعمله release مرة ثانية،
الtransaction اللي بعده بيدل لrecord X بيعمل lock
على record X ومجرد أنه يخلص بي سيبه وبقدر
الtransaction الثالث العملية بيحكمها عملية إغلاق
واطلاق سراح المصدر تبع البيانات اللي موجود عندها
ضربنا مثالا وقلنا في حالة أنه لو كانت two
transactions بطلبوا الresources اللي عملها lock
الآن تخيل T1 وT2 هذا عمل lock لR1 وهذا عمل
lock لR2 الآن لو كانت الsequence جاية T1 وT2
ورا بعض الآن T1 بده R1 فما فيش مشكلة T2 بده R2 فما فيش
مشكلة T2 هذا بحاجة فعليا للتنفيذ في حالة إذا بده T1
بده R2 الآن بده يستنى لحد ما هذا يعمله release وي
قولنا هذه العملية السمينية had a lock لازم واحد من
الtransaction أو التانين يعملهم kill تمام و
restart عشان نحافظ على العملية اللي موجودة عندها
واتفقنا أن الtransaction عشان نحافظ على ال
consistency تبعتها إما بتتم كله أو ايش أو ولا أي
شيء مثلا الشعبة الـ section الـ new value 200 و 2 الـ
all value 201 و بتدير التوقيت كل الـ transaction
هذا أو كل الـ atomic process هذا أو كل الـ atomic
actions هتنكتب بالتفصيل في الـ log file وبالتالي
لما بده يصير يعمل لو الـ transaction صار فيه أي
مشكلة في الوسط عادي بقدر أسترجع كل القيامة
والمحاضرة الماضية قلتلكوا أن الـ Oracle كانت بتقول
في لحظة من اللحظات Zero lost after recovery لو صار
في عندك مشكلة في الـ data base فقدتها احنا بنرجعلك
إياها بالكامل بدون ولا byte نقص في البيانات بناء
على إيش؟ بناء على الـ history أو الـ log file زي ما
احنا بنسميها كمان مرة كل إشي بينكتب على الـ log قبل
ما يتنفذ بشكل فعلي وين؟ على الـ data base
طيب وقلنا في الـ log القيمة القديمة و القيمة
الجديدة تتسجل و لو كانت العملية تخزين أو abort أو
إلغاء إلى آخر هي برضه كل شيء بتأرشف وبالتالي أنا
بقدر أرجع أو أعمل استرجاع للـ data كلها واحدة تقول
طب يا أستاذ لو فقدت الـ log أنا إيش ممكن يصير؟ إذا
الـ data موجودة مش عليها خوف بس تفقد الـ data و تفقد
الـ log هذه مشكلة وبعادة تتذكر لما قلتلك عادة الـ
database بتنكتب بشكل متزامن على أكتر من سيرفر عشان
52 طيب
واضحة الفكرة يا بنات؟ الآن يعني أن والله الـ
database management system صار في عندي data
independence صار في عندي concurrent access وهذا
اتطلب أن صار في عندي مبدأ الـ log عشان يعمل
control للـ concurrent access صار بتطلب عندي أن
اعمل log اللي هي الـ history عشان اقدر اعمل
recovery إيش في عندكوا؟ كل الجامعة بدرم .. كل
الجامعة بدرم مهلا احنا بنعيش حياة استثنائية في كل
شيء طيب، لأ هو فعليا الواقع كالتالي أن في عالم
الكمبيوتر كل الـ servers محطوطة في أماكن آمنة
الأكثر مكان ممكن يكون آمن هو الـ base قاعدة المبنى
لو كانت مجهزة صحيح فيعني لو نقدر نفع أن الـ server
اللي ورا ما يعيش هاروويا صح .. تمام لو دوما نزلت
هاروويا فالجدر سيقع أو شيء أنه ضغط ثابت أنه في حالة
أنه راح إن قصدك نسخة على الـ cloud مثلا على الـ
internet على استجابة الإلكترونية هذا واحد من الـ
backup اللي موجودة بس زي ما أنا قلتلك تخيل الجامعة
الإسلامية على سبيل المثال تخزن بياناتها وأين
بتخزن بيانات الشجعين نسخة في الجامعة الإسلامية
حتما نسخة في الجامعة الإسلامية أو نسخة ثانية نسخة
في كندا نسخة في الأردن آه شوفي أنت الآن المنطق هيك
بيقول ما تحطهمش في منطقة واحدة من أجل حماية
البيانات تبعتك ما تحطهاش في منطقة واحدة واللي
بيفكر غزة مش في منطقة واحدة بيكون غلال ففعليا أي
database application أو ممكن أسميهم database users
واحد نبدأ من الأهم الـ database administrator
المهام الموكلة له authorizing access to database
يحدد منهم الـ users اللي لهم حقية الوصول لقاعدة
البيانات coordinating and monitoring database
usage يراقب استخدام قاعدة البيانات يطلب software
و hardware resources جديدة عشان تحافظ على الـ
database مسئول عن عمل الـ Tuning أو تهذيبها بحيث
أنه يحصل على أفضل performance مسئول عن عمليات
النسخ الاحتياطي والاسترجاع عند المشاكل وبالتالي زي
ما قلنا سابقا أن هذا الإنسان أو هذا الشخص أهم واحد
ممكن يكون موجود أو يتعامل مع الـ database database
designer نمرا اثنين من الـ database designer هو
الشخص اللي يعرف الـ Data اللي بدها تتخزن يعني لو
إجينا لسيادة من الناس وقلنا له بدنا نعمل قاعدة
بيانات أو بدنا نعمل database عن الطالب الجامعي لأن
لازم يكون هذا الشخص خبير بحيث أنه يقدر يحدد لي مين
هي البيانات اللي أنا بديها لأن حجم البيانات ضخم،
قصده ولا لا؟ وذكرنا منها من اللي ما لهاش علاقة في
قاعدة بيانات الطالب، قلنا طول الطالبة مصبوط؟ مش
منطقي لأن ما لهوش داخل الطول أو القصر له علاقة
بالمعدل حتما لا إلا غير إذا كان بدنا نطبق قاعدة
أن والله كل الناس القصار أشطر الناس أو بين جثين
الباجع عندك تمام؟ ففعليا الـ database designer هو
الشخص اللي مهمته يعرف الـ data اللي لازم تخزينها في
قاعدة البيانات بشكل صحيح ودايما هذا بيكون فاهم الـ
domain بشكل كويس في عند الـ system analyst محلل
النظام مين محلل النظام؟ هذا اللي بيحدد النظام ك
application بيكون كم form كم نموذج كم شاشة
بلغتنا إيش العناصر اللي موجودة على كل شاشة؟ من أين
جاب الكلام هذا؟ بناء على فهمه للـ data اللي بدها
تتخزن يعني الآن الـ database designer قال والله بما
أنه أنا بتكلم عن الطالب معناته بيلزمني أخزن بيانات
عن الطالب رقم الجامعي، تاريخ ميلاده، اسمه، جنسه،
معدله في الثانوية والبيانات الخاصة بالاتصال السكن
ورقم التليفون إلى آخرين وبالتالي أخزن بيانات عن
المساق رقم المساق وعدد الساعات ووصف المساق واسمه
وبالتالي أخزن بيانات عن المدرس وأوضح العلاقة بين
كلياتهم
البرنامج اللي بدنا نعمله
يحتوي على شاشة اسمها شاشة التسجيل واللي بدها تجيب
بيانات من جدول الطالب ومن جدول التسجيل ومن جدول
المساق وتعرفها قدامه ولازم يكون عنده مفتاح حفظ و
مفتاح إلغاء تمام ولازم يكون مثلا في رقم الشعبة
قائمة منسدلة مش لازم يكتبها كتابه على سبيل المثال
وبالتالي هذه الـ requirements ليش مهمة؟ عشان يجي
في الخطوة التالية أو الـ user التالت الـ programmer
أو الـ developer ياخذها ويطبقها ويحولها لشاشات
حقيقية سواء من خلال الـ PHP على سبيل المثال على الـ
web أو من خلال الـ IDF تبع الـ Oracle كـ application
على الـ desktop اللي موجود الـ developer هو بيعمل
implementation لمين؟ للـ specification أو للـ
requirements اللي حددها الـ system analyst بعد ذلك
يأتي دورنا نحن كـ end users نستخدم الـ application
اللي عمله الـ developer عشان نتعامل مع الـ data أو
مع البيانات ونحصل منها على معلومات مهمة يعني كم
user أنا فيه عندي؟ خمسة administrator ومهمته إدارة
قواعد البيانات والـ backup والـ recovery والـ
tuning database designer يعرف إيش هي الـ data اللي
بدها تتخزن ويحدد إيش الـ structure المناسبة عشان
يتمثل الـ data الـ analyst يحدد إيش هي الـ forms أو
إيش هي النماذج أو إيش هي الـ requirements متطلبات
النظام اللي بده يشوفها الـ end user الـ application
developer أو الـ programmer بده يبني النظام بناء
على الـ specification حددها الـ analyst والـ end user
هو اللي بدي يستخدم الـ application هذا من أجل
يتعامل مع الـ data ويحصل على معلومات سواء كان
إبطباعة تقارير أو حصول على الـ charts إلى آخرين في
أي سؤال يا بنات؟ كنت ماشية سريع كثير اليوم أعيد
حاجة؟ huge integrated collection of data مجموعة
ضخمة من البيانات المتكاملة أو المتعاضدة تمام؟ الآن
جايب مصطلح آخر شوية بس عشان يقربلك مفهوم الـ
database التعريف الأول هو التعريف الأساسي هي عبارة
عن إيش؟ the overall container of data هو المحتوى
أو الحاوية الكبيرة اللي بده أحط فيها البيانات بس
ما تدجريليش في كلمة الحاوية لأن لو جبتي .. قلتلك
define the database
structure للـ data اللي موجودة ولما بتكلم على
table بتكلم على إيش على صفوف وأعمدة الجدول بتعرف
بالصفوف ولا بالأعمدة بالأعمدة بالأعمدة تمام كويس
أنكوا فاكرين الجدول بتتم تعريفه من خلال الأعمدة مش
من خلال الصفوف تمام الـ record أو الـ table أو فيها
اسم آخر raw record table أو raw طبعا ليش كلمة raw
ما نحطهاش في الـ slide؟ معروفة هذه واحد وعشان نميز
في الامتحانات بين اللي بيحضر واللي بيحضرش تمام؟
أو raw الفكرة فيها raw روها دي خام بالمناسبة الـ a
رو صفر راو خام رو صفر
بأتكلم على row بمعنى أنني بتكلم على مجموعة من
القيم اللي بنعبي صف واحد في الجدول تمام؟ كل row
بيمثل entity في الـ database، مصبوط؟ إيش الـ main
entity في الجامعة؟ الطالب، كل صف في جدول الطالب
بيمثل طالب، مصبوط؟ الـ attribute أو الـ column
الـ Attribute أو الـ Column هو عبارة عن العمود
اللي في الجدول اللي اتفقنا سابقا بيمثل واحدة من
خصائص الـ entity اللي موجود الـ ID أو الاسم أصبت
تاريخ الميلاد، الـ GPA، الرقم، الفصل، إلى آخره من الـ
fields أو الـ data الموجودة، ممكن نطمق عليه اسم
field حقل
الـ Value القيم هي عبارة عن القيم اللي موجودة في
تقاطع الصفوف مع الأعمدة، تقاطع كل صف وعمود يمثلّيش
قيمة one value مثل عمود الـ ID في جدول الطالب اللي
أنت تمثّليه بمثل رقمك الجامعي، الاسم، عمود الاسم أو
عمود المعدل في رقم .. في الـ record اللي بيمثلك أنت
في سجل الطلاب يمثل معدلك أنت وهكذا، تقاطع الصف مع
العمود هو بيديني إيش الـ value اللي أنا بدي
إياها، الـ domain، الـ domain هي عبارة عن الـ range نطاق
البيانات اللي أنا باخد منه الـ value، نطاق البيانات
اللي أنا باخد منه الـ value، تخيلي في 2017 إيش
نطاق البيانات اللي باخد منه الـ value لرقم الطالب
أو الطالبة؟
20170001220179999 عدد المقاعد المتاحة بالضبط في كل
سنة، هذا الـ range أو الـ domain اللي مسموح لي فيه
أدخل رقم الطالب أو الطالبة في العام 2017، طيب لو
أنا سألتك شو هو الـ domain تبع معدل الطالب؟ أيوة، نطاق
البيانات .. كده إيش؟ من صفر .. من صفر .. متأكدة أنه
من صفر؟ من صفر إلى مئة؟
مش مشكلة، بس لو .. حاليًا إنه هو ماعدّاش، كمان؟ لكن
الجامعة قالت، مثلًا في قانون الجامعة الأردنية
بيقول ما فيش عندي صفر، عندي أربعين أقل على طالب
أربعين لأ، فيه مئة، وإن شاء الله أنت بتأخذيها عندي
إذا دلت درسك في المادة، في المادة، مش في المعدل
الكلام صحيح تمام؟ لما أنا بتكلم على الـ domain
بتكلم على range of data، range of values، نطاق
البيانات المسموح من آخد منه قيمة أحطها في تقاطع صف مع
عمود الـ degree نقول الـ degree هي عبارة عن عدد أعمدة
الجدول، الـ
degree عدد أعمدة الجدول، الـ cardinality عدد صفوف
الجدول، الـ degree عدد أعمدة الجدول، الـ cardinality
عدد صفوف الجدول، null هذه قيمة جديدة الآن، الـ null هي
عبارة عن قيمة تمثل ما فيش قيمة، يعني الآن لو أنا
اجيت لطالب في السنة الأولى أو بلاش نقول سنة أولى
طالب أو طالبة في فصل أول، اللي فرض أن واحد ألفين
و سبعة عشر، واحد ثمانية خمسة تسعة، هذا رقمه، اسمه علي
بياناته كلها معدّلة، ماذا نضع فيه؟ Zero حرام عليكي
لسه أنت ما اختبرتهوش ولا فيه مادة، دورة 70 دي وحطّله
100 برضه حرام، هو مش super، أنا ما عرفوش، فأفضل شغلة
أسيب المكان هذا فاضي ما فيش فيه قيمة في الـ database
اللي فاضي ما فيش فيه قيمة اسمه null، قيمة غير معرفة
أو قيمة غير محددة، لم تتمّ اشتدادها مسبقًا
واضح الـ null؟ كمان يعني الـ null تساوي صفر؟ لأ
تساوي لا شيء، unknown، value ممتاز،
الآن الـ primary key المفتاح الأساسي، إيش ممكن يكون
المفتاح الأساسي؟ الـ ID كمان؟
أنا بدور عدلان عليك، مفهوم المصطلح الأساسي، أول شغلة
بدقيقة تفهميها، الآن أن الـ primary key ممكن يكون من
column أو أكثر، الـ primary key ممكن يكون من column
أو أكثر، الـ primary key هو عبارة عن قيمة مميزة للـ
row، قيمة مميزة يعني ما بتتكرر، من خلالها بميز أنا
كل record عن الآخر، كل entity عن الأخرى في الـ rows
أو الـ rows الموجودة عندها، مثل رقمك الجامعي، طيب
تعال نشوف على السريع هان لو أنا قلت في عندي
student وفي عندي teacher وفي عندي course طبيعي هان
هتقولي الـ student ID والـ teacher ID ورقم المساق الـ
course ID، هدول الـ primary keys، كلام صحيح، طب لو أنا
افترضت عندك أن في عندي جدول اسمه registration إيش
الـ primary key تبعته؟ بالمناسبة
لما بتكلم على قيمة مميزة للحقل يعني القيمة دي
مابتتكررش، مصبوط؟ الـ ID تمام، الـ ID إيش هو؟ جدول
التسجيل، إيش البيانات الموجودة عندك في جدول التسجيل؟
أنا بقولك أو بديكي نموذج منهم، رقم الفصل semester
ID، وحاليًا الفصل نكتبوا 2017 2018 1 ورقم
الطالب ورقم المساق مثلًا 12017 0153
ورقم المساق WDMM 2406، قاعدة البيانات اللي موجودة
عندنا هنا و
الـ section شعبة
101 خلاص بجد بيانات بتهمنيش، إيش ياخد منها الـ
primary key
الـ student عارفة إيش معناها أن الطالب مش لازم
يكون له لغير حق الواحد في جدول التسجيل هذا كله من
يوم دخله الجامعة والحق المرتبط بمادة واحدة، رقم
المساق، معناته المساق بتسجل لطالب واحد فقط وممنوع
أي طالب ثاني يسجله، حكم .. شوفي، كمان مرة أفهمي
primary key قيمة مميزة للـ attribute يعني القيمة دي
ممنوعة تتكرر مع أي next attribute .. عفوا .. قيمة
مميزة للـ raw ممنوعة تتكرر في أي raw جاي رقم الفصل،
معناته الطالب اللي بسجل في الأول فاز فيها وبعدين
طلاب الجامعات همّ يسجلو، ما ينفعش، رقم الفصل إلي وإلك
وإلها وإلها هو رقم واحد يعمل إيش؟ يعني كل طالب في
الجامعة مع كل مساق ياخد رقم تسجيل جديد؟ مش صح
الكلام كلهم
مع بعض عشان إيه قلتي اللي قبل شوية هي collection
ممكن تكون قيمة لـ attribute أو يكون أكثر من
attribute كلهم مع بعض وبهيك أنا بأضمن للطالب هذا
يسجل في الفصل هذا مادة ثانية، مصبوط؟ لكن في نفس
الفصل ما ينفعش أسجل المادة مرتين، نفس المادة ما ينفعش
أسجلها مرتين، أيوة، التلاتة هدول الـ three values
هدول أصبحوا بمثل عند مين، الـ primary key هي عبارة
عن قيمة مميزة للـ attribute يعني القيمة هذه مش لازم
تتكرر مع كل الحقول وبهيك الطالب إذا بدّه يسجل نفس
المساق بينفعش، حتى الشعبة ممكن هي تستغني عنها
بالمناسبة لأن ممكن أغيّر فيها من شعبة لشعبة، الأساس
فيها التسجيل هيّه تسجيل المساق، لكن إذا غيرت رقم
الفصل بقدر أحافظ على .. يعني بقدر أغير على واحد
منهم، مصبوط أو اتنين منهم ولازم يكون واحد وبالتالي
التلاتة القيم مع بعضهم بمثلّوا الـ primary key دائمًا
.. دائمًا في الـ main entities الـ ID هو الـ primary
key الطالب، المساق، المدرس، رقم المساق، رقم
المدرس، المشكلة دائمًا وين؟ في الـ relation اللي
بينهم اللي هي جدول التسجيل، هذا بيكون معنا الـ
Primary Key، طيب الـ foreign key أنا هضطر أكتبهم مرة
ثانية، مش مشكلة، الـ foreign key أو الـ reference key
هي عبارة عن قيمة لـ attribute والقيمة هذه مصدرها
قيمة لـ attribute آخر في جدول آخر، احنا غالبًا
بنسميها reference value
قبل شوية لما كتبنا هنا رقم الفصل ما فيش مشكلة، قلنا
2017 2018 1، لكن لما جينا رقم الطالب 127071538
هذا الرقم من أين جبته أنا؟ من جدول الـ students
يعني لازم الطالب يكون موجود في جدول الـ students
وإلا الروح هذا كله ما يهمّش هيتم لأن هذه القيمة مش
مازالت موجودة، كذلك رقم المساق، رقم المساق لازم يكون
موجود في جدول المساقات، ليش؟ لأنه ما ينفعش أسجل طالب
مش موجود عندي في الجامعة في مساق وفي نفس الوقت
الطالب اللي عندي ما ينفعش يسجل في مساق مش موجود في
الجامعة، هو مش موجود ضمن الخطة اللي موجودة عنده، هيك
و بهيك الـ main entities الـ student زي الـ student و
الـ course والـ teacher لازم يكونوا موجودين قبل ما
يكون الـ relation موجودة، يعني أنت بتيجي تسجلي في
الجامعة بياخدوا بياناتك كاملة وبيبنوا لك حقل حقل
الطالب، بيجي الفصل الأول في شهر تسعة أو بفتح التسجيل
في شهر ثمانية، بقولكوا اتفضلوا اقبضوا سجلوا، كذلك
لو أنا جيت كموظف بروح بضيفوني على جدول الموظفين
وبعدين بصير متاح من خلال المساقات إن الوديات الشام
يدرس المساق فلان أو علا وعن هالمور يا بنات يعني
نعيد ثاني بنقول الـ foreign value أو الـ foreign key
هو عبارة عن attribute هي
جدول وبتطلب تعمل match تعمل مطابقة مع قيمة غالبًا
بتكون primary key في جدول آخر، نأخد
النموذج هذا في المثال عند الـ employees وعنده الـ
project في جدول الموظفين عند رقم الموظف اسمه
الموقع تبعه والـ project اللي بيشتغل عليه الآن، مين
الـ primary key عندي هنا؟ رقم الموظف، إيش
الـ cardinality تبعت الـ employees؟ خمسة، عدد الصفوف
قلنا cardinality عدد الصفوف، الـ degree عدد الأعمدة
أربعة، تمام، جونز
وين الـ NULL؟
سواء
شوفتيها فاضية أو شوفتيها مكتوبة كلمة null فهي إيش؟
null تمام؟ ال values Smith 2 project manager إلى
آخرها على
الجدول التاني project
مين الجدول اللي عندي؟ Projects ال degree تبعته؟
أربعة ال cardinality؟ اتنين مين ال primary key؟
project number لأن كل مشروع له رقم و له اسم و له
تاريخ بداية و تاريخ نهاية الآن شو علاقة الجدولين
مع بعض؟ الآن بما أنه الموظف لازم يشتغل على مشروع
لازم فعليًا رقم المشروع اللي بتشتغل عليه الموظف
يكون أساسًا المشروع الموجود عنده وبهيك بينفعش يكون
في عندي موظف بيشتغل على المشروع 21 ليش؟
لأنه المشروع 21 مش موجود وتخيلي كمان لو أنا جيت
قلت هام project manager
مين القيام اللي لازم يكون هنا ال project manager
بدي رقم مدير المشروع مين مدير المشروع هو لازم يكون
واحد من الموظفين مصبوط وبالتالي صارت هذه ال
project number foreign key لمين؟ ل ال employee
number بمعنى بدي أجي أقول والله ال project manager
للمشروع الأول جونز اللي هو رقمه كذا و ال project
manager للمشروع الثاني اللي هو Smith تمام؟ هذه
مفهوم ال relation و دائمًا ال relation بين الجداول
بيحققها اللي مين؟ ال foreign key ال relation أو
العلاقة ما بين الجداول بيحقق ليها ال foreign key
نعم
تطلعي؟
ثلاث دقائق ضايل؟ ماشي الحال احنا خلصنا تقريبًا الآن ال
characteristic تبع ال database أو ال relational
database ال value في ال column لازم تكون من ضمن ال
domain محدد كل ال values لازم تكون من نفس ال
domain ال column له اسم واحد ما بيتكررش يعني
ما بنلاقيش جدول في عمودين بنفس الاسم ترتيب الأعمدة
غير مهم الروز لازم يكون فيها على الأقل قيمة مميزة
قلنا هاني بختار ال primary key تقاطع
الصف والعمود كل value بتمثل قيمة واحدة فقط ترتيب
الصفوف ما لهوش معنى ال primary key مستحيل يكون
null مصدودة لا لأ لأن لو كان null يعني ما فيش قيمة
مميزة يعني تكرار الحقل أو تكرار السجل وارد الـ
foreign key لازم تكون القيمة موجودة في جدول آخر
إما ك primary key أو على الأقل تكون unique لأن لا
يمكن أن تكون قيمة مكررة أو متكررة ال structure تبع
ال database فيه أكثر من structure و ال structure
هذا بيحاكي ال three layer of abstractions أنا
بتكلم عن ال database management system لازم إتراع
ال concurrency و ال recovery الكتاب أو مؤلف الكتاب
جايب هذه الـ Layer لاحظوا في الـ Layer الأولى فوق
بتكلم عن الـ End User External Schema أو View من
خلال Web Forms أو Application أو من خلال SQL
Interface الـ Database Management System هنا
مسئولة عن الترانزاكشن و الـ Logs و الـ أخرى وفي
الآخر ال database مفصولة و لاحظتي ال database ال
data independence موجودة في ال structure الموجود ك
summary لل chapter ال database management system
هي عبارة عن software package تستخدم لصيانة
و الاستعلام عن قواعد البيانات الكبيرة تتكلم عن ال
recovery من ال crash ال concurrent access الأخرى
في عند three of level of abstractions أعطتني data
independence الـ Database Management System دائمًا
متكون من three layers أو أكثر حسب ال structure
تبع ال database ال database administrators بيحمل
أهم المسئوليات على قاعدة البيانات و هم في المقابل
أكثر ناس بياخدوا راتب كويسة ال database management
system واحدة من الموضوعات المهمة في علوم الكمبيوتر
المهمة و الممتعة في نفس الوقت و خلص الفصل الأول