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

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

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

المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: نمذجة قاعدة البيانات بـ Prisma

مدخل إلى الدرس: أساسيات schema.prisma والنماذج

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

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

خريطة بصرية للمفهوم

مخطط توضيحي: نمذجة قاعدة البيانات بـ Prisma
flowchart LR
    A["طلبات المناسبة"]
    B["إدارة الدعوات"]
    C["إصدار QR"]
    D["التحقق من الدعوة"]
    E["متابعة الحضور"]
    A --> B
    B --> C
    C --> D
    D --> E

التسلسل: طلبات المناسبة ← إدارة الدعوات ← إصدار QR ← التحقق من الدعوة ← متابعة الحضور.

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

  • قراءة بنية schema.prisma: datasource وgenerator ونماذج.
  • تعريف أول نموذج (Event) بأنواع أعمدة مناسبة.
  • معرفة دور المفاتيح وفهارس العنوان UNIQUE.

المخطط: خريطة مكونات ملف schema.prisma وكيف تُترجم إلى قاعدة بيانات

flowchart TD
    SCH["schema.prisma
generator client → عميل
datasource db → اتصال
model Event → جدول"] SCH --> GEN["npx prisma generate"] GEN --> CL["@prisma/client (وظائف نوعية)"] SCH --> PG[("PostgreSQL — جدول events مع فهارس/قيود")]

مثال

model Event {
  id        String   @id @default(cuid())
  name      String
  date      DateTime
  location  String
  slug      String   @unique
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

قراءة كل سطر من الكود

الجزءالمعنىعلامة التصحيح المحتملة
@id @default(cuid())مفتاح نصي غير متسلسل صالح للنشرcuid لا يُكشف معرفياً
@unique على slugمنع تكرار روابط المناسباتعنونات صديقة SEO
@default(now())يؤرخ الإنشاء تلقائياًلا سطر تأريخ يدوي
@updatedAtيحدّث التعديل من Prismaيتطلب إعادة generate

لماذا نصي وليس رقمياً؟

اختر id من نوع String وcuid بدل int لتفادي الحصر والتجوال وتسهيل المزامنة بين عدة عقد نشر — خصوصاً عند بلوغ درجات ضخمة من المدعوين.

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

  • schemas = وصف الجداول وعلاقاتها وليس بياناتها.
  • @id معرّف رئيسي، @unique قيود نزاهة مستقلة.
  • أي تعديل على النموذج يتطلب إعادة توليد العميل.

تمرين تطبيقي: أضف لنموذج Event حقلاً capacity_of_guests : Int بحده optional وتأكد أن validate لا يشكو.

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

  • استخدام @id من نوع Int مع cuid — تعارض النية.
  • تسمية النموذج بجمع (events) إذ يفترض Prisma جدولاً باسمه.
  • تعديل schema دون إعادة generate فينسى العميل.

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

cuid
مُعرّف قصير عشوائي ناتج عن مكتبة cuid.
@unique
قاموس يمنع تكرار قيم عمود عبر الصفوف.
مولّد generator
يحدد كيف يولَّد عميل Prisma من المخطط.

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

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

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

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

دروس نصية

#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

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 1/36
أنت تشاهد
أساسيات schema.prisma والنماذج