أساسيات schema.prisma والنماذج
المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: نمذجة قاعدة البيانات بـ Prisma
مدخل إلى الدرس: أساسيات schema.prisma والنماذج
أساسيات schema.prisma والنماذج — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js و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 بالعلاقات. من الأفضل إنهاء التجربة الحالية قبل متابعة الدرس التالي.