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

ارسم العلاقات

متاح أيضًا بـ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 card model of a region from above: one distribution center joined by red threads to many small stores, and a second center with its own.
صورة مولّدة بالذكاء الاصطناعي

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

السؤال الذي تجيب عنه هذه الوحدة: كيف أحوّل الكيانات المرشّحة إلى نموذج بيانات مفاهيمي؟

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

ما زلت لا أريد الحديث عن Salesforce. لست أسأل هل ينبغي أن تكون هذه علاقة بحث (lookup) أم علاقة رئيسي-تفصيلي (master-detail)، ولا أفكر في كائنات الربط في Salesforce (Salesforce Junction Objects)، ولا أقرر ما يحدث عند حذف سجل أب. أحاول أن أفهم علاقة العمل.

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

هذه ليست أسئلة عن Salesforce. إنها أسئلة عن العمل، وإجاباتها قد تغيّر النموذج تمامًا.

قبل أن نتعمق أكثر، أريد أن أعطيك اللغة التي سنستخدمها في كل مخطط من الآن فصاعدًا. إنها لغة صغيرة. الخط بين مربعين يقول إن الشيئين مرتبطان، والعلامات على طرفيه تقول كم.

ابدأ بخط بسيط، بلا أي علامات. من هنا أبدأ على السبورة: أعرف أن هذين الاسمين مرتبطان، لكنني لم أسأل كيف بعد. ثم تحصل الأطراف على علامات. الشَّرطة الواحدة العرضية على الخط تعني واحدًا. وقدم الغراب (crow’s foot)، الطرف الذي ينقسم إلى ثلاثة مثل قدم الطائر، تعني كثيرًا. لاحقًا في هذه الوحدة سترى علامة ثانية تظهر بجوار الأولى، شَرطة أو دائرة، وتلك تجيب عن سؤال مختلف: هل يمكن ألّا يوجد شيء؟

القاعدة الوحيدة التي عليك تذكّرها: تقرأ كل علامة عند المربع الذي تلامسه. العلامة الأقرب إلى المربع هي الحد الأقصى؛ والعلامة التالية بعدها هي الحد الأدنى.

قراءة الخطوط مفتاح لغة المخططات في الدورة. الخط البسيط بلا علامات يعني أن شيئين مرتبطان، لكن العدد لم يُحسم بعد. الشَّرطة الواحدة عند الطرف تعني واحدًا؛ وقدم الغراب تعني كثيرًا. ومع علامة ثانية للاختيارية: شَرطتان تعنيان واحدًا بالضبط؛ ودائرة وشَرطة تعنيان صفرًا أو واحدًا؛ وشَرطة وقدم غراب تعنيان واحدًا أو أكثر؛ ودائرة وقدم غراب تعنيان صفرًا أو أكثر. تُقرأ كل علامة عند المربع الذي تلامسه. البداية: خط بسيط خط بسيط هذان مرتبطان؛ لم يُحسم العدد بعد ثم: واحد أو كثير واحد شَرطة واحدة (العارضة): واحد من المربع الذي تلامسه كثير قدم الغراب: كثير من المربع الذي تلامسه ثم: هل يمكن أن يكون صفرًا؟ واحد بالضبط شَرطتان: واحد على الأقل، وواحد على الأكثر صفر أو واحد دائرة ثم شَرطة: قد لا يوجد بعد واحد أو أكثر شَرطة ثم قدم الغراب: واحد على الأقل صفر أو أكثر دائرة ثم قدم الغراب: لا شيء مقبول اقرأ كل طرف عند المربع الذي يلامسه: العلامة الأقرب إلى المربع هي الحد الأقصى؛ والعلامة التالية هي الحد الأدنى. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

قبل Steve Trucking، لنعد إلى الكلاب من الوحدة 1. كان لدينا خمسة مربعات: المالك، والمربّي، والكلب، والسلالة، والحيلة. والآن أسأل عن الخطوط بينها.

واحد أم كثير؟ يمكن أن يملك المالك أكثر من كلب؛ لدى Ana كلبان. وللكلب مالك واحد، في نموذجنا على الأقل. هذه علاقة واحد-إلى-كثير: شَرطة عند المالك، وقدم غراب عند الكلب. والمربّي بالشكل نفسه: مربٍّ واحد يربّي كلابًا كثيرة.

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

كثير إلى كثير؟ الكلب يعرف حيلًا كثيرة، والحيلة، «اجلس» مثلًا، تعرفها كلاب كثيرة. هذه علاقة كثير-إلى-كثير، وهنا بالضبط أبحث عن مفهوم مخفي. هل هناك شيء يخص معرفة هذا الكلب لهذه الحيلة؟ مدى إتقانها لها، ومتى تعلّمتها. للعلاقة حقائقها الخاصة، فتصبح شيئًا قائمًا بذاته: حيلة الكلب (Dog Trick)، واسم الكلب أولًا في الاسم الإنجليزي، لأن الكلب هو الذي يقودها.

ماذا يعني كل خط؟ المالك يملك الكلب. المربّي يربّيه. الكلب يعرف حيله. سمِّ الخطوط، وسيستطيع أي أحد أن يقرأ لك النموذج.

الآن، أم عبر الزمن؟ هل يهتم أحد بمدى إتقان Bella لحيلة «اجلس» اليوم، أم بكيف وصلت إلى ذلك؟ إذا كان مدرّب يختبرها كل بضعة أشهر، فكل اختبار سجل قائم بذاته: تقييم الحيلة (Trick Assessment)، بالتاريخ ومستوى المهارة ومن أجرى الاختبار، تحت حيلة الكلب التي ينتمي إليها. حتى العلاقة التي أصبحت شيئًا يمكن أن يكون لها تاريخها الخاص.

السلالة أتركها غير مربوطة الآن. ما زالت سؤال الوحدة 1: مربع قائم بذاته أم كلمة مكتوبة على الكلب؟ والوحدة 4 تحسمه.

نموذج الكلب بعلاقاته سبعة مربعات. المالك يملك كلبًا واحدًا أو أكثر، ولكل كلب مالك واحد بالضبط. والمربّي يربّي كلبًا واحدًا أو أكثر، وللكلب صفر أو مربٍّ واحد. والكلب يعرف صفرًا أو أكثر من حيل الكلب، والحيلة تُعرف في صفر أو أكثر من حيل الكلب؛ وكل حيلة كلب هي كلب واحد وحيلة واحدة. وكل حيلة كلب تُقيَّم في صفر أو أكثر من تقييمات الحيلة. أما السلالة فقائمة وحدها، غير مربوطة بعد. يملك يربّي يعرف تُعرف في تُقيَّم في المالك المربّي الكلب السلالة حيلة الكلب الحيلة تقييم الحيلة واحد بالضبط صفر أو واحد واحد أو أكثر صفر أو أكثر © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

كل سؤال من هذه الأسئلة يعمل بالطريقة نفسها على عمل حقيقي. والآن لنطرحها على Steve Trucking.

من أول الأشياء التي أريد فهمها عن العلاقة هو التعددية (cardinality). هذا هو المصطلح في عالم قواعد البيانات؛ أما السؤال فأبسط بكثير: كم من هذه يمكن أن يرتبط بكم من تلك؟ على المستوى المفاهيمي هناك ثلاثة أنماط أساسية.

هذه خطوة مهمة في العملية: خذ اسمين مختلفين وافهم العلاقة بينهما. في معظم الحالات تكون واحد-إلى-كثير، أو كثير-إلى-واحد. ولن تصادف علاقة واحد-إلى-واحد إلا في ظروف نادرة.

علاقة واحد-إلى-كثير موجودة في كل مكان. شريك تجزئة واحد لديه مراكز توزيع كثيرة. بيان شحنة واحد يسرد توصيلات كثيرة. مسار واحد فيه نحو عشر محطات. عندما أسمع لغة كهذه، أبدأ في رسم الخط.

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

الرابط الأساسي: واحد إلى كثير زوجان من المربعات، كل زوج مربوط بخط بترميز قدم الغراب الأساسي. شريك تجزئة واحد يُشغّل مراكز توزيع كثيرة: شَرطة واحدة عند طرف شريك التجزئة، وقدم غراب عند طرف مركز التوزيع. وبيان شحنة واحد يسرد توصيلات كثيرة، بالعلامات نفسها. وكل طرف عليه تعليق بالكلمات. شريك التجزئة واحد عدة مراكز توزيع يُشغّل بيان الشحنة واحد عدة توصيلات يسرد شريك التجزئة مركز التوزيع بيان الشحنة التوصيلة الشَّرطة الواحدة تعني واحدًا. وقدم الغراب تعني كثيرًا. اقرأ كل طرف من المربع الذي يلامسه. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

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

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

هذه عادة مهمة في النمذجة. أحيانًا لا يكون الشيء الأكثر إثارة للاهتمام أحد الأسماء التي سمعناها في البداية. بل يختبئ في العلاقة بين اسمين.

العلاقات يمكن أن تصبح أشياء

Section titled “العلاقات يمكن أن تصبح أشياء ”

هذا أحد المواضع التي أريد فيها أن يبدأ مسؤولو الأنظمة (admins) في التفكير بشكل مختلف. في Salesforce اعتدنا الحديث عن الكائنات والحقول، فمن السهل أن نعامل المربعات على أنها الجزء المهم، والخطوط على أنها مجرد أنابيب توصيل. لكن العلاقة نفسها يمكن أن يكون لها معنى في العمل.

فكّر في التوصيلة والمنتجات التي عليها. يمكن أن تحمل التوصيلة عدة منتجات، غسالة ومجففًا مثلًا. والمنتج، طراز الثلاجة نفسه، يظهر في آلاف التوصيلات. هذا سهل بما يكفي. لكن ماذا لو احتجت إلى معرفة كم قطعة من ذلك المنتج على هذه التوصيلة، أو هل سيُركَّب، أو هل سيُنقل القديم بعيدًا؟ لم أعد مهتمًا فقط بعلاقة بين التوصيلة والمنتج. بل أنا مهتم بـبند التوصيلة (Delivery Item)، وهذا المفهوم يستحق كيانًا خاصًا به.

إذا كنت قادمًا من عالم Salesforce، فربما تفكر بالفعل: «هذا كائن ربط (junction object).» لست مخطئًا. لكنني لا أريد أن أبدأ من هناك. بند التوصيلة مفهوم عمل قبل أن يكون كائن الربط في Salesforce (Salesforce Junction Object). العمل أولًا، والتنفيذ ثانيًا.

بعض عاداتي مع كيانات العلاقات هذه، أينما انتهى بها الأمر عند البناء.

سمِّه. إذا كان لدى العمل كلمة له بالفعل، فاستخدم كلمتهم. وإن لم تكن، فخذ اسمَي الأبوين واجمعهما. فكّر في طلب ومنتج. الشيء الذي بينهما هو بند الطلب (Order Item): الطلب، والبند الذي في الطلب. إنه ابن لكلا الأبوين، وفي Salesforce قد ينتهي به الأمر كائنَ ربط في Salesforce (Salesforce Junction Object). لكن أي اسم يأتي أولًا: Item Order أم Order Item؟ انظر إلى نوع البيانات في كل أب. المنتج بيانات مرجعية؛ والطلب بيانات معاملات، والطلب هو الذي يقوده. لذلك هو Order Item، أو Order Product، كما أن لدى Salesforce منتج الفرصة (Opportunity Product). في Steve Trucking هو بند التوصيلة (Delivery Item). الاسم القائد يأتي أولًا، فيُرتَّب السجل بجوار مالكه في كل قائمة ستنظر إليها.

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

أبوان وابن واحد: امنحه مفتاحه الخاص أبوان وابن واحد. التوصيلة (معرّف السجل: معرّف التوصيلة؛ تاريخ التوصيل، الحالة) تحتوي على بنود توصيلة كثيرة. والمنتج (معرّف السجل: معرّف المنتج؛ الاسم، رقم الطراز) يظهر في بنود توصيلة كثيرة. يقع بند التوصيلة بينهما: له معرّف سجل خاص به، معرّف بند التوصيلة، ويحمل معرّف التوصيلة ومعرّف المنتج لأبويه، إضافة إلى الكمية. وتحتها ملاحظة: معرّف التوصيلة زائد معرّف المنتج قاعدة عن التفرّد، لا معرّف السجل. بيانات المعاملات البيانات المرجعية تحتوي على يظهر في التوصيلة معرّف التوصيلة معرّف السجل تاريخ التوصيل الحالة بند التوصيلة معرّف بند التوصيلة معرّف السجل معرّف التوصيلة معرّف المنتج الكمية المنتج معرّف المنتج معرّف السجل الاسم رقم الطراز معرّف التوصيلة + معرّف المنتج: قاعدة عن التفرّد، لا معرّف السجل. واحد متعدد © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

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

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

للعلاقات معنى يتجاوز التعددية

Section titled “للعلاقات معنى يتجاوز التعددية ”

«واحد-إلى-كثير» لا تكفي لفهم علاقة. أريد أيضًا أن أعرف ماذا تعني العلاقة.

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

الخطوط تحتاج إلى أسماء لوحتان، في كل منهما مربع الموقع فوق مربع التوصيلة، يربط بينهما خطان، وكل خط معلَّم بموقع واحد إلى توصيلات كثيرة. في اللوحة اليسرى، «خطوط بلا أسماء»، الخطان بلا تسميات ويبدوان متطابقين. وفي اللوحة اليمنى، «خطوط مسمّاة»، أحد الخطين مسمّى «تنطلق من» والآخر «تُوصَّل إلى». المربعات نفسها والتعددية نفسها: الأسماء وحدها تخبرك أي خط هو أي خط. خطوط بلا أسماء خطوط مسمّاة تنطلق من تُوصَّل إلى الموقع التوصيلة الموقع التوصيلة المربعات نفسها، والتعددية نفسها. الأسماء وحدها تخبرك أي خط هو أي خط. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

هناك سؤال آخر يختبئ داخل «كم؟»: هل العلاقة إلزامية؟ هل يمكن أن توجد التوصيلة قبل أن توضع على مسار؟ لا بد من ذلك: بيان الشحنة يصل قبل التوصيل بيوم أو يومين، والمسارات تُعتمد في المساء السابق. هل يمكن أن توجد التوصيلة دون شريك تجزئة؟ لا؛ كل توصيلة تأتي من بيان شحنة لشريك. هذه هي الاختيارية (optionality).

مرة أخرى، لا تقفز مباشرة إلى خانة Required (إلزامي) في Salesforce. هناك فرق بين أن تقول «يجب أن يكون لكل توصيلة شريك تجزئة» وأن تقول «ينبغي أن يجعل Salesforce حقل شريك التجزئة إلزاميًا عند إنشاء السجل». قد ينتهيان إلى التنفيذ نفسه، لكنهما ليسا العبارة نفسها. الأولى قاعدة عمل؛ والثانية طريقة واحدة لفرضها. وبوصفنا معماريين، نريد أن نفهم الأولى قبل أن نقرر الثانية.

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

قراءة العلامتين على كل طرف ثلاثة مربعات في صف: بيان الشحنة، والتوصيلة، والمحطة. بيان الشحنة يسرد توصيلة واحدة أو أكثر، وكل توصيلة على بيان شحنة واحد بالضبط: شَرطتان عند طرف بيان الشحنة، وقدم غراب وشَرطة عند طرف التوصيلة. والمحطة تُنزل صفرًا أو أكثر من التوصيلات، وكل توصيلة عند صفر أو محطة واحدة: دائرة وقدم غراب عند طرف التوصيلة، ودائرة وشَرطة عند طرف المحطة. الأقرب إلى المربع هو الحد الأقصى؛ والعلامة التالية هي الحد الأدنى. بيان الشحنة واحد بالضبط واحد أو أكثر من توصيلات يسرد صفر أو المحطة واحد صفر أو أكثر من توصيلات تُنزل بيان الشحنة التوصيلة المحطة الأقرب إلى المربع: الحد الأقصى (واحد أو كثير). العلامة التالية: الحد الأدنى (الشَّرطة تعني واحدًا على الأقل، والدائرة تعني صفرًا). © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

هذا سؤال أطرحه كثيرًا: هل تقصد الآن، أم تقصد عبر الزمن؟

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

تكليف الطاقم: أي طاقم لديه أي شاحنة أبوان وابن واحد. الطاقم (معرّف السجل: معرّف الطاقم؛ الاسم، الحالة) يعمل في تكليفات طاقم كثيرة. والشاحنة (معرّف السجل: معرّف الشاحنة، وتُعرف أيضًا برقم الوحدة؛ الشركة المصنّعة، الطراز، الحالة) تُستخدم في تكليفات طاقم كثيرة. لكل تكليف طاقم معرّف سجل خاص به، ويحمل معرّف الطاقم ومعرّف الشاحنة، ولا تواريخ. وتحتها ملاحظة: أي طاقم لديه أي شاحنة، لكن لا منذ متى. يعمل في تُستخدم في الطاقم معرّف الطاقم معرّف السجل الاسم الحالة تكليف الطاقم معرّف تكليف الطاقم معرّف السجل معرّف الطاقم معرّف الشاحنة الشاحنة معرّف الشاحنة معرّف السجل رقم الوحدة يُعرف أيضًا بـ الشركة المصنّعة الطراز الحالة أي طاقم لديه أي شاحنة، لكن لا منذ متى. واحد متعدد © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

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

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

تكليف الطاقم عبر الزمن: تواريخ وعلامة نشط أبوان وابن واحد، مع تواريخ. الطاقم (معرّف السجل: معرّف الطاقم؛ الاسم، الحالة) يعمل في تكليفات طاقم كثيرة. والشاحنة (معرّف السجل: معرّف الشاحنة، وتُعرف أيضًا برقم الوحدة؛ الشركة المصنّعة، الطراز، الحالة) تُستخدم في تكليفات طاقم كثيرة. لكل تكليف طاقم معرّف سجل خاص به، ويحمل معرّف الطاقم ومعرّف الشاحنة، وتاريخ بداية، وتاريخ نهاية، وعلامة نشط (Active). وتحتها ملاحظة: كل تغيير يُنهي تكليفًا ويبدأ التالي، ونشط يحدد التكليف الحالي. يعمل في تُستخدم في الطاقم معرّف الطاقم معرّف السجل الاسم الحالة تكليف الطاقم معرّف تكليف الطاقم معرّف السجل معرّف الطاقم معرّف الشاحنة تاريخ البداية تاريخ النهاية نشط (Active) الشاحنة معرّف الشاحنة معرّف السجل رقم الوحدة يُعرف أيضًا بـ الشركة المصنّعة الطراز الحالة كل تغيير يُنهي تكليفًا ويبدأ التالي. ونشط (Active) يحدد التكليف الحالي. واحد متعدد © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

لذلك عندما يخبرني أحدهم عن علاقة، لا أسأل فقط كيف ترتبط الأشياء. بل أسأل: هل تتغيّر تلك العلاقة، وهل يهمنا تاريخها؟

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

النموذج المفاهيمي بعد الوحدتين 1 و2 النموذج المفاهيمي لـ Steve Trucking، مجمّعًا بوصفه بيانات عملاء وبيانات معاملات وبيانات مرجعية. شريك التجزئة يرسل بيانات شحنة تسرد التوصيلات، ويُشغّل مراكز توزيع. كل توصيلة تنطلق من مركز توزيع، وتذهب إلى مستلم، وتحتوي على بنود توصيلة. وللمسارات محطات تُنزل التوصيلات. وتكليف الطاقم يربط طاقمًا وشاحنة بمسار، فيحفظ النموذج من قاد أي شاحنة، ومتى. بيانات العملاء بيانات المعاملات البيانات المرجعية يُشغّل يرسل يسرد تحتوي على تنطلق من تُوصَّل إلى يضم تُنزل يُشغّل يعمل في تُستخدم في شريك التجزئة بائع التجزئة الذي نوصّل له المستلم من يستلمها بيان الشحنة قائمة توصيلات الشريك التوصيلة طلب واحد لمستلم واحد بند التوصيلة ما على الشاحنة المسار محطات يوم عمل واحد المحطة عنوان واحد على المسار تكليف الطاقم من قاد أي شاحنة، ومتى مركز التوزيع من هنا تنطلق التوصيلات الطاقم شخصان الشاحنة المركبة واحد بالضبط صفر أو واحد واحد أو أكثر صفر أو أكثر © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

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

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

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

عندما أعمل على العلاقات في نموذج مفاهيمي، فأنا أقرر:

  • كيف ترتبط كيانات العمل الرئيسية ببعضها.
  • هل كل علاقة واحد-إلى-واحد أم واحد-إلى-كثير أم كثير-إلى-كثير، الآن وعبر الزمن.
  • هل كل علاقة إلزامية أم اختيارية.
  • هل تخفي علاقة كثير-إلى-كثير مفهوم عمل ذا معنى.
  • هل تتغيّر العلاقة عبر الزمن، وهل نحتاج إلى تاريخها.

علاقة البحث أم رئيسي-تفصيلي، وإعداد كائن الربط، وسلوك الحذف المتتالي، والمشاركة: كلها قرارات مادية؛ وسنصل إليها. أما الآن فما زلنا نجيب عن السؤال الأهم: كيف يسير هذا العمل فعلًا؟ وبمجرد أن نفهم الكيانات والعلاقات بينها، يمكننا أن نبدأ في إضافة التفاصيل التي تصفها. عندها يبدأ نموذجنا المفاهيمي في أن يصبح نموذج بيانات منطقيًا.