بسم الله الرحمن الرحيم احنا اليوم راح نبدأ في اللي
هو chapter 3 الـ database management systems
relational model اتكلمنا في الـ chapter السابق
بالنسبة للـ database design حكينا الـ database
design بتمر في 6 خطوات صحيح؟ وكان كل تركيز chapter
2 على الخطوة رقم كام؟ على الخطوة رقم 2 اللي هي رسم
الـ ER model اللي هو سمناه الـ conceptual design
اليوم هنركز على الخطوة رقم ثلاثة اللي هي
relational database model اللي راح نتعلمه في الـ
chapter هذا أو الـ outlines للـ chapter هذا أن how
is data represented in the relational model كيف الـ
data بنمثلها في الـ relational database model كيف
شكلها راح يكون؟ في الـ ER موديل شفنا شكلها كان على
شكل entity sets و relations ووصلنا بينهم وعملنا
relations بينهم، الآن شكلهم هيختلف، هيصيروا على
شكل tables الـ relational model بعتمد على الـ tables
what integrity constraints can be expressed؟ لما
رجعنا chapter 2 ركزنا على مفهوم الـ integrity
constraints ورمزنا لها بإيش؟ إيش كان اختصارها؟ مين
مذكر معايا؟ إيش كان؟ لها رمز اختصار حرفين I see
تمام I see integrity constraint حكينا constraints
معناها قيود، القيود اللي بتتعلق بصحة البيانات الـ
integrity اللي هي تكاملية البيانات وصحتها أعطينا
مثال على الكلام هذا مبارح أنه لو عندي طالب يله
معلومات في جدول الطلاب مسجل في departments مسجل في
مساقات حذفنا اسم الطالب من جدول الطلاب من الـ table
تبع الطلاب ليش؟ لأنه مثلاً سحب من الجامعة غير
جامعته هل المنطق يظل رقمه موجود مسجل في الـ
departments أو في الكليات ويكون مسجل في مساقات؟
المنطق بيحكي إنه لازم ينمح من كل مكان مسجل فيه
عملية التأكد من صحة البيانات هذه اللي بتأكد منها
الـ integrity و الـ strengths كيف نعبر عنها؟ في الـ
relational model how can be expressed في الـ
relational model في الـ ER diagram عبرنا عنها من
خلال الـ key constraint السهم من خلال الـ
participation اللي هو الـ total و الـ partial
participation الخط الرفيع والخط الخنيل عبرنا عنها
من خلال علاقات بين الـ entity sets و referential
اللي هي الـ referential constraint اللي هو الـ
foreign key بنشوف كيف الكلام هذا بنعبر عنه من خلال
الـ relational model How can data be created and
modified؟ كيف أنا بدي أنشئ هذه الـ relations لما
بده تدخل عملية برمجة مش بس أني بدي أرسم على ورق زي
الـ ER diagram بدي أرسم شكل لأ بدي أبدأ أنشئ الـ
relational model من خلال برمجة واعملها كمان
modification اذا احتاج الأمر يعني احنا عملنا
design وبعد فترة اكتشفنا أنه لأ بدنا نزيد
attribute نشيل attribute في attribute جديد بدنا
نحوله لـ primary key في primary key سابق اكتشفنا
أنه مش مناسب بدنا نغيره كيف عملية الـ altering هذه
الـ modifying how
can data be manipulated and queried كيف احنا ممكن
نتفاعل مع البيانات اللي بدنا ندخلها في الـ tables
في الـ relational model بدأ أبدأ عملت أنا الـ
relational model تبعي عملت مثلاً طلاب و courses و
departments بدأ أبدأ أدخل بيانات أسماء طلاب
علاماتهم الـ addresses تبعهم بدأ أدخل البيانات هذه
في الجدول عملت أدخل البيانات والتعديل عليها اسمها
data manipulation الـ Query يعني أن أستعلم عن الـ
data أسترجعها يعني أنا بدي أسأل الـ database مين
الطالب اللي له أعلى علامة مين الطلاب اللي أخذوا
أكثر من 80 في المادة مين الطلاب اللي مسجلين في الـ
course تبع الـ database الـ multimedia هذا استعلام
أنا ما بدخلش بيانات على الـ database أنا بستعلم بأخد
بسترجع retrieval الـ query كيف نعمل manipulation of
data ادخال insert و update تعديل كيف نعمل query
الكلام
هذا سواء الـ creation و modification تبع الـ
relational model الـ relational schema الـ logical
schema أو تعديل البيانات والاستعلام عنها الاثنين
بتموا من خلال اللغة اسمها إيش SQL كيف احنا ممكن
how can we create
modify and query الـ tables الـ tables اللي هم الـ
relational model using الـ SQL ومن التعرف على الـ
SQL هي عن قرب اللي هي الـ structured query language
هذه لغة الـ برمجة الـ standard أو العالمية لبرمجة الـ
database زي ما أخذتو لغة برمجة بايثون بايثون في C
مثلاً C++ في BHP في Java في لغة برمجة كثير في مجال
الـ applications في مجال الـ database لغة البرمجة
اللي مسيطرة على السوق اللي هي الـ SQL وشبه الـ
standard تقريباً كل يعني معظم الـ DBMS products DBMS
اختصار إيه؟ database management systems اللي
موجودين في السوق تقريباً معظمهم بدعموا الـ SQL أمثلة
الـ DBMS اللي موجودة عندنا في السوق حالياً ومنتشرة
زي مين Oracle MySQL
خاصة لو تعملوا برمجة الويب أنتو برضه multimedia
وبرمجة ويب بيتعاملوا كثير مع ما يسمى SQL الـ
Oracle, Cypess, Microsoft SQL, Microsoft Access
اللي بيجي مع الـ office هدول كلهم بيدعموا الـ SQL
language how do we obtain a relational database
design from ER diagram كيف أنا بدي أحول الـ ER
diagram اللي عندي أحوله لـ relational database
design الـ ER diagram كان .. كنا نسميه إيش
conceptual .. صح؟ conceptual إيش؟ schema الـ
conceptual schema اللي هي الـ ER diagram بتحولها
لمين؟ لـ logical schema اللي هي مين الـ logical
schema؟ relational database model logical schema
وين ما أسمع كلمة logical schema لازم يدخل في بالي
relational database model وأسمع الـ conceptual
schema بدي أفكر مباشرة في مين؟ في الـ ER diagram
طبعاً مبارح لما لخصنا المحاضرة حكينا أن الـ
conceptual schema في طرق كثير لتعبير عنها لكن احنا
ما اتعلمناش وما ركزنا إلا على مين؟ لكن هل في طرق
أخرى؟ في حكيت أنا اسم طريقة أو اسم نموذج بس
ما شرحنا تفاصيله الـ U UML مين حكى الـ UML صح؟ مين حكى
UML مراجعة منيح إيش اسمه ما ها UML بتعوض عن الـ ER
diagram وين في الـ conceptual schema نفس الشيء الـ
logical schema فيه أكثر من موديل للـ database في الـ
logical schema لكن الموديل المنتشر عالمياً لمسيطر
على السوق هو مين؟ الـ relational database هل في غيره
فيه؟ فيه الـ hierarchical وفيه الـ flat database
design أو موديل آخر شي بنتكلم عنه في نهاية الـ
chapter اللي هو الـ views كيف احنا ممكن نعمل الـ
views وكيف ممكن نستخدمهم الـ views مرتبطين مع نوع
ثاني من الـ schema مش الـ logical ومش الـ conceptual
أخذتوها في chapter one الـ external الـ external
schema هي الـ views هيبقاش بتعنيني هيبتعنيني في الـ
security بتهمني في إيه؟ إيش security في الـ security
بتتذكروا في الـ design حكينا الخطوة رقم 6 آخر خطوة
اللي هي إيش؟ الـ database security design بتعتمد
بشكل كبير على مين؟ على إنشاء الـ views إيش فكرتها
ببساطة فكرتها أن احنا إنشاء جدول الطلاب و
الكورسات بتاعتهم المسجلين فيها وعلاماتهم بالضبط
لكن أنا ما بديش كل واحد بيشتغل على الـ database يشوف
علامات الطلاب بدي مدرس المساق يشوف علامات طلابه وي
غيرها لكن رئيس القسم يشوف علامات الطلاب في كل
المواد بس ما يغيرش ولا واحد لكن العميد مسموح يشوف
كل الطلاب اللي عنده في الكلية ويغيرهم كلهم طبعاً
القبول والتسجيل مسموح يشوف علامات كل الطلاب في كل
الأقسام في كل الكليات بس ممنوع يغير أي علامة هذا
الكلام كله من خلال إيش بنفذه؟ نخلي الـ database
security لأحد أدواتها إنشاء الـ views اللي بتعبّر
عن الـ external schema اذاً نصور عندي ثلاثة من أنواع
الـ schema في الـ database conceptual و logical و
external اللي بنترجمهم احنا في اللغة العملية لـ
views ER diagram relational database design في
physical schema ما بنشرحهاش في المادة هي نهائي
صحيح في physical schema اللي هي وين نخزن الـ data
كيف تتخزن على hard disk هذه اللي هي شغل .. شغل الـ
DBMS و الـ DBA Manager الـ DBA Manager اللي هو الـ
database administrator ما بنشرحها في المساق تبع
database one بياخدنا
الـ logical هنا نفس الـ .. أخدنا الـ .. لأ أخذناه
بشكل عام هو يبقى عدد الـ logical الـ conceptual صحيح
مربوطة في الـ logical لكن مش هي نفسها من خلال فهم
الـ conceptual بننشئ أنا الـ logical بتعتمد عليها و
الـ logical بتعتمد عليها الـ physical بناء على الـ
logical بننشئ الـ physical لكن مش هم نفسهم يعني
خليني أتصورهم three layers تصميم الأول الـ
conceptual هيأثر على شكل التصميم تبع الـ logical
تصميم الـ logical هيأثر على شكل الـ physical لكن مش
هم نفسهم
أول معلومة بدنا نحكيها أن الـ relational model هو
حاليا الـ central data model foundation لكل مين لكل
الـ DBMS الـ products الموجودة حاليا في السوق هو
المسيطر و كلمة today ما بقصدش فيها سنة الـ 2017 بقصد
فيها من السبعينات وطالع من سنة السبعين من ساعة ما
IBM اشتغلت على موضوع الـ relational database model
وحولته لـ product وأنتجت الـ DB2 وعملت الـ SQL
language وهذه اللغة وهذا الـ model من الـ database
مسيطر على السوق من ذلك اليوم تمام فالـ relational
model هو الـ model اللي مسيطر عشان هيك بتدرس في
الجامعات ما بتدرسش أي models تانية أهم ميزات هذا الـ
model اللي خلاه ينتشر وييسيطر على السوق الـ major
advantages بتاعته أنه ماله simple data
representation كل الـ data اللي عندي بمثلها بشكل
جداوي أي data عندي، أي relation، أي intercept عندي،
بحولها لجدول وشكل الجدول مفهوم وبسيط يعني الطالب
الابتدائي لما يشوف جدول بيعرف إيش يعني الجدول،
بيعرف كيف يعبيه لو شاف جدول باسم وعمر وعنوان،
مباشرة بيعرف يعبيه، مش إيش صعب للفهم فهو simple
data representation كمان easy في تنفيذ الـ complex
queries احنا حكينا إيش يعني query عملية استرجاع
المعلومات طب إيش يعني complex query عملية استرجاع
المعلومات معقدة زي إيش؟ عملية استرجاع المعلومات
البسيطة اللي هي أن أنا أسترجع معلومات من جدول واحد
من one table زي أن أنا أحكي بدي أسماء الطلاب اللي
عندي يعني بتستخرج بس أسماء الطلاب اللي في جدول
الطلاب هذه عملية استعلام أو query simple بسيطة لكن
لو احنا احنا احنا احنا احنا احنا احنا احنا احنا
احنا احنا احنا احنا احنا احنا احنا احنا احنا احنا
احنا اللي عندهم طلاب جايبين أكثر من 90% في
مساقات محددة أو أسماء أربع مساقات معناته الـ query
هيبدأ تروح على جدول الطلاب وبدها تروح كمان على
جدول الكورسات تشوف من الطلاب المسجلين في هذه
الكورسات وتشوف علاماتهم ولما تطلعهم تشوف الكورسات
اللي فيها طلاب جايبين أكثر من 90 مثلا تروح تجيب
أسماء المدرسين اللي بدرسوا المساقات هذه فصارت الـ
query بدها تروح على three أو four tables three or
four relations in the same query في نفس الـ query
فبنسميها complex query كتابة الـ complex query في
الـ relational database model سهلة جدا وبسيطة easy
هذا هو سر قوة الـ relational database model لهيك هو
انتشر وعشان هيك هو المسيطر على السوق وكل الـ .. يعني
كل الكورسات اللي بتتدرس في مجال الـ database هي
فعليا 99% منها بتركز على موضوع الـ relational,
database, model يعني نادرا ما يكون في كورس بتخصص
بأنواع تانية الشابتر هذا هنركز فيه أنه نتعلم جزء
من SQL language بنسميه الـ DDL هون بيجي عنا سؤال
أن الـ SQL هذه الـ structured query language اللي هي
لغة برمجة الـ database تنقسم لثلاث أقسام أول قسم الـ
DDL وDML وDRL
بعض الكتب بتعتبر الـ DRL جزء من الـ DML يعني بتقسم
الـ SQL فقط لجزءين يعني DDL و DML بعض الكتب بعض
المراجع بعض الـ references بتطلع على الـ SQL
language عليها قسمين DDL و DML فقط بتعتبر الـ DRL
جزء من مين؟ بعض المراجع التانية لأ بتقسمها لثلاثة
أقسام إيش هم الثلاثة أقسام دول؟ القسم الأول اللي هو
الـ data definition language DDL اللي بنعرف من
خلاله إيش محتويات الـ database بتاعتنا بنعمل الـ
relational model الـ design التصميم الـ relational
تبع الـ database يعني أن أجي أحكي أن أنا بدي جدول
للـ students في اسم ورقم وعنوان للـ student أن أجي
أحكي أن أنا بدي جدول للموظفين في اسم الموظف ورقم
و راتبه وعنوانه ورقم جواله الكلام هذا أنه أنا بدي
أعرف الجداول شكل الجداول اللي عندي كيف هيكون إيش
نوع الـ data اللي بدي أحطها في الجداول التعريف هذا
data definition definition معناها تعريف data
definition language أهم جملة أو أهم command أهم
يعني أمر برمجي في الـ DDL هو إيش create لكن هل الـ
create فقط هو المستخدم لأ في create table في
create view في غير الـ create أنا عملت create بدي
أشيل جدول في drop عكس الـ create بدي أعمل تعديل على
جدول في alter alter table كل هدول لـ drop الـ alter
ولـ create كلهم DDL language اللي هو محل تركيزنا
في هذا الشطر في أوامر أخرى اللي هي data
manipulation language أنه أنا بدي أعمل
manipulation للـ data بدي أدخل .. لأ أنا عملت
الجدول تبع الطلاب بس بدي أدخل أسماءهم بدي أدخل
علاماتهم أدخل عنوينهم أدخل أرقام لهم بدي أعدل الرقم
طالب طالب انسحب ورجع كمان مرة في تخصيص جديد غيروله
رقمه بدي أعمله create لرقم جديد العملية هذه كلها أن
أعمل insert للـ data update للـ data يعني تعديل أو
delete مش للـ table كله delete بس لـ record لطالب أو
لـ course هذه العملية اسمها data manipulation
language الـ DRL اللي هي لـ query data retrieval
language retrieval استرجاع البيانات query بدأ
أستعلم ما بديش أنا أدخل شيء ولا بدأ أعدل شيء بدأ أخد
اللي موجود اللي هو الـ DRL بتمثله select اللي هي
أكثر command مستخدم في الـ database الـ select
command عبارة عن DRL وزي ما حكينا لبعض بيعتبره DML
بغض النظر سواء كانت الـ select simple أو complex
فهي DRL تركيزنا في الشابتر هذا على إيش هيكون DDL
ليش أنه DDL هو اللي بده يعمل الـ definition هو اللي
بده يعمل الـ creation للـ database يعني هو اللي بده
يعمل الـ relational model اللي احنا بدنا إياه يعني
relational database definitions أخذنا في chapter
one تعريف للـ database حكينا الـ database هي إيش في
chapter one نرجع إلى chapter one huge collection
of data huge collection of data الآن بدنا نعرف مش
الـ database الـ relational database يعني الـ
database بتعتمد على الـ relations عبارة عن مين عن
set of relations مجموعة من الـ relations في اللحظة
ها ابتداء من الآن الـ relation لها مفهوم ثاني غير
اللي أخذناه في chapter 2 في chapter 2 أخذنا أنه في
عندي entities وبينهم relations بتفاعلوا مع بعض بـ
actions اللي هم الـ relations بيسجل في مساق، بيدرس
مساق الـ action هذا سميناه relation الآن لأ، الآن
الـ entities والـ relations الإثنين مع بعض نسميهم
relations لأن أحول كل شيء لـ tables والـ table عندي
هو الـ relations
الـ table هو الـ relation الـ intersets هحوّلها لـ table
والـ relations هحوّلها لـ table والـ table هتصير
أسميه relation وبالتالي الكل صار اسمه relations
فأنتم تطلعوا على شكل الـ ER diagram اللي كنا نرسمه
لو حولنا كل اللي فيه الـ intersets والـ relations لـ
relations إيش ظل في الرسم صار كله عبارة عن
relations فالـ relational database هي collection أو
set of relations set of tables واضحة النقطة هي ولا
صعبة الـ
relational الواحدة إلها جزئين two parts schema و
instance schema يعني الشكلونة شكل الـ table كيف راح
يكون شكله إيش الـ attributes اللي بدي أحطهم فيه الـ
fields الـ columns بتاعتنا مثال لو أنا بدي أعمل table
للـ students relational students اللي كانت عبارة عن
entity في الـ ER diagram كتبت اسمها students حكيت
أنه بدي SID يعني رقم للطالب student ID حكيت أن
الرقم هذا إيش بيكون string ممكن يكون number مثلا
أرقام من الطلاب في الجامعة الإسلامية عبارة عن إيش
عن numbers بس ممكن في جامعة ثانية يكون في أحرف
بدهم يحطوا مثلًا تخصص الطالب أو كليته قبل اللي هو
رقمه يعني IT 5007 معناته هذا الطالب في كلية الـ IT
رقمه 5007 Eng مثلًا 6100 يعني هذا طالب هندسة وهكذا
فعندي string للـ SID عندي name برضه string عندي
login اسم دخول بده يدخل على الـ email تبعه في
الجامعة بده يدخل على model يدخل على علاماته بده
login بدعمله string إله age عمره هحطه integer إله
GPA معدل تراكمي هحطه real أخذتو في البرمجة الفرق
بين الـ integer و الـ real أو الـ float و الـ double
ناس أخذوا برمجة الـ integer هي الأعداد الـ إيش؟ صحيحة
و الـ real هي الأعداد اللي فيها كسور أعداد حقيقية
فيها كسور أو float أو double بنتسميها okay لاحظوا
الـ schema إيش فيها؟ فيها اسم طالب يعني مثلًا فيها
اسم مها أمل أمال أنس محمود لأ الشكل العام للجدول
شكل الـ table الـ structure تبعه لكن مش البيانات
اللي جوا الـ structure هذا تبع الجدول سمينها schema
specifies the name of relation يعني name of table
حكينا relation and table name of relation أو name
of table هي وين؟ الاسم students plus زائد الـ name
and type of each column اسم كل عمود ونوع الـ
data بتاعته هاي الاسم هاي النوع هاي كمان عمود و
هاي نوعه الـ login column و هاي نوعه طيب
إيش اللي صار عندي جديد؟ أول شيء لاحظوا الـ entity
set و الـ relation بس
اسمك
إيش جمانة؟ أيوة جمانة انتبهوا معايا شوي الآن
احنا حكينا إن الـ relation و الـ entity set صار
اسمهم relation أو table اجي عندي شيء جديد اسمه
column اللي هو بدل مين؟ بدل attribute وينما اسمع
كلمة column أو
كلمة field أو attribute نتكلم عن إيه؟ إشنو هذا الشيء؟
الـ attribute اللي كانت في الـ e-ardiogram هي نفسها
الـ fields هي نفسها الـ columns الـ table هو نفسه الـ
relation هو نفسه اللي كان سابقًا entity set أو
relation
الفكرة عندي الآن أنه احنا لما كنا في الـ ER ده يا
Grand Norson كنا نحط الـ entities set أو الـ
relation نحط لها attribute لكن ولا مرة كنا نتكلم
عن الـ type تبع الـ attribute يعني كنا نتكلم إنه
بدنا SID أو بدنا SSN بدنا name بدنا address بس ولا
مرة تكلمنا إن الـ address بديها string أو بدي الـ
SID كون رقم integer أو بديها real اتكلمناش عن الـ
data type نهائي اتكلمنا عنه في الـ ER diagram كنا
نوضحه لأ مش جزء من الـ ER diagram مش جزء من الـ
conceptual design لكن جزء من مين؟ من الـ logical أو
الـ relational database design لازم أعرف الـ type
صار عندي إيش جديد؟ إذا في عندي اسم للـ relation اسم
للـ column وكل column إيش الـ data type بتاعته
لأن لما أبدأ أدخل البيانات في الجدول هيصير عندي
instance الـ
schema شكل الجدول الـ structure تبعه الشبلونة لما
أدخل البيانات ويصير عندي rows هسير أدخل أسماء
الطالبات جمانة وآية تمام بيصير عندي instance الـ
instance هي لما بيصير في عندي rows و columns الـ
columns لاحظوا إيش استخدمنا بدل كلمة columns نفس
المعنى columns و field نفس الشيء في عندي الـ arrows
أسطر اللي فيها البيانات عدد الأسطر بيعطيني معلومات
نسميها cardinality cardinality of a table
cardinality of a relation يعني عدد الـ rows اللي
فيها يعني لو أنا عندي ألف طالب مسجلين في جدول
الطلاب في الجامعة cardinality تبعت الـ table أو تحت
الـ relation تحت الـ students can لو اجى 100 طالب
جديد الفصل هذا وسجلوا كم صارت الـ cardinality؟
1100 لو على نهاية الفصل كان فيه 30 واحد محاولين
على جامعة ثانية وانتقلوا حذفتهم؟ 1070 صاروا 1070
إذا الـ cardinality مالها إيش بيصير فيها؟ تتغير
أثناء ما الـ database شغالة واحنا بنتعامل مع الـ
database مش بنبرمج فيها واحنا بنستخدمها مش في
البرمجة في الاستخدام اليومي تبع الـ database الـ
cardinality أو الـ rows بتتغير بتزيد وبتنقص مع كل
insert ومع كل delete لـ row جديد أو لـ record جديد
لكن الـ fields أو عدد الـ columns اللي هي بتمثل عندي
إيش؟ الـ degree بتاعة الجدول تتغيرش إلا بالبرمجة
فغالبًا بنغيرها أو بننشئها بس في وقت الـ design تبع
الـ database لما أنا ببرمج الـ database بعد هيك
غالبًا.. غالبًا بتظلها إيش؟ ثابتة لو طلعنا الـ
students اللي عندي من الـ schema بقدر أعرف الـ
degree و الـ cardinality؟ الاتنين من الـ schema اه
ممكن.. إذا أنا ممكن من الـ schema عارف الـ degree أو
عاد الـ fields الـ students كام؟ الـ degree تاعت الـ table
هذا حسب المثال اللي عندي خمسة ID و name و login و
age و GPA الـ degree five الـ cardinality بعرفهاش
لإن أنا مش شايف instance أنا مش شايف غير schema
لكن لو جبنا الجدول كمان شوية ممكن نعد عدد الطلاب
ونعرف اللي هي الـ cardinality الـ degree هذه مش ممكن
أنا أحددها غير لما أنشئ الجدول أو إذا بعد كملت
عليه alter تعديل وهذا الكلام زي ما حكينا بتمشي
إلا في البرمجة بتاعة SQL وبالتالي غالبًا بيكون ثابت
آخر معلومة بدي أحكيها سمينا الـ column و الـ field
اللي قد ربط نفس الاسم الـ relation و الـ table نفس
الشيء الآن في عندي مصطلح جديد اللي هو الـ row أو
tuples أو كمان بنسميهم إيش؟ records هدول نفس المعنى
إذا حكيت table record, table row أو table tuple
نفس المعنى relation record, relation row, relation
tuple نفس المعنى اللي هو أسماء الطلاب الموظفين الـ
courses في عندي جدول table يعني relation
الـ relation هي اللي احنا شايفينها الـ table اللي
احنا شايفينه كم؟ الـ cardinality بتاعته Cardinality
ثلاثة واحد اثنين ثلاثة الـ degree واحد اثنين ثلاثة
أربعة خمس صعب الـ schema بتاعته وين؟
هذا هي الـ schema إنه أنا في عندي خمسة columns كل
واحد إيش اسمه وبدي أنواعهم إنه الـ GPA إيش كان
عندنا؟ إيش عاملناها؟ real الـ إيش؟ integer string
string string اسم الجدول
الجزء من الـ schema صح؟ مش حكينا أول شيء أول شيء
في الـ schema اسم الجدول schema specifies name of
relation اسم الجدول بعديها أسماء والـ type تبع الكل
إذا هاي الـ schema وها دي إيش؟ in a sense in a
sense هاي بتتغير لو ضفنا طالب جديد هتصير الـ
cardinality كان أربعة والـ instance الآن اتغيرت لإن
صار فيها بيانات غير اللي كانت أول كل ما نغير نضيف
row أو نحذف row أو نيجي نغير الـ login تبع طالب أو
يكبر في العمر ونغير عمره أو يزيد ويقل معدل والـ
instance تتغير يعني الـ instance تصورها كأنها صورة
أو picture في لحظة معينة يعني صورة محمد الآن مش زي
صورته بكرا هيصير تغيير هيغير لبسه هيغير شعره
ممكن يكبر ممكن بعد مثلًا عشر سنين يكون شكله أكبر
مش نفس شكله قبل عشر سنين الشخص هو نفس الشخص يعني
الـ schema زي ما هي لكن صورته تغيرت الـ innocence
تغيرت الـ innocence هي بتتغير مش ثابتة
آخر معلومة بتهمني في الـ relational model all rows
are distinct يعني unique مش زي بعض ممنوع يكون فيه
duplicate rows في الـ relational model ممنوع لاحظوا
كل row كل سطر كل record كل tuple unique لازم يكون
فيه شيء مختلف صحيح في عند اثنين طالبين اسمهم Smith
لكن أرقامهم لازم يكون فيه شيء مختلف لو جيبت أنا نفس
الـ row أدخله على الـ table نفسه نفس الرقم نفس
الاسم نفس الـ login نفس العمر نفس الـ GPA لازم الـ
DBMS الـ database management system الـ Oracle أو الـ
MySQL ييجي يحكي لي stop ما فيش مجال تدخل الـ record
هذا ما له already exist موجود عندي من الأول ممنوع
تدخله فلازم كل الـ rows تكون مالها؟ distinct مختلفة
مميزة عن بعض لازم يكون في اختلاف في شيء مميزة
بنعتمد احنا بشكل أساسي في الاختلاف على مين؟ الـ
primary key الـ primary key إنه يكون مختلف من
record لـ record آخر شيء بدي أحكيه في المجال هذا
كمان خليني آخد الـ slide هذه أول إنه كمان في الـ
table بعينيش الترتيب مش بس بدي كل record أو كل row
مميز بعينيش ترتيبهم شايفين الـ instance هاي اللي
قدامنا هذه ال instance لحسابات بنكية عندي account
number رقم الحساب اسم الفرع ال balance الرصيد اللي
في ال .. في ال account طلع عليهم مش مرتبين حسب ال
account من الصغير للكبير أو العكس مش مرتبين
alphabet
مش مرتبين كمان حسب أرقام الحسابات ما فيش أي ترتيب
هيك ال data بتتخزن في ال database بدون أي ترتيب
الترتيب ما له أي معنى عند ال database meaningless
ال order تبع ال tuple تبع ال records تبع ال rows
irrelevant ما له أي معنى ما له أي علاقة في ال
database شايفين هذه ال instance كامل cardinality
بتاعتها سبعة لو جبناها نفسها و لخبط بس ال rows يعني
جبنا ال a 217 حطينا أول و ال 101 حطينا قبل الأخير
و كده و حطيناهم جنب بعض و سألت هل ال relation هذي
ال instance بتاعتها نفس ال instance هاي الجواب اه
نفسها ال order ما له أي معنى ال order ما له أي
معنى نيجي نفهم الكلام عرض الواقع لو جبت أنا أكشف
أسماء الطلاب اللي عندي في المحاضرة مرتب أبجدي و
جبته مش مرتب أبجدي و سألناكم هدول هذا المساق هدول
نفس الطلاب هدول نفسهم الترتيب بس بساعدني أنا
كإنسان أني بسرعة أوجد الأسماء لكن فعليًا بيغيرش في
حقيقة أمر الواقع أن هدول هم الطلاب اللي مسجلين في
المساق عندي فالترتيب ما له أي معنى عند ال database
في ال relational model irrelevant لو جبنا نفس ال
.. ال instance هي نفس ال rows نفس المعلومات و
غيرنا الترتيب مش هنروح نغير ال .. ال .. رقم الحساب
و نغير الاسم تبعه هيك اختلفت المعلومة أو نغير مثلًا
الطالب و اغير رقمه و اروح اغير معدل و احكي نفس ال
instance لا نغير ال row كله مع بعضه لا فوق ولا تحت
نحصل على نفس ال instance the same ده
نتكلم شوية عن ال domain اللي هو ال .. ال field
type أو ال value بتاعته كام الساعة؟ سبعة و أربعين؟
سبعة و أربعين؟ خمس
دقائق من خمس بس نشترك في ال slide إن شاء الله ال
attribute type اللي هو شيء جديد بدأ يدخل عندنا في
ال design هنسميه غير إنه type هنسميه domain إيش
يعني ال domain ال domain هو set of allowed values
لل column القيم values القيم المسموح إنه نخزنها
في الكلام أنا بحكي الكلام هو integer معناته أنا ممكن
أحط فيه عشرة تسعة ثمانية خمسة و عشرين لكن مش ممكن
أحط فيه خمسة و خمسين ونص مش
ممكن آجي أحكي إن أحط جوا غزة شرع الثلاثين لأن غزة
شرع الثلاثين is string منطق إن يدخلوا في العمر أجى
سكرتير بيشتغل على ال database بيَدخل بيانات طالب
ومحل المعدل تبعه المعدل ال GPA دخلي اسمه أحمد
محمود هل منطق ال database تخزنه لا هذا الكلام
بيسمي domain constraint قيود على ال domain ال
domain اللي هو عبارة عن ال type ال data type ال
values اللي مسموح نخزنها أسهل أنواع ال domain
constraints اللي هو ال data type إني أحكي integer,
real, date إذا تخزن تاريخ, string, character هذا
أبسط الأنواع الأكثر تعقيدًا في ال domain constraint
غير ال type إني أحدد جوا ال type يعني أحكي العمر
مثلًا أنا عامل database لفريق رياضي فريق رياضي عنده
شروط أن اللاعبين كانوا ما يكونوش أقل من 18 و مش
أكثر من 35 بدأ اللاعب الخيارية معه بدأ يفوز
بدأ يغلب بس اللاعيب عمره من 18 ل 35 و 35 بيطلع
تقاعد فبدي أحط شروط domain constraint إن العمر
integer مش بس ك data type لا وحددت كمان جوا إنه من
18 ل 35 ال salary للموظف المنطق إنها تكون real
double أو float كسر لكن نفرض أنا عندي قانون عمل
بيحدد في حد أدنى للأجور 200$ وحد أعلى للأجور 2000$
معناته لازم ال domain constraint ع ال field تبع ال
salary ال salary هدي إيش لازم تكون أكبر من أو تساوي
200 دولار و قال من أو تساوي كام هذا عبارة عن domain
constraint حددت إنه لازم يكون real يعني رقم حقيقي
وعطيته كمان range هذا domain constraint حتى لو
ما تطوش قيود و بس خليته real ال real هي لحالها تعتبر
إيش قايدة domain constraint لأنه منعته يحط string
منعته يحط date منعته يحط integer فقط واضح إذا ال
type عبارة عن domain constraint بس simple لكن
التعريف الحقيقي لل domain إنه set of allowed
values مجموعة القيم المسموح فيها يعني في المثال
هذا ال 3000 من ضمن القيم المسموح فيها لا
إذا ال domain set of allowed values ده ال column
هذا الكلام بيسميه domain constraint كل column في
ال relational model له domain constraint لأن احنا
لما عرفنا ال scheme بتاعة ال tables أعطناهم data
type و احنا حكينا ال data type domain constraint
معناته تلقائي كل ال columns في كل ال tables في كل
ال databases اللي هم إيه شيء domain constraint
domain constraint يعني عاجزاني سؤال true and false
not every column in the relational database have a
domain constraint false تمام لازم يكون في
domain constraint
زي ما حكينا في البداية في أول slide إن ال database
هي set of relations في ال relational model set of
relations ف database consists of multiple
relations set of relations ال information بتاعة ال
enterprise هنقسمها ل parts أجزاء كل part هيكون
عبارة عن table لحاله أو relation لحاله زي المثال
اللي عندنا لبنك إنه أنا بدي أعمل customers, بدي
أعمل account, visitors مثال للجامعة اللي أخدناها
طلاب courses whatever فكل فكرتنا الآن من الآن
فصاعدًا هتمبنى على الموضوع إنه أنا أعمل tables و
relations الـ Query Language اللي هنستخدمها ال SQL
من أهم ميزاتها أو الأمور ال powerful فيها زي ما
حكينا إنها simple سهلة و بسيطة و بتستخدم ال
written naturally language يعني اللي برمج في ال ..
في ال python أو إذا حد راح على ال C أو ال C++ لكنه
أحيانًا بعض الأكواد أو الأوامر البرمجية بعضها غريب
يعني صعب إنسان عادي يفهمها إلا يتعلم برمجة بينما
في ال SQL الكلمات أقرب للغة العادية المكتوبة يعني
create table لو حكيناها بالإنجليزي create table
يعني اعمل table انشئ table ما بدهاش فاهم كثير drop
table drop معناه بالإنجليزي يلقي أو يرمي يعني يرمي
delete insert فالأوامر كلها natural فهذه برضه جزء
من الأمور اللي ساعدت عن تشارها و تعتبر من الأمور
المهمة فيها الشغل التاني اللي بتخليها ال DBMS اللي
بتستخدم ال SQL بتخليها يعني قوية و معتمدة عليها اللي
هي إنه في عندها precise semantics بنكمل إن شاء
الله المرة القادمة نكتفي بهذا القدر