الرسم ERD في قاعدة بيانات
الكاتب: Mr.Aziz
تاريخ النشر: 2021-06-02 17:11:28
مساءكم الخير...
اليوم راح اشرح عن الرسم قاعده بيانات ERD و Relationships و parent method تمام.
طبعآ parent method انا تعلمتها من الجامعة و حبيت أشرحها لكم لانها أفضل طريقة لفهم بناء العلاقه بين Primary key و foreign key بدون اي مشاكل.
وشي ضروري لما تجي تخطط تسوي قاعده بيانات كبيره تحتاج هذي البرامج الرسم قبل بدء بناء قاعده بيانات الفعلية خاصة المشاريع الكبيره.
ERD تعني Entity Relationship Diagram.
توجد برامج كثيره تقدر ترسم او تخطط قاعده بيانات عن طريقها مثل MS Vision او Draw.io
سبب وجود هذي برامج لتجنب من الاخطأ اثناء بناء قاعده بيانات مثل توصيل العلاقات بين الجداول وتعرف اين تضع Primary key و foreign key و مع الجداول اخرى ايضآ.
بالغالب يستخدم في حال بناء قاعده بيانات كبيره جدآ او يوجد كثير من الجداول لتجنب من الاخطأ بالمستقبل.
و بعض الاحيانآ قواعد بيانات صغيرة مثل جدولين او ثلاث قد لايحتاج ولكن يفضل انك تتدرب فيها للمستقبل الى ان تفهمها جيدآ وتتقنها ايضآ.
Parent method:
استراتجية parent method هي الوالدين او الام والاب و الاطفال Children هذا بالحياة الواقعية تمام.
بس خلينا نتكلم عنها بالقاعده بيانات
لما يكون عندنا جدولين و جدول اسمها Person و جدول اخر اسمه Cars
احنا نعرف Parent يكون عنده اطفال آي بالقاعده بيانات راح يكون:
Parent as Primary key
Children as Foreign key
يعني Parent راح يكون مفتاح الاساسي و الاطفال او Children راح يكون الفرعي
كل مفتاح اساسي راح يكون فريد نوعآ ما و غير متكرر و المفتاح الفرعي راح يكون تابعه الاساسي
وراح اشرح عن انواع المفاتيح بس حاب اوضح طريقة parent method
طيب هل نقدر نخلي عكس يعني الاطفال يكون الاساسي و الولدين فرعي؟
لا. ليه ..لانه راح يكون بالواقعي اطفال عندهم اكثر من ام وابو!! هذا غير منطق او غير مفهوم صح؟
بمعنى لازم يكون مثل ماشرحت Parent اي الام وابو راح يكون عنده اكثر من طفل.
خليني اوضح لكم بالصوره:
مثل موضح بالصوره هو عباره عن Parent بسبب عدم وجود FK يعني هذا الجدول ليس تابعه الاحد.
المقصد perID يكون هو primary وليس فرعي أن كان مكانه أساسي فهو Parent بالاساس.
مثل موضح بالصوره هو عباره عن الاطفال او Children ليه لانه تابعه الجدول Person بسبب وجود FK او مفتاح الفرعي.
مثال PerID كما موضح بالصوره صار FK وليس أساسي هنا نقول تابعة للجدول person.
هنا بعد ماتم الربط الجدول person الى car و صار المنطق هكذا:
- كل شخص واحد يتملك اكثر من سياره.
- كل سيارات يمتلكها شخص واحد فقط.
تقدر تعكسها لو حاب تسوي محل ايجار مثلآ لو حاب تأجر سياره اكثر من شخص يضبط.
بس اهم شي هنا وصلت المعلومة كيف ربط بين المفتاح الاساسي و المفتاح الفرعي.
ERD يتكون من ثلاث اشياء:
1- Entity
Entity عباره عن Noun او الاسماء مثلآ الموظفون او سيارات او اشخاص او الكتب الخ..
الى عليه علامة هذا Entity قد يكون اين كان من الاسماء.
2- Attribute:
عباره عن اسم ايضآ ولكن بالمعلومات. كيف؟
مثلآ اسم الموظف او اسم الطالب او العنوان او رقم الهاتف وغيرها
هذا بالعاده يكون نوع من المعلومات الى تريد تنحفظ في قاعده البيانات.
مثل موضح بالصوره تحت راح يكون Attributes مثل الاي دي تبع الطالب واسمه و عنوانه وهكذا.
3- Relationship:
العلاقات الى تكون بين الجداول و مربوطه ايضآ.
مثلآ هذي صوره:
راح تلاحظ في الخط فاصل بين جدولين؟ هذا Relationship
راح يكون person واحد عنده اكثر من سياره.
راح اشرح انواعها ولها ثلاث انواع.
أنواع Relationship:
1- (M:1) او (1:M):
هذا النوع اساسي و معروف ويجب يتواجد بكل جداول بحيث تربط بين parent و children بكل سهوله.
هذا مثال الصوره مع شرح:
و الجدول Car يوجد عنده خطوط باللون الاخضر معناه اكثر من سياره وحده.
هنا نقول كل شخص واحد يكون عنده اكثر من سياره.
جدول person: عباره عن parent بسبب عدم وجود FK
جدول Car: عباره عن Children بسبب وجود FK تابعه الى الجدول Person.
ملاحظة: في SQL يجب عليك ان تتبع طريقة صحيحة اثناء انشاء قاعده بيانات
يجب ان يكون Parent أولآ ثم children بسبب FK
في حال بنيت جدول children بالبداية ثم parent راح يعطيك خطأ بسب عدم وجود جدول تابع children.
2- (1:1)
هذا النوع نادر يستخدم او يستخدم في اشياء معينه مثل كل طالب يكون عنده معلومه بسيطة وفرعيه. او شخص واحد يكون عنده اسم مستخدم و باسورد خاص به.
مثال بالصوره:
مثال:
لو كل شخص عنده username و password هنا نقول 1:1 لانه كل شخص واحد عنده user واحد فقط.
3- (M:M):
هذا النوع يكون جدولين نفس العلاقه
مثال: طالب يأخذ عند اكثر من دكتور
أو دكتور يدرس اكثر من طالب
بمعنى كلهم اكثر بنفس الجهتين هنا نحتاج نسوي جسر بينهم Bridge
هنا مثال بالصوره:
هذا يسمى M: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 غير متواجد. جرب أن تنشئ أول جدول يكون في FK بدلآ عن PK لن يقبل معاك..
- دائمآ ابدء بالجدول يكون primary key الحاله و اكيد في هذي الحالة اذا انت عارف المشروع و فاهم أيش بتسوي بضبط. بهالطريقة راح تسهل عليك العملية و بعدها سو جدول الى يوجد فيه Child تابعه parent او primary key. لانه في SQL مثل ماذكرنا لما تبدء تعمل جدول child الى يتواجد فيه مفتاح الفرعي سوف يظهر لك خطأ.
هنا مثال أخر بالصوره و مع شرح لو حاب تعرف بالترتيب يتم أنشاء الجدول:
هذا فقط نوع من ملاحظة او تعرف طريقة أنشاء بالتسلسل.
نبدء من رقم 1 الى 6
1- أنشاءنا أول جدول عباره عن parent و له primary key تمام.
2- جدول cars تابعه الجدول رقم واحد لانه جدول سياره 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 وفهمنا العلاقات بين جداول.
و أن شاءالله وضحت الفكرة.
أشوفكم بالدرس القادم.