تخطَّ إلى المحتوى

حوّل النموذج إلى Salesforce

متاح أيضًا بـ28 لغة

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A white card model rising from the plan it was drawn on, built from repeated standard window pieces with one curved wooden wall, the rest of the plan still bare.
صورة مولّدة بالذكاء الاصطناعي

الوحدة 6 من 6 في فصل نمذجة البيانات من أجل المعنى، الفصل 2 من دورة Data Architect. كل وحدة قائمة بذاتها. السابق: صمّم حتى الشكل الطبيعي الثالث، ثم تراجع · التالي: دليل دراسة الفصل، ثم الفصل التالي: معمارية بيانات Salesforce

السؤال الذي تجيب عنه هذه الوحدة: كيف يصبح نموذج البيانات المنطقي نموذج بيانات ماديًا في Salesforce؟

أخيرًا سنتحدث عن Salesforce. إذا كنت تقاوم الرغبة في تحويل كل مربع إلى كائن، فالآن تستطيع. لكن لاحظ الترتيب الذي جئنا به: فهمنا العمل، ووصفنا البيانات، ووضعنا كل حقيقة حيث تنتمي، وقررنا أين سنحيد عن ذلك عن قصد. الآن فقط أسأل كيف ينبغي أن ينفّذه Salesforce. هذا هو التدرّج الذي أريدك أن تتذكره: مفاهيمي ← منطقي ← مادي. النموذج المفاهيمي يصف العمل. والنموذج المنطقي يصف البيانات. والنموذج المادي يصف كيف سنبنيه فعلًا.

الخطوة المادية أسهل رؤيةً على شيء صغير، لذلك تأتي الحيوانات الأليفة أولًا.

من هم الشركات والأشخاص؟ المربّي شركة، لذلك يصبح حسابًا (Account) بنوع سجل Breeder (مربٍّ). والمالك حساب أيضًا، أو حساب شخصي، بنوع سجل Owner (مالك). نوعان من الكائن القياسي نفسه، جنبًا إلى جنب في أعلى المخطط، حيث كانا تمامًا منذ الوحدة 1.

ما الذي ليس له مكان قياسي؟ الحيوان الأليف، والسلالة، والحيلة، وحيلة الحيوان الأليف، وتقييم الحيلة تصبح كائنات مخصصة. وهل تتذكر النوع الذي نسخناه إلى الحيوان الأليف في الوحدة 5؟ هنا يحصل على وظيفته: يصبح نوع السجل للحيوان الأليف، Dog (كلب) أو Cat (قط). كائن واحد بنوعَي سجل، لكلٍّ منهما تخطيط صفحته وقيم قوائم اختياره، بدلًا من كائن للكلب وكائن للقط.

أي العلاقات رئيسي-تفصيلي؟ أستخدم علاقة رئيسي-تفصيلي فقط حيث لن يُنقل الابن أبدًا إلى أب آخر. حيلة الحيوان الأليف تنتمي إلى حيوانها الأليف مدى الحياة، وكل تقييم حيلة ينتمي إلى حيلة الحيوان الأليف الخاصة به، لذلك كلتاهما علاقة رئيسي-تفصيلي. وهذا يؤتي ثماره فورًا: علاقة رئيسي-تفصيلي هي ما يتيح للحيوان الأليف أن يحتفظ بـحقل ملخص تجميعي (roll-up summary) لحيل الحيوان الأليف، فيبقى عدد الحيل المتقنة من الوحدة 5 متوافقًا من تلقاء نفسه. لكن الحيوانات الأليفة تنتقل من بيت إلى آخر، لذلك المالك علاقة بحث.

أيها علاقات بحث؟ لا يوصي Salesforce بأكثر من 10,000 ابن لأب واحد. حيلة شائعة مثل «اجلس»، أو سلالة منتشرة، أو مربٍّ كبير، قد تتجاوز ذلك بسهولة، لذلك تشير حيلة الحيوان الأليف إلى حيلتها بعلاقة بحث، ويشير الحيوان الأليف إلى سلالته ومربّيه بالطريقة نفسها. وتجنّب العلاقات متعددة الأشكال (polymorphic) حيثما استطعت، أي النوع الذي يمكن فيه لحقل واحد أن يشير إلى عدة أنواع من الكائنات. إنها مريحة في اليوم الأول وأصعب على كل ما يجب أن يقرأها لاحقًا: التقارير، وعمليات التكامل، والآن الوكلاء.

ما الذي يبقى خارج المنصة؟ إذا كان الحيوان الأليف يرتدي طوق GPS يُبلغ عن مكانه، فذلك الموقع لا يحتاج إلى أن يُنسخ إلى الداخل على الإطلاق. يمكن أن يكون كائنًا خارجيًا، يُقرأ مباشرة من نظام التتبع الخاص بالطوق.

