قبل ما ننتقل لربط التطبيق بقاعدة البيانات، خلينا نفهم الأساسيات. شو هي قاعدة البيانات؟ تخيل دفتر ملاحظات بتكتب فيه أسماء أصدقائك مع أرقامهم وعناوينهم - هذا أبسط شكل لقاعدة بيانات.
الفرق الكبير هو أن قاعدة البيانات الإلكترونية مكان منظم لتخزين المعلومات بحيث تقدر توصل إليها بسرعة وتعدل عليها بسهولة.
تعتمد على جداول مثل Excel بس أكثر تطوراً. كل جدول فيه:
العلاقات بتصير بين الجداول. أمثلة:
لا تعتمد بالضرورة على جداول. الشكل يختلف:
مناسب أكثر للبيانات الكبيرة وغير المنتظمة. مواقع مثل Facebook وInstagram تستخدم NoSQL للبيانات الضخمة.
بالسلسلة رح نستخدم PostgreSQL من نوع Relational.
المفاتيح بتميز البيانات عن بعضها داخل الجداول.
مفتاح بيميز كل سجل ولا يتكرر (Unique). مثل رقم الهوية. كل جدول عنده Primary Key واحد.
Department
+----+------------------+
| id | name |
+----+------------------+
| 1 | Engineering |
| 2 | Marketing |
+----+------------------+
مفتاح بيربط جدول بجدول ثاني. هو الـ Primary Key من جدول ثاني مستخدم كمرجع:
Employee
+----+----------+---------------+
| id | name | department_id |
+----+----------+---------------+
| 1 | John | 1 | ← Foreign Key يشير لـ Department
| 2 | Sara | 1 |
| 3 | Ahmed | 2 |
+----+----------+---------------+
الـ department_id في جدول الموظفين هو Foreign Key يشير للـ Primary Key في جدول الأقسام.
Candidate Key - أي مفتاح ممكن يصير Primary Key بس ما اخترناه. مثلاً في جدول الموظفين: رقم الهوية ورقم الهاتف ممكن يصيروا Primary Key، بنختار واحد فقط. أيضاً ممكن تحديد Unique على أعمدة معينة زي الأسماء أو الإيميلات بحيث ما يصير في تكرار.
كل سجل في جدول مرتبط بسجل واحد فقط في جدول ثاني.
مثال: User و - كل مستخدم عنده Profile واحد فقط.
اشترك في النشرة البريدية
دروس جديدة، مقالات، وأدوات مباشرة لبريدك.
ProfileUser: id, email
Profile: id, bio, user_id (FK → User.id)
سجل واحد مرتبط بأكثر من سجل في جدول ثاني.
مثال: Department وEmployee - قسم واحد عنده كثير موظفين.
Department: id, name
Employee: id, name, department_id (FK → Department.id)
كل سجل في جدول مرتبط بعدة سجلات في جدول ثاني والعكس صحيح.
مثال: Student وCourse - كل طالب ممكن يسجل بكثير كورسات، وكل كورس فيه كثير طلاب.
العلاقة هاي ما بتنبني مباشرة بين الجدولين - بحتاج Join Table (جدول وسيط):
Student: id, name
Course: id, title
Enrollment: id, student_id (FK), course_id (FK)
الجدول الوسيط Enrollment يحتوي على Foreign Keys لكلا الجدولين. هيك:
هالمعلومات رح تساعدنا كثير بالدرس الجاي لما نربط التطبيق بقاعدة البيانات الحقيقية.