عيادة ومواعيد
عيادة فيها أطباء ومرضى. كل موعد يكون لمريض واحد عند طبيب واحد. المريض ممكن يحجز مواعيد كثيرة، والطبيب عنده مواعيد كثيرة. احفظ تاريخ ووقت كل موعد في عمود اسمه appointment_time.
ارسم مخطط الكيانات والعلاقات بنفسك: اسحب الجداول، اربطها بعلاقات Crow's Foot، والاستوديو يضيف المفاتيح الأجنبية ويكتب لك كود SQL جاهز لـ MySQL. وبعدها تشغّله بضغطة في ساحة SQL.
dept_id يكون دايماً في جهة الكثير.شي نبي نحفظ عنه بيانات: طالب، منتج، طلب. يتحول لجدول في قاعدة البيانات.
معلومة عن الكيان: الاسم، السعر، التاريخ. تتحول لعمود.
صفة قيمتها ما تتكرر وتميّز كل صف، مثل student_id.
عمود يشير لمفتاح أساسي في جدول ثاني، وهو اللي يجسّد العلاقة.
الرابط بين كيانين، ومعها العدد: واحد لواحد، واحد لكثير، كثير لكثير.
كل طرف في العلاقة عليه رمزين: الأقرب للخط يقول «كم على الأكثر»، والأبعد يقول «كم على الأقل». والرمز القريب من الكيان يتكلم عن عدد سجلات هذا الكيان.
لازم يكون فيه واحد، وما يزيد عن واحد.
اختياري: ممكن ما يكون فيه، وإذا فيه فواحد بس.
لازم يكون فيه واحد على الأقل، وممكن كثير.
اختياري، وممكن يكون كثير.
اقرأ وصف النظام وحط خط تحت الأسماء المهمة (طالب، مادة، أستاذ). أغلبها بيصير كيانات.
لكل كيان اكتب المعلومات اللي تحتاجها. خلّ كل صفة بسيطة: قيمة وحدة في كل خانة.
كل كيان يحتاج مفتاح أساسي. الأسهل غالباً رقم تعريفي مثل student_id.
الأفعال في الوصف تدلك على العلاقات (يسجّل، يدرّس). اسأل من الجهتين: كم طالب في المادة؟ وكم مادة للطالب؟
كل علاقة كثير لكثير تتحول لجدول وسيط. وتأكد ما فيه معلومة مكررة في أكثر من مكان.
اقرأ القصة، وارسم المخطط في الاستوديو، واضغط «تحقّق». الاستوديو يراجع الكيانات والمفاتيح والعلاقات ويقول لك وش ناقص.
عيادة فيها أطباء ومرضى. كل موعد يكون لمريض واحد عند طبيب واحد. المريض ممكن يحجز مواعيد كثيرة، والطبيب عنده مواعيد كثيرة. احفظ تاريخ ووقت كل موعد في عمود اسمه appointment_time.
الطالب يسجّل في مواد كثيرة، والمادة يسجّل فيها طلاب كثير. ونبي نحفظ درجة الطالب grade في كل مادة سجّلها. فكّر: وين مكان عمود الدرجة؟ (تلميح: الدرجة صفة للتسجيل نفسه، مو للطالب ولا للمادة).
كل موظف يتبع قسم واحد، والقسم فيه موظفين كثير. وفوق كذا، كل قسم يديره موظف واحد فقط، والموظف يدير قسم واحد على الأكثر. يعني بين الجدولين علاقتين مختلفتين!
أمثلة كاملة تفتحها في الاستوديو، تعدّل عليها، وتشوف كود SQL حقها.
أقسام، أساتذة، طلاب، مواد، وجدول تسجيل وسيط فيه الدرجة.
عملاء، طلبات، منتجات وتصنيفات، وعلاقة واحد لواحد بين الطلب والدفع.
أقسام، أطباء، مرضى، مواعيد، ووصفات طبية.
كتب ومؤلفين بعلاقة كثير لكثير، وأعضاء يستعيرون الكتب.
نفس قاعدة البيانات اللي تدربت عليها في دروس SQL، مع علاقة ذاتية للمدير.