نموذج الحيوان الأليف في Salesforce نموذج الحيوان الأليف بوصفه كائنات Salesforce. في الأعلى حسابان (Account): أحدهما بنوع السجل المالك، والآخر بنوع السجل المربّي. وتحتهما Pet__c، بنوعَي السجل كلب وقط، ورقم الشريحة بوصفه External ID، وعلاقات بحث (lookup) إلى المالك والمربّي وBreed__c، وTricks_Known__c حقل ملخص تجميعي (roll-up summary). وPet_Trick__c في علاقة رئيسي-تفصيلي (master-detail) مع Pet__c، وله علاقة بحث إلى Trick__c، مع مستوى المهارة وتاريخ التعلّم. وTrick_Assessment__c في علاقة رئيسي-تفصيلي مع Pet_Trick__c. ولـ Breed__c نوعه واسمه وحجمه؛ ولـ Trick__c اسمه وصعوبته. بحث بحث بحث رئيسي تفصيلي بحث رئيسي تفصيلي حساب (المالك) Id معرّف السجل نوع السجل: المالك الاسم الهاتف حساب (المربّي) Id معرّف السجل نوع السجل: المربّي الاسم Pet__c Id معرّف السجل أنواع السجل: كلب، قط Microchip_Number__c EXTERNAL ID Owner__c بحث Breeder__c بحث Breed__c بحث الاسم Birth_Date__c Tricks_Known__c ملخص تجميعي Breed__c Id معرّف السجل Species__c الاسم Size__c Pet_Trick__c Id معرّف السجل Pet__c رئيسي-تفصيلي Trick__c بحث Skill_Level__c Date_Learned__c Trick__c Id معرّف السجل الاسم Difficulty__c Trick_Assessment__c Id معرّف السجل Pet_Trick__c رئيسي-تفصيلي Date__c Skill_Level__c Assessed_By__c واحد بالضبط صفر أو واحد واحد أو أكثر صفر أو أكثر © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

كل قرار في ذلك المخطط يعود إلى شيء قررناه سابقًا، وهذا هو المقصود. والآن الخطوة نفسها لـ Steve Trucking.

يضم نموذج Steve Trucking المنطقي الآن شريك التجزئة، ومركز التوزيع، وبيان الشحنة، والتوصيلة، وبند التوصيلة، والمستلم، والمسار، والمحطة، والطاقم، والشاحنة، وتكليف الطاقم. هذه مفاهيم عمل، والآن أستطيع أن أبدأ في ربطها بـ Salesforce.

شريك التجزئة قد يكون حسابًا (Account). والتوصيلة قد تُربط بشيء يملكه Salesforce بالفعل للعمل المجدول في الميدان، أو قد تصبح كائنًا مخصصًا. وبيان الشحنة ليس له ما يناسبه من الكائنات القياسية، لذلك سيصبح على الأرجح مخصصًا. أما المستلم فسؤال صعب حقًا: حساب شخصي (Person Account)، أم جهة اتصال (Contact)، أم مجرد معلومات على التوصيلة؟ سنجيب عن ذلك كما ينبغي في الفصل التالي.

الكلمة المهمة ما زالت قد. لا تفترض التنفيذ لمجرد أن مفهوم عمل يبدو مثل كائن في Salesforce. لهذا بنينا النموذج المنطقي أولًا: إنه يمنحنا شيئًا نختبر تصميم Salesforce في ضوئه.

كيان العمل لا يعني تلقائيًا كائنًا مخصصًا

Section titled “كيان العمل لا يعني تلقائيًا كائنًا مخصصًا ”

هذا فخ أريد أن يتجنبه مسؤولو الأنظمة: «حدّدنا أحد عشر كيانًا، إذن نحتاج إلى أحد عشر كائنًا مخصصًا.» لا. الكيان المنطقي يخبرنا بأن مفهوم العمل مهم. لكنه لا يملي كيف يجب أن يخزّنه Salesforce. قد يصبح المفهوم كائنًا قياسيًا، أو كائنًا مخصصًا، أو علاقة بين كائنات، أو حقلًا أو بضعة حقول، أو قيمة تُدار في الإعدادات، أو بيانات تعيش خارج Salesforce تمامًا (صور التوصيل في Steve Trucking مرشّح جيد لذلك). النموذج المادي هو حيث تُتخذ تلك الخيارات، ولهذا بالضبط لم نتخذها في المكالمة الأولى.

السمات تصبح حقولًا مادية

Section titled “السمات تصبح حقولًا مادية ”

الانتقال نفسه يحدث مع السمات. للشاحنة المنطقية لدينا رقم وحدة، ورقم هيكل (VIN)، وشركة مصنّعة، وطراز، وسنة طراز، ولوحة ترخيص، وحالة. والآن نقرر كيف توجد ماديًا: أي كائن يملكها، وأي أنواع الحقول تستخدم، وأيها إلزامي، وأيها يجب أن يكون فريدًا، وأيها معرّفات خارجية، وأيها يحتاج إلى تحقق، وأيها يُشتق بدلًا من أن يُخزَّن، وأيها حساس. على المستوى المنطقي سألنا ماذا تعني الشاحنة. وعلى المستوى المادي نسأل كيف سيمثّل Salesforce الشاحنة. سؤالان مختلفان.

الشاحنة: من كيان منطقي إلى كائن Salesforce بطاقتان متقابلتان سطرًا بسطر. منطقي، الشاحنة، ما معنى الشاحنة: معرّف الشاحنة، ورقم الوحدة، وVIN، والشركة المصنّعة، والطراز، وسنة الطراز، ولوحة الترخيص، والحالة. مادي، Truck__c، كيف سيمثّلها Salesforce: Id، معرّف السجل في Salesforce؛ وName، نص يحمل رقم الوحدة؛ وVIN__c، نص من 17 حرفًا، فريد وExternal ID؛ وMake__c، قائمة اختيار؛ وModel__c، نص من 40؛ وModel_Year__c، رقم من أربعة أرقام؛ وLicense_Plate__c، نص من 10؛ وStatus__c، قائمة اختيار، إلزامي. وتحتها ملاحظة: المنطقي يسأل ما معنى الشاحنة؛ والمادي يسأل كيف سيمثّلها Salesforce. منطقي: الشاحنة ما معنى الشاحنة معرّف الشاحنة رقم الوحدة VIN الشركة المصنّعة الطراز سنة الطراز لوحة الترخيص الحالة مادي: Truck__c كيف سيمثّلها Salesforce Id: معرّف السجل في Salesforce Name: نص، رقم الوحدة VIN__c: نص(17)، فريد، External ID Make__c: قائمة اختيار Model__c: نص(40) Model_Year__c: رقم(4) License_Plate__c: نص(10) Status__c: قائمة اختيار، إلزامي المنطقي يسأل ما معنى الشاحنة. والمادي يسأل كيف سيمثّلها Salesforce. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

العلاقات تصبح قرارات على مستوى المنصة

Section titled “العلاقات تصبح قرارات على مستوى المنصة ”

كل الوقت الذي قضيناه على العلاقات يؤتي ثماره هنا. نعرف بالفعل هل كل علاقة واحد-إلى-واحد أم واحد-إلى-كثير أم كثير-إلى-كثير، إلزامية أم اختيارية، وهل يهم تاريخها. والآن نقرر كيف ينفّذها Salesforce: علاقة بحث، أو رئيسي-تفصيلي، أو كائن الربط في Salesforce (Salesforce Junction Object)، وربما كائن ربط بسمات خاصة به، لأنه، كما وجدنا، يمكن أن يكون للعلاقة نفسها معنى في العمل.

تذكّر تكليف الطاقم. كان يمكن أن نبدأ هذا الفصل بقول: «لننشئ كائن ربط في Salesforce بين الطاقم والشاحنة.» انظر إلى ما كنا سنتخطاه: لماذا توجد العلاقة، وهل تحتاج إلى تاريخ ومسار، وهل لها حالة، وهل تحتاج مطالبة بتعويض عن ضرر بعد أسابيع إلى تاريخها. أسئلة العمل هذه تخبرنا بما هو تكليف الطاقم. وعندها فقط ينبغي أن نقرر كيف يبنيه Salesforce، وهل لدى Salesforce بالفعل شيء يؤدي هذه الوظيفة.

والآن ارسم النموذج المادي

Section titled “والآن ارسم النموذج المادي ”

يتغيّر المخطط مرة أخرى. أظهر النموذج المفاهيمي مفاهيم العمل وخطوطًا بسيطة. وأضاف النموذج المنطقي السمات والمفاتيح والتعددية والكيانات المختبئة في العلاقات. والآن يبدأ النموذج المادي في أن يشبه Salesforce: كائنات قياسية، وكائنات مخصصة، وحقول، وأنواع علاقات، وما يعيش خارج المنصة.

العمل نفسه على ثلاثة مستويات ثلاث لوحات، الشريحة نفسها على ثلاثة مستويات. مفاهيمي، ما الموجود: شريك التجزئة، بائع التجزئة الذي نوصّل له، يرسل توصيلات، وكل توصيلة، طلب واحد لمستلم واحد، تحتوي على بنود توصيلة، كل بند منتج في توصيلة. منطقي، كيف تُبنى البيانات: الثلاثة أنفسهم بمعرّفات سجلات وبضعة حقول؛ والتوصيلة تُعرف أيضًا برقم طلب الشريك؛ وبند التوصيلة يحمل معرّف المنتج والكمية. مادي، كيف سيبنيه Salesforce: شريك التجزئة حساب (Account) قياسي بنوع سجل شريك التجزئة؛ والتوصيلة كائن مخصص، Delivery__c، برقم طلب الشريك بوصفه External ID وبعلاقة بحث (lookup) إلى الحساب؛ وبند التوصيلة كائن مخصص، Delivery_Item__c، في علاقة رئيسي-تفصيلي (master-detail) مع توصيلته، مع الكمية. وتحتها ملاحظة: العمل، ثم المفاهيمي، ثم المنطقي، ثم المادي؛ أشِر إلى أي شيء على اليمين وتتبّعه رجوعًا إلى اليسار. مفاهيمي: ما الموجود؟ منطقي: كيف تُبنى البيانات؟ مادي: كيف سيبنيه SALESFORCE؟ يرسل تحتوي على يرسل تحتوي على بحث رئيسي تفصيلي شريك التجزئة بائع التجزئة الذي نوصّل له التوصيلة طلب واحد لمستلم واحد بند التوصيلة منتج في توصيلة شريك التجزئة معرّف شريك التجزئة معرّف السجل الاسم الحالة التوصيلة معرّف التوصيلة معرّف السجل رقم طلب الشريك يُعرف أيضًا بـ تاريخ التوصيل الحالة بند التوصيلة معرّف بند التوصيلة معرّف السجل معرّف المنتج الكمية حساب (قياسي) Id معرّف السجل نوع السجل: شريك التجزئة الاسم Delivery__c Id معرّف السجل Partner_Order_Number__c EXTERNAL ID Retail_Partner__c بحث Delivery_Item__c Id معرّف السجل Delivery__c رئيسي-تفصيلي Quantity__c العمل ← المفاهيمي ← المنطقي ← المادي: أشِر إلى أي شيء على اليمين وتتبّعه رجوعًا إلى اليسار. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

أريدك أن تستطيع وضع تلك المخططات الثلاثة جنبًا إلى جنب وترى التدرّج: لا ثلاثة مخططات لا علاقة بينها، بل العمل نفسه على ثلاثة مستويات.

كلمة عن طريقتي في رسم هذه المخططات، لأن التخطيط جزء من الرسالة. أضع الكائن الأساسي في المنتصف، أسفل قليلًا. وإذا كانت له كائنات أب، أضعها أعلى قليلًا، فتقرأ النموذج من الأعلى إلى الأسفل، ومن اليسار إلى اليمين، بالطريقة التي يفكر بها العمل. والبيانات المرجعية تذهب إلى الجانب. وللون معنى أيضًا: أجعل Salesforce أزرق دائمًا، وأختار لونًا لأنظمة الشركة نفسها، عادةً الأخضر، لأن الأخضر لون لطيف وودود. لا أستخدم الأحمر، والأصفر قاسٍ بعض الشيء. عندما يُرتَّب النموذج هكذا، فإنه يغنّي لي. كثير من المخططات التي ستجدها هي في الحقيقة إدارة مساحات: كيف أركن كل سياراتي في مرآبي المزدحم؟ أفضّل أن أرسم صورة منطقية يستطيع العقل استيعابها.

النموذج المادي يجب أن يحترم المنصة

Section titled “النموذج المادي يجب أن يحترم المنصة ”

Salesforce ليس قاعدة بيانات علائقية عامة. لديه آراء في العلاقات والملكية والأمان والتقارير. لديه حدود، وسلوك استعلامات، وأتمتة، ومعمارية تؤثر في سلوك النموذج على نطاق واسع. لذلك قد يحتاج نموذج منطقي يبدو مثاليًا على السبورة إلى التغيير عندما يصبح ماديًا. هذا ليس Salesforce يعترض الطريق. بل يعني أن للمنصة شكلًا، والمعماريون الجيدون يفهمون ذلك الشكل. والفصل التالي يدور حول ذلك بالضبط.

وأحيانًا أيضًا سيختلف النموذج المادي عن قصد عن النموذج المنطقي النظيف بسبب قرارات إلغاء التطبيع التي اتخذناها في الوحدة 5. لا بأس بذلك، ما دمنا نستطيع أن نشرح السبب.

هناك عادة أريدك أن تتخلص منها إن كانت لديك: أن تبدأ معمارية بياناتك من Setup → Object Manager → New Custom Object وتكتشف النموذج وأنت تمضي. يجعل Salesforce إنشاء الأشياء سهلًا بشكل لا يُصدَّق؛ وهذه إحدى نقاط قوته، وأحد أسباب ظهور نماذج البيانات الضعيفة بهذه السرعة. بضع نقرات ولديك كائن، وبضع نقرات أخرى ولديك حقول وعلاقة. ثم تصل البيانات، وتُبنى عمليات Flow، وتُنشأ التقارير، وتعتمد عليه عمليات التكامل، ويصبح الكائن الذي أنشأته في خمس دقائق مكلفًا جدًا في تغييره. إنه اختبار قابلية التراجع من الفصل 1. لذلك قبل أن تنقر New Custom Object، ارسم النموذج.

هناك سبب آخر لإبقائي النماذج الثلاثة منفصلة: التقنية تتغيّر. اليوم تعيش بعض بيانات Steve Trucking على نواة Salesforce. وغدًا قد يعيش جزء منها في Data 360، أو في مستودع بيانات، أو في نظام لم نختره بعد، ويحتاج مساعد الذكاء الاصطناعي إلى تمثيله الخاص. يمكن أن تتغيّر المعمارية المادية، بينما تبقى مفاهيم العمل مستقرة بشكل لافت: شركاء التجزئة والتوصيلات والمستلمون ما زالوا موجودين. وهذا ما يجعل النموذج المنطقي قيّمًا. إنه وصف متين للعمل غير مرتبط بتنفيذ اليوم.

ما الذي يقرره المعماري هنا

Section titled “ما الذي يقرره المعماري هنا ”

عندما أحوّل نموذجًا منطقيًا إلى نموذج Salesforce مادي، فأنا أقرر:

  • أي كيانات العمل تُربط بقدرات Salesforce القياسية، وأيها يحتاج إلى كائنات مخصصة أو تمثيل آخر.
  • كيف تصبح السمات المنطقية حقولًا مادية، وكيف تُنفَّذ العلاقات على المنصة.
  • أين ينتمي إلغاء التطبيع المقصود في التصميم المادي.
  • أي البيانات تنتمي إلى Salesforce، وأيها ينتمي إلى مكان آخر.
  • أي خصائص المنصة تتطلب أن يختلف النموذج المادي عن المنطقي.

والأهم من ذلك، أريد أن أستطيع تتبّع كل قرار إلى الوراء. إذا أشرت إلى شيء في نموذجي المادي وسألت: «لماذا هذا هنا؟»، فينبغي أن أستطيع أن أعود بك عبر النموذج المنطقي والنموذج المفاهيمي إلى شيء يحتاجه العمل فعلًا: العمل ← المفاهيمي ← المنطقي ← المادي.

ما بعد الاختبار: ما الذي يغيّره الذكاء الاصطناعي. يستطيع الذكاء الاصطناعي الآن أن يأخذ وثيقة متطلبات حتى كائنات Salesforce وحقوله في قفزة واحدة. وهذا يجعل التسلسل أكثر أهمية، لا أقل: إذا قفز من المتطلبات إلى الإعدادات، فاطلب منه أن يُظهر ما حدث بينهما: ما الذي قرر أنه كيان، وأي المفاتيح اختار، وأي العلاقات افترض، وأين ألغى التطبيع. هذه قرارات معمارية، والمعماري ما زال بحاجة إلى رؤيتها.

بدأنا هذا الفصل في مكالمة أولى، ننصت إلى الأسماء، وننهيه بنموذج مادي نستطيع تتبّعه إلى العمل. والآن بعد أن اخترنا البناء على Salesforce، يذهب السؤال التالي أعمق: على أي نوع من منصات البيانات نبني فعلًا؟

  • Designing Record Access for Enterprise Scale: Parent-Child Data Skew (opens in a new tab)، Salesforce Developers، Winter ‘27 (بالإنجليزية، تم التحقق في 2026-10-02): «اضبط علاقات الأب-الابن بحيث لا يزيد عدد الأبناء على 10,000 لسجل أب واحد.» إرشاد بشأن data skew (انحراف البيانات)، لا حدّ صارم؛ والفصل 7 يتعمق أكثر.
  • Roll-Up Summary Field (opens in a new tab)، Salesforce Help (بالإنجليزية، تم التحقق في 2026-10-12): حقل الملخص التجميعي يعدّ سجلات التفاصيل أو يجمعها عبر علاقة رئيسي-تفصيلي.