أساسيات قاعدة البيانات في Lovable Cloud
كيف تصمّم مخطّطًا سليمًا من البداية بدل إعادة كتابته بعد شهر.
فكّر بالكيانات، لا بالشاشات
قبل كتابة أيّ CREATE TABLE، اكتب على ورقة: ما الكيانات الحقيقية في المنتج؟ (مستخدم، مشروع، طلب…) وما العلاقات؟ الجدول ليس مرآة للشاشة — قد تحتاج شاشة واحدة بيانات من أربع جداول.
المفاتيح والعلاقات
استخدم uuid كمفتاح أساسيّ افتراضًا (gen_random_uuid()). للعلاقات، استخدم foreign keys مع ON DELETE CASCADE للعلاقات المملوكة، وON DELETE SET NULL للاختيارية. لا تنسَ إنشاء INDEX على أعمدة foreign key.
RLS + GRANTs معًا، دائمًا
كل جدول في schema.public يحتاج ثلاث خطوات في نفس الترحيل: (١) CREATE TABLE، (٢) GRANT للأدوار المسموح لها، (٣) ENABLE RLS + CREATE POLICY. حذف أيّ خطوة يعني خطأ صلاحيات في وقت التشغيل.
الأدوار بجدول منفصل
لا تخزّن أبدًا حقل is_admin أو role في جدول profiles — هذه ثغرة تصعيد صلاحيات كلاسيكية. أنشئ جدول user_roles منفصلًا، ودالّة has_role() بصيغة SECURITY DEFINER، واستخدمها داخل RLS.
الترحيلات كتاريخ لا يُحذف
كل تعديل على المخطّط = ملفّ migration جديد. لا تعدّل ملفّ ترحيل قديم مطلقًا. عند إضافة عمود NOT NULL على جدول حيّ: أضفه nullable، عبّئ القيم، ثم أضف NOT NULL في ترحيل ثانٍ.
- مخطّط قاعدة بيانات لمدوّنةposts + categories + authors مع RLS جاهزة.
- أدوار وصلاحيات بجدول منفصلadmin/moderator/user بأمان تام بلا privilege escalation.
- إصلاح RLS تسرّب صلاحياتتدقيق سياسات RLS ومنع الوصول غير المصرّح به.
- ترحيل آمن لعمود جديدإضافة عمود بدون كسر قاعدة البيانات الحيّة.
هل كان هذا المحتوى مفيداً؟
استلم أحدث الأدلّة والبرومبتات كل أسبوع
خلاصة عربية أسبوعية عن Lovable وVibe Coding — بلا سبام، إلغاء متى شئت.
