ERD Database

السلام عليكم الجميع.

اليوم راح اشرح عن الرسم قاعده بيانات و Relationships و parent method تمام.

طبعآ parent method انا تعلمتها من الجامعة و حبيت اعلمكم عشان اشرحها طريقة بناء العلاقه بين PK و FK بدون اي مشاكل.

وشي ضروري لما تجي تخطط تسوي قاعده بيانات كبيره تحتاج هذي البرامج الرسم قبل بدء بناء قاعده بيانات الفعلية.

ERD تعني Entity Relationship Diagram.

توجد برامج كثيره تقدر ترسم او تخطط قاعده بيانات عن طريقها مثل MS Vision او Draw.io

سبب وجود هذي برامج لتجنب من الاخطأ اثناء بناء قاعده بيانات مثل توصيل العلاقات بين الجداول وتعرف وين تحط PK و FK و الجداول اخرى ايضآ. بالغالب يستخدم في حال بناء قاعده بيانات كبيره جدآ او يوجد كثير من الجداول لتجنب من الاخطأ بالمستقبل.

و بعض الاحيانآ قواعد بيانات صغيرة مثل جدولين او ثلاث قد لايحتاج ولكن يفضل انك تتدرب فيها للمستقبل الى ان تفهمها جيدآ وتتقنها ايضآ.


Parent method:

استراتجية parent method هي الوالدين او الام والاب و الاطفال Children هذا بالحياة الواقعية تمام.

بس خلينا نتكلم عنها بالقاعده بيانات

لما يكون عندنا جدولين و جدول اسمها Person و جدول اخر اسمه Cars

احنا نعرف Parent يكون عنده اطفال آي بالقاعده بيانات راح يكون:

Parent:Primary key

Children: Foreign key

يعني Parent راح يكون مفتاح الاساسي و الاطفال او Children راح يكون الفرعي

كل مفتاح اساسي راح يكون فريد و غير متكرر و المفتاح الفرعي راح يكون تابعه الاساسي

وراح اشرح عن انواع المفاتيح بس حاب اوضح طريقة parent method

طيب هل نقدر نخلي عكس يعني الاطفال يكون الاساسي و الولدين فرعي؟

لا. ليه ..لانه راح يكون بالواقعي اطفال عندهم اكثر من ام وابو!! هذا غير منطق او غير مفهوم صح؟

بمعنا لازم يكون مثل ماشرحت Parent اي الام وابو راح يكون عنده اكثر من طفل.

خليني اوضح لكم بالصوره:

Parent

مثل موضح بالصوره هو عباره عن Parent بسبب عدم وجود FK يعني هذا الجدول ليس تابعه الاحد.

Children

مثل موضح بالصوره هو عباره عن الاطفال او Children ليه لانه تابعه الجدول Person بسبب وجود FK او مفتاح الفرعي.

هنا بعد ماربطنا الجدول person الى car و صار المنطق هكذا:

  • كل شخص واحد يتملك اكثر من سياره.
  • كل سيارات يمتلكها شخص واحد فقط.

تقدر تعكسها لو حاب تسوي محل ايجار مثلآ لو حاب تأجر سياره اكثر من شخص يضبط.

بس اهم شي هنا وصلت المعلومة كيف ربط بين المفتاح الاساسي و المفتاح الفرعي.


ERD يتكون من ثلاث اشياء:

1- Entity

Entity عباره عن Noun او الاسماء مثلآ الموظفون او سيارات او اشخاص او الكتب الخ..

Entity

الى عليه علامة هذا Entity قد يكون اين كان من الاسماء.

2- Attribute:

عباره عن اسم ايضآ ولكن بالمعلومات. كيف؟

مثلآ اسم الموظف او اسم الطالب او العنوان او رقم الهاتف وغيرها

هذا بالعاده يكون نوع من المعلومات الى تريد تنحفظ في قاعده البيانات.

example of Attribute

مثل موضح بالصوره تحت راح يكون Attributes مثل الاي دي تبع الطالب واسمه و عنوانه وهكذا.

3- Relationship:

العلاقات الى تكون بين الجداول و مربوطه ايضآ.

مثلآ هذي صوره:

تلاحظون في خط بين جدولين؟ هذا Relationship

راح يكون person واحد عنده اكثر من سياره.

راح اشرح انواعها ولها ثلاث انواع.



أنواع Relationship:

1- (M:1) او (1:M):

هذا النوع اساسي و معروف ويجب يتواجد بكل جداول بحيث تربط بين parent و children بكل سهوله.

هذا مثال الصوره مع شرح:

مثل موضح Person يكون عنده خط صغير يشبه علامة + باللون الازرق آي كل شخص واحد فقط.

و الجدول Car يوجد عنده خطوط باللون الاخضر معناه اكثر من سياره وحده.

هنا نقول كل شخص واحد يكون عنده اكثر من سياره.

جدول person: عباره عن parent بسبب عدم وجود FK

جدول Car: عباره عن Children بسبب وجود FK تابعه الى الجدول Person.

ملاحظة: في SQL يجب عليك ان تتبع طريقة صحيحة اثناء انشاء قاعده بيانات

يجب ان يكون Parent أولآ ثم children بسبب FK

في حال بنيت جدول children بالبداية ثم parent راح يعطيك خطأ بسب عدم وجود جدول تابع children.

2- (1:1)

هذا النوع نادر يستخدم او يستخدم في اشياء معينه مثل كل طالب يكون عنده معلومه بسيطة وفرعيه. او شخص واحد يكون عنده اسم مستخدم و باسورد خاص به.

مثال بالصوره:

1:1

3- (M:M):

هذا النوع يكون جدولين نفس العلاقه

مثال: طالب يأخذ عند اكثر من دكتور

أو دكتور يدرس اكثر من طالب

بمعنى كلهم اكثر بنفس الجهتين هنا نحتاج نسوي جسر بينهم Bridge

هنا مثال بالصوره:

M:M

هذا يسمى M:M آي

  • الطلاب ياخذون عند اكثر من الدكتور.
  • الدكاتره يدرسون أكثر من طالب.

عشان نحل هذي مشكلة؟

نحتاج نعمل جسر بينهم ويتحول 1:M

مثال بالصوره:

1:M

الجدول enrolled عباره عن جسر بين الطلاب و الدكاتره ليه؟ بحيث كل من جدول دكتور والطالب يصير بدال عن M:M راح يصبح 1:M

مثال:

  • الدكتور واحد يدرس اكثر من مادة
  • طالب واحد يأخذ اكثر من مادة

كذا صارو متساوين لانه لو بدون جسر راح يصير تكرار او اخطأ كثيره.

ومنها Parent method الى شرحتها سابقآ مثال:

لو صارت M:M يعني كأني اقول اطفال عندهم اطفال ولكن احنا نبي الصح مو خطأ

يجب ان يكون 1:M يعني كأني اقول الوالدين عندهم اطفال :).


أنواع Keys:

يوجد لها انواع كثيره لكن سأشرحها بالمقال اخر بأذن الله.

1- Primary key

عباره عن مفتاح رئيسي ويجب أن يكون غير متكرر و نادر و يوجد فيه قيمة

مثال: 123456

2- Foreign Key

عباره عن مفتاح الفرعي و يكون تابعه المفتاح رئيسي

مفتاح الفرعي ممكن ان يكون ارقام متكرره مثلآ ID يكون

3332

او

2231

أو

23123311


من أهم نصائح وقوانين يجب ان تتبعها بحيث تعمل قاعده بيانات بشكل سليم وخالية من الاخطأ:

  • لازم تتبع طريقة parent method أقصد تتعامل مع PK و FK و مثل ماذكرنا ماينفع ابدآ انك تبدء بأول جدول يكون هو Child او يكون فيه FK لانه بيحصل معاك خطأ ويخبرك الجدول الى موصل الى Primary key غير متواجد.
  • دائمآ ابدء بالجدول يكون primary key الحاله و اكيد في هذي الحالة اذا انت عارف المشروع و فاهم أيش بتسوي بضبط. بهالطريقة راح تسهل عليك العملية و بعدها سو جدول الى يوجد فيه Child تابعه parent او primary key. لانه في SQL مثل ماذكرنا لما تبدء تعمل جدول child الى يتواجد فيه مفتاح الفرعي سوف يظهر لك خطأ.

هنا مثال بالصوره و مع شرح:

1- انا بنيت اول جدول عباره عن parent و له primary key تمام.

2- جدول سياره تابعه الجدول رقم واحد لانه جدول سياره child يتبع الى جدول رقم واحد parent

  • كل customer واحد عنده اكثر من سياره.
  • اكثر من سياره يمتلكها customer واحد فقط.

3- جدول اخر يعتبر parent بحيث نقدر نوصلها الى رقم 4 بدون اي أخطأ او مشاكل.

مثلآ: فني يعمل أكثر من صيانة وحده.

4- Children تابعه رقم 3 و 2 بسبب وجود FK اي مفتاح الفرعي يعود الى primary key تمام.

لو تركز بالصوره راح توصل المعلومة بشكل افضل و توضح الفكرة

رقم 4 أكثر صيانات يشتغل عليه فني واحد فقط.

نفس الشئ مع رقم 2

سياره وحده يصير لها اكثر من صيانه او أصلاحات في سياره.

طبعآ كل هذي العلاقات تكون من النوع 1:M

و نوع اخر M:M هم رقم 5 و 4

هنا نحتاج نعمل جسر بينهم و الجسر رقم 6 راح يكون بين 5 و 4 وكلهم يصيرون 1:M

وبس كذا اكتمل الجدول قاعده بيانات بنجاح.

اذا عندك استفسار او في شي مافهمته اكتب بالتعليق اخر صفحه و ارد عليك أن شاءالله.

هنا انتهينا من الدرس ERD الرسم قاعده بيانات وفهمنا نظام Parent وفهمنا العلاقات بين جداول.

اشوفكم على خير.