الإجابة المختصرة
نموذج البيانات الجيد في Salesforce ليس بالضرورة الأكثر جمالاً من الناحية النظرية، بل هو النموذج الذي يحقق ثلاثة أهداف في آن واحد: دعم العمليات التجارية، وتطبيق نموذج الصلاحيات، وتلبية متطلبات التقارير. معظم النماذج الفاشلة بُنيت مع التركيز على الهدف الأول فقط.
يكمن الفارق بين قرار يتعلق بنموذج البيانات والقرارات الأخرى في المشروع في تكلفة التغيير. تغيير Flow قد يستغرق يوماً واحداً؛ أما تغيير نوع العلاقة بين الكائنات بعد سنتين من تراكم البيانات، والأتمتة، وعمليات التكامل، فهو مشروع بحد ذاته. لذا، فإن الاستثمار في مرحلة التخطيط هنا يعود بالنفع أكثر من أي مرحلة أخرى.
القاعدة الأولى: البدء بالكائنات القياسية
تحمل كائنات Account وContact وLead وOpportunity وCase وProduct في طياتها قدرات لا تتوفر مجاناً للكائنات المخصصة، مثل: عمليات البيع، التنبؤ (Forecasting)، الاستحقاقات (Entitlements)، القناة المتعددة (Omni-Channel)، تطبيقات الجوال، والتكامل المدمج مع منتجات أخرى في المنصة.
المنظمة التي تنشئ Customer__c بدلاً من Account تحصل في البداية على نموذج يبدو أنظف، لتكتشف لاحقاً أن كل ميزة جاهزة تتطلب بناءً مستقلاً. القاعدة هنا: الحيد عن المعيار يكون فقط لسبب يمكن صياغته في جملة واحدة.
متى يتطلب الأمر كائناً مخصصاً
| الحالة | هل هو كائن مخصص؟ | التعليل |
|---|---|---|
| عقد/اشتراك بدورة حياة خاصة به | نعم | حالات، تجديد، ملكية، وتقارير منفصلة |
| أصل مثبت لدى العميل | نعم (أو الأصل القياسي) | كيان مستقل بتاريخ خدمة خاص به |
| "عميل محتمل" إضافي | لا | هذا هو Lead أو Account بنوع سجل (Record Type) |
| قسم ضمن المنظمة | لا | معلومة عن المستخدم، وليست كياناً مستقلاً |
| بنود تسعير معقدة | يعتمد على الحالة | يجب مراجعة Quote Line أو CPQ قبل البناء |
التطبيع مقابل التسوية: القرار الذي يؤثر على التقارير
في قواعد البيانات التقليدية، يعتبر التطبيع ميزة. في Salesforce، يُبادَل التطبيع براحة التقارير: كل مستوى علاقة إضافي يصعب بناء التقرير بدون أداة خارجية، لأن التقارير القياسية محدودة في عمق العلاقات.
التسوية المقبولة هي التطبيع حيث تتغير البيانات وتتكرر، والتسوية المتحكم بها لحقول الاستعلام الشائعة إلى الكائن الذي يتم إعداد التقارير منه – شريطة أن تتم إدارة التكرار تلقائياً وليس يدوياً. الحقل المكرر الذي يتم تحديثه يدوياً يصبح معلومة خاطئة في غضون أشهر.
الصلاحيات جزء من النموذج وليست خطوة لاحقة
يجب طرح السؤال "من يرى ماذا" أثناء تصميم الكائنات. النموذج الذي يضع بيانات حساسة على نفس الكائن الذي يحوي بيانات تشغيلية يجبر على استخدام حلول غير مباشرة لاحقاً، مثل كائن وهمي (Shadow Object)، أو حقول مشفرة، أو فتح رؤية واسعة جداً.
الاختبار العملي: لكل كائن جديد، تُكتب جملة واحدة تحدد: من المالك، من يمكنه القراءة، من يمكنه التعديل، وماذا يحدث في التسلسل الهرمي. إذا تطلبت الإجابة أكثر من أربعة أسطر، فمن المحتمل أن الهيكل يخلط بين كيانين.
توسيع حول موضوع مصادر المعلومات وصلاحية التحديث موجود في المصدر الوحيد للحقيقة في المنظمة، وحول إدارة الكيانات الأساسية في Master Data Management.
سيناريو: شركة برمجيات بنت نموذجها حول الأقسام
بنت شركة SaaS متوسطة الحجم نموذجاً بأربعة كائنات مخصصة - واحدة لكل فريق مبيعات - لأن كل فريق كان لديه عملية مختلفة. بعد عام ونصف، تم دمج الفرق، مما تطلب لاحقاً: دمج التقارير، وأتمتة متوازية في أربعة أماكن، وترحيل داخلي لـ 60 ألف سجل بين الكائنات.
أعيد البناء بالاعتماد على كائن Opportunity واحد مع أنواع سجلات (Record Types) للعمليات المختلفة. تم الحفاظ على نفس التمييز التجاري – مسارات مبيعات مختلفة، حقول مختلفة، تخطيطات صفحات (Page Layouts) مختلفة – ولكن على مستوى التكوين وليس على مستوى الهيكل. سيتطلب التغيير التنظيمي التالي تعديل نوع السجل، وليس ترحيل البيانات.
القاعدة التي نتجت عن ذلك: الهيكل يمثل الكيانات؛ والتكوين يمثل المنظمة. ما يُتوقع أن يتغير كل سنتين لا ينبغي أن يكون ضمن الهيكل.
الأداء والحجم - ما يهم حقاً
تنشأ مشاكل الأداء في نماذج البيانات بشكل أساسي من ثلاثة مصادر: انحراف البيانات (Data Skew)، أي وجود سجل أب واحد يحتوي على عشرات الآلاف من السجلات الفرعية (مثلاً، حساب "العملاء الأفراد")؛ الصيغ المتداخلة التي تُحسَب في الوقت الفعلي عبر العلاقات؛ والمشاركة المستندة إلى Apex Sharing التي تُنشأ بكميات كبيرة. يمكن اكتشاف كل هذه المشاكل في مرحلة التخطيط إذا تم تقدير عدد السجلات المتوقعة تحت كل كيان أب.
المخاطر الشائعة والإجراءات الوقائية
| المخاطر | كيف تبدو في الممارسة العملية | الإجراء الوقائي |
|---|---|---|
| كائن مخصص غير ضروري | إعادة بناء القدرات الجاهزة يدوياً | فحص الكائنات القياسية قبل أي كائن جديد |
| علاقة رئيس-تفصيل (Master-Detail) مبكرة | حذف تسلسلي وهيكل لا يمكن تغييره | البدء بعلاقة بحث (Lookup) إذا لم يكن هناك حاجة لـ Roll-Up |
| نموذج يعكس الهيكل التنظيمي | كل تغيير تنظيمي يصبح عملية ترحيل | استخدام أنواع السجلات (Record Types) بدلاً من الكائنات |
| انحراف البيانات (Data Skew) | تأخيرات في التحديثات الجماعية والإغلاقات | توزيع كيانات الأب، تقدير الحجم عند التخطيط |
| الصلاحيات كتفكير لاحق | حلول غير مباشرة ورؤية واسعة جداً | مصفوفة وصول لكل كائن في مرحلة التخطيط |
كيف نقيس النجاح
| المجال | ما الذي يتم قياسه | وتيرة الفحص |
|---|---|---|
| استخدام الحقول | معدل تعبئة كل حقل | ربع سنوي |
| التقارير | نسبة التقارير التي تتطلب دمجاً يدوياً | ربع سنوي |
| استقرار الهيكل | عدد تغييرات الهيكل في النصف | نصف سنوي |
| الأداء | أوقات التحديث الجماعي والإغلاقات | شهري |
يتم تصميم نموذج البيانات كجزء من هيكل معماري شامل ضمن خدمة التكامل والبيانات.
قائمة التحقق قبل تثبيت النموذج
- ☐ لكل كائن مخصص يوجد تعليل في جملة واحدة.
- ☐ تم فحص الكائنات القياسية البديلة لكل كيان.
- ☐ تم اختيار نوع العلاقة صراحة مع تعليل لـ Master-Detail.
- ☐ تم تقدير الحجم المتوقع لكل كائن أب (تحقق من Skew).
- ☐ مصفوفة الوصول: المالك، القارئ، المعدِّل، التسلسل الهرمي.
- ☐ تم التحقق من إمكانية بناء جميع التقارير الرئيسية ضمن النموذج.
- ☐ يتم تحديث الحقول المكررة تلقائياً فقط.
- ☐ يتم التعامل مع التغييرات التنظيمية المتوقعة ضمن التكوين.
- ☐ يوجد ERD محدث وموثق.
- ☐ تم تحديد من يوافق على تغيير الهيكل مستقبلاً.
مصادر احترافية
- Salesforce Data 360 — https://www.salesforce.com/data/
- Salesforce Data 360 Architecture — https://architect.salesforce.com/docs/architect/fundamentals/guide/data-360-architecture.html
- HPI Pro – التكامل والبيانات — https://hpi.pro/integrations-data
