SQL Databases • المستوى الرابع • الدرس 2
العودة لفهرس المستوىالمشروع النهائي — تصميم مخطط قاعدة بيانات متجر إلكتروني متكامل
أهداف المشروع الشامل
- تصميم مخطط متجر كامل يربط الأقسام والمنتجات والمستخدمين والطلبات.
- تطبيق أفضل الممارسات في اختيار أنواع البيانات والمفاتيح الأجنبية والقيود.
- بناء جدول وسيط (Junction Table) لعلاقة متعدد-لمتعدد (Products ↔ Orders).
- إضافة فهارس (Indexes) على المفاتيح الأجنبية لتسريع الاستعلامات.
1. بنية المشروع (Schema Overview)
تُعتبر هيكلة الجداول المتقاطعة (مثل order_items التي تربط الطلب بالمنتجات والكميات) العمود الفقري لجميع التطبيقات والمتاجر الإلكترونية العالمية.
sql
-- خريطة العلاقات في متجر إلكتروني
users ----+
|
v
orders -----+
| |
v v
order_items ---+--> products --> categories2. الجداول الخمسة الأساسية
users
المستخدمون. يسجّلون طلبات.
categories
الأقسام (إلكترونيات، ملابس، ...).
products
المنتجات مع السعر والمخزون، مرتبطة بقسم.
orders
الطلبات، مرتبطة بمستخدم. لها حالة (status).
order_items (جدول وسيط)
كل صف يمثل منتجاً داخل طلب معين. يحلّ علاقة متعدد-لمتعدد بين الطلبات والمنتجات. ويحفظ السعر في لحظة الشراء (قد يتغير لاحقاً).
3. أفضل الممارسات (Best Practices)
افعل
- استخدم
SERIAL PRIMARY KEYلكل جدول - أضف
REFERENCESلكل مفتاح أجنبي - حدد سلوك الحذف (
CASCADE/SET NULL) - أضف
created_atلكل جدول - أنشئ فهارس على المفاتيح الأجنبية
تجنّب
- لا تخلط أنواع البيانات المتشابهة (VARCHAR للأرقام)
- لا تستخدم نفس اسم الجدول في جداول مختلفة
- لا تضع مفتاحاً أجنبياً بدون فهرس
- لا تحفظ السعر الحالي بدل السعر وقت الشراء
التطبيق العملي المباشر — التحدي الختامي
تحدي إتمام مسار SQL: بناء المتجر الكامل
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- أضف جدول
usersفي البداية (قبل categories) بحقول:id،name،email(UNIQUE)،created_at. - أضف جدول
ordersبعد products، يشير إلىusers(id)معON DELETE CASCADE، ويحتوي علىstatus،total،created_at. - احتفظ بجدول
order_itemsالأصلي، لكن أضفON DELETE SET NULLعلىproduct_id. - أضف 3 فهارس:
idx_products_category،idx_orders_user،idx_order_items_order. - تأكد من أن كل جدول له
PRIMARY KEYوcreated_at(إن أمكن). - اضغط "تشغيل الكود" لرؤية هيكل جميع الجداول المُنشأة.
⏳ جارٍ تحميل المحرر التفاعلي...