ليه تصميم قاعدة البيانات مهم؟
تصميم قاعدة البيانات الغلط هو أكتر سبب لمشاكل الأداء في المشاريع الكبيرة. تغيير الـ Schema بعدين بيكون مؤلم جداً لو التطبيق شغال.
خطأ 1: عدم تطبيق Normalization
-- غلط: تخزين بيانات متكررة
users: id | name | city_name | country_name
-- صح: Normalized
users: id | name | city_id
cities: id | name | country_id
countries: id | name | code
خطأ 2: استخدام VARCHAR(255) في كل حاجة
-- غلط
status VARCHAR(255)
-- صح
status ENUM('active', 'inactive', 'pending')
is_active TINYINT(1)
خطأ 3: نسيان الـ Foreign Keys والـ Indexes
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->string('slug')->unique();
$table->enum('status', ['draft', 'published'])->index();
$table->index(['user_id', 'status', 'created_at']);
});
خطأ 4: تخزين JSON لكل حاجة
-- غلط: علاقات جوه JSON
products: id | name | tags (JSON) | categories (JSON)
-- صح: Pivot Tables
product_tag: product_id | tag_id
product_category: product_id | category_id
خطأ 5: عدم التخطيط للـ Soft Delete
// في الـ Model
use SoftDeletes;
// في الـ Migration
$table->softDeletes();
قاعدة ذهبية
فكر في تصميم الـ Database قبل ما تكتب أي كود. الوقت اللي بتصرفه في التصميم هيوفر عليك أضعافه في المستقبل.