دورة تطوير نظام إدارة الأعراس والمناسبات ودعوات QR عمليًا

تصميم قاعدة البيانات والعلاقات

تصميم قاعدة البيانات والعلاقات — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
وقت الدراسة
13 دقيقة

المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: التحليل والتصميم

مدخل إلى الدرس: تصميم قاعدة البيانات والعلاقات

تصميم قاعدة البيانات والعلاقات — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي

طريقة الدراسة: اقرأ التعريف، تتبّع المثال في الشرح، نفّذه بنفسك، ثم اختبر النتيجة والحالات الاستثنائية قبل الانتقال.

أهداف هذا الدرس

  • تحويل الكيانات إلى جداول بمفاتيح أساسية وخارجية.
  • تطبيق قيود النزاهة (UNIQUE, INDEX) على العلاقات الحرجة.
  • رسم ERD كامل بأسماء الحقول قبل كتابة Prisma.

المخطط: الرسم التفصيلي للجداول والأعمدة والعلاقات (ERD كامل)

erDiagram
    events {
        string id PK
        string name
        datetime date
        string location
        string slug UK
        datetime created_at
        datetime updated_at
    }
    guests {
        string id PK
        string event_id FK
        string name
        string phone
        string category
        string table_no
        string token_hash UK
        datetime created_at
    }
    rsvps {
        string id PK
        string guest_id FK
        string event_id FK
        string status
        string notes
    }
    check_ins {
        string id PK
        string guest_id FK
        string event_id FK
        datetime checked_in_at
    }
    events ||--o{ guests : ""
    events ||--o{ rsvps : ""
    events ||--o{ check_ins : ""
    guests ||--o{ rsvps : ""
    guests ||--o{ check_ins : ""

قواعد تصميم العلاقات

  • واحد-إلى-كثير Event→Guest: مناسبة واحدة لها ضيوف كثيرون؛ الضيف ينتمي لمناسبة واحدة.
  • واحد-إلى-كثير Guest→Rsvp: سجل الردود منفصل للسماح بالمحفوظات المستقبلية.
  • واحد-إلى-كثير Guest→CheckIn: تسجيل دخول لكل مسح، فنحتفظ بأثر التدقيق.
  • المفتاح المركب UNIQUE(guest_id, event_id): يمنع تكرار الرد من نفس الضيف لنفس المناسبة.

أداء قاعدة البيانات

فهرس (Index) على event_id في الجدولين rsvps و check_ins يسرّع فلاتر «حادثة واحدة» حتى مع آلاف السطور.

الخلاصة السريعة

  • كل علاقة في المخطط تصبح مفتاحاً خارجياً في الجداول الفرعية.
  • UNIQUE المركب هو حارس النزاهة أمام أخطاء الكود والضغط المزدوج.
  • فصل الرد عن الحضور عن المدعو يمنح ما يشبه سجل تدقيق.

تمرين تطبيقي: أضف جدول venues (مواقع) لمشروعك: معرفه واسمه وعلاقته بالمناسبات، وارسم صلة واحد-إلى-كثير مع events.

أخطاء شائعة يجب تفاديها

  • تسمية الأعمدة بلا اتفاقيات (PyPK, createdAt) يشتت الاستعلامات.
  • نقص الفهارس على أعمدة الـ WHERE المتكررة (event_id).
  • جعل slug غير فريد قد يضاعف روابط أمامية.

معجم مصطلحات الدرس

مفتاح أساسي PK
عمود يعرّف كل صف بشكل فريد.
مفتاح خارجي FK
عمود يحيل إلى مفتاح أساسي في جدول آخر.
فهرس Index
بنية تسرّع البحث في عمود محدد.

مراجعة وتمرين تثبيت المهارة

اختبار سريع: اشرح بعبارتك معنى «تصميم قاعدة البيانات والعلاقات»، ثم بيّن أين ستستخدمه داخل نظام تسجيل حضور دعوات مناسبة عبر رمز QR، وما الخطأ الذي يجب اختباره قبل الاعتماد على الحل.

تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.

الدرس التالي: تدفق الدعوة وقراءة QR من التوليد إلى الحضور. من الأفضل إنهاء التجربة الحالية قبل متابعة الدرس التالي.

دروس نصية

#1

نظرة عامة على الدورة والمخرجات

#2

مقدمة إلى Next.js وأسباب اختياره

#3

أساسيات schema.prisma والنماذج

#4

مقدمة Route Handlers وبنية الاستجابة

#5

فهم Server Components والجلب الآمن

#6

تصميم الرمز Secured والتوقيع HMAC

#7

بناء الإنتاج وتجنّب أخطاء الحالة المربكة

#8

تحليل المتطلبات وتحديد الكيانات

#9

إنشاء مشروع Next.js وتجربته

#10

نموذج المناسبة Event بالعلاقات

#11

واجهة إنشاء المناسبة POST /api/events

#12

تصميم صفحة الدعوة الإلكترونية

#13

توليد صورة QR من قاعدة الدعوة

#14

نشر المشروع على Vercel

#15

تصميم قاعدة البيانات والعلاقات

#16

تجريب PostgreSQL محلياً وإنشاء قاعدة الداتا

#17

نموذج المدعو Guest مع الرمز الموقّع

#18

واجهات الضيوف الإضافة والقائمة

#19

نموذج الرد RSVP التفاعلي

#20

تجربة المسح في بوابة الحفل

#21

قاعدة بيانات إنتاج مُدارة وأمانها

#22

تدفق الدعوة وقراءة QR من التوليد إلى الحضور

#23

تثبيت Prisma والاتصال بالقاعدة

#24

نموذج الرد Rsvp ومنع التكرار

#25

واجهة تسجيل الحضور POST /api/checkin

#26

صفحة قائمة الضيوف والفرز

#27

واجهة تتفهم حالة الحضور والحصر

#28

إدارة المتغيرات السرية بيئة وواجهة

#29

سيناريو المشروع وقواعد العمل

#30

بنية مجلدات المشروع ومسارات الصفحات

#31

الاستعلام والجلب مع العلاقات

#32

التحقق من المدخلات ومعالجة الأخطاء

#33

لوحة الإحصائيات الحية

#34

تأمين الروابط والهجمات الشائعة

#35

قائمة الفحص النهائي قبل الإطلاق

#36

الترحيلات migrations والبذور seed

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 3/36
أنت تشاهد
تصميم قاعدة البيانات والعلاقات