דלגו לתוכן

הפכו את המודל ל-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 בפרק מידול נתונים למען המשמעות, הפרק השני בקורס Data Architect. כל יחידה עומדת בפני עצמה. הקודם: תכננו לצורה הנורמלית השלישית, ואז קחו צעד אחורה · הבא: מדריך הלימוד של הפרק, ואחריו הפרק הבא: ארכיטקטורת הנתונים של Salesforce

השאלה שהיחידה הזו עונה עליה: איך מודל נתונים לוגי הופך למודל נתונים פיזי ב-Salesforce?

סוף סוף אנחנו הולכים לדבר על Salesforce. אם התאפקתם ולא הפכתם כל קופסה לאובייקט, עכשיו מותר. אבל שימו לב לסדר שבו הגענו: הבנו את העסק, תיארנו את הנתונים, שמנו כל עובדה במקום שבו היא שייכת, והחלטנו איפה נכופף את זה בכוונה. רק עכשיו אני שואל איך Salesforce צריכה לממש את זה. זו ההתקדמות שאני רוצה שתזכרו: מושגי ← לוגי ← פיזי. המודל המושגי מתאר את העסק. המודל הלוגי מתאר את הנתונים. המודל הפיזי מתאר איך אנחנו באמת הולכים לבנות את זה.

את השלב הפיזי הכי קל לראות על משהו קטן, אז חיות המחמד הולכות ראשונות.

מי העסקים ומי האנשים? המגדל הוא עסק, אז הוא הופך לחשבון (Account) עם סוג רשומה Breeder (מגדל). גם הבעלים הם חשבון, או חשבון אישי, עם סוג רשומה Owner (בעלים). שני סוגים של אותו אובייקט סטנדרטי, זה לצד זה בראש התרשים, בדיוק איפה שהם נמצאים מאז יחידה 1.

למה אין בית סטנדרטי? חיית מחמד, גזע, תרגיל, תרגיל של חיית מחמד והערכת תרגיל הופכים לאובייקטים מותאמים אישית. וזוכרים את המין שהעתקנו לחיית המחמד ביחידה 5? כאן הוא מקבל את התפקיד שלו: הוא הופך לסוג הרשומה של חיית המחמד, Dog (כלב) או Cat (חתול). אובייקט אחד עם שני סוגי רשומה, כל אחד עם פריסת עמוד וערכי רשימת בחירה משלו, במקום אובייקט כלב ואובייקט חתול.

אילו קשרים הם master-detail? אני משתמש ב-master-detail רק כשהילד לעולם לא יעבור להורה אחר. תרגיל של חיית מחמד שייך לחיית המחמד שלו לכל החיים, וכל הערכת תרגיל שייכת לתרגיל של חיית המחמד שלה, אז שניהם master-detail. זה משתלם מיד: master-detail הוא מה שמאפשר לחיית המחמד להחזיק שדה סיכום מצטבר (roll-up summary) של התרגילים שלה, כך שספירת התרגילים שנלמדו מיחידה 5 נשארת מתואמת מעצמה. אבל חיות מחמד כן מחליפות בית, אז הבעלים הם lookup.

אילו הם lookup? Salesforce לא ממליצה על יותר מ-10,000 ילדים להורה אחד. תרגיל פופולרי כמו שב, גזע נפוץ או מגדל גדול יכולים לעבור את זה בקלות, אז תרגיל של חיית מחמד מצביע על התרגיל שלו עם lookup, וחיית המחמד מצביעה על הגזע ועל המגדל שלה באותה דרך. והימנעו מקשרים פולימורפיים איפה שאפשר, מהסוג שבו שדה אחד יכול להצביע על כמה סוגי אובייקטים. הם נוחים ביום הראשון וקשים יותר לכל מה שצריך לקרוא אותם אחר כך: דוחות, אינטגרציות, ועכשיו גם סוכנים.

מה נשאר מחוץ לפלטפורמה? אם חיית המחמד עונדת קולר GPS שמדווח איפה היא, אין צורך להעתיק את המיקום הזה בכלל. הוא יכול להיות אובייקט חיצוני, שנקרא בזמן אמת ממערכת המעקב של הקולר.

מודל חיות המחמד ב-Salesforce מודל חיות המחמד כאובייקטים של Salesforce. למעלה שני חשבונות: אחד עם סוג הרשומה בעלים, ואחד עם סוג הרשומה מגדל. Pet__c, מתחתם, הוא עם סוגי הרשומה כלב וחתול, מספר השבב כמזהה חיצוני, lookups לבעלים, למגדל ול-Breed__c, ו-Tricks_Known__c כשדה סיכום מצטבר. Pet_Trick__c נמצא בקשר master-detail עם Pet__c ויש לו lookup ל-Trick__c, עם רמת המיומנות ותאריך הלימוד. Trick_Assessment__c נמצא בקשר master-detail עם Pet_Trick__c. ל-Breed__c יש מין, שם וגודל; ל-Trick__c שם ורמת קושי. lookup lookup lookup master detail lookup master detail חשבון (בעלים) Id מזהה רשומה סוג רשומה: בעלים שם טלפון חשבון (מגדל) Id מזהה רשומה סוג רשומה: מגדל שם Pet__c Id מזהה רשומה סוגי רשומה: כלב, חתול Microchip_Number__c מזהה חיצוני Owner__c LOOKUP Breeder__c LOOKUP Breed__c LOOKUP שם Birth_Date__c Tricks_Known__c סיכום מצטבר Breed__c Id מזהה רשומה Species__c שם Size__c Pet_Trick__c Id מזהה רשומה Pet__c MASTER-DETAIL Trick__c LOOKUP Skill_Level__c Date_Learned__c Trick__c Id מזהה רשומה שם Difficulty__c Trick_Assessment__c Id מזהה רשומה Pet_Trick__c MASTER-DETAIL Date__c Skill_Level__c Assessed_By__c בדיוק אחד אפס או אחד אחד או רבים אפס או רבים © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

כל החלטה בתרשים הזה מתחקה אחורה למשהו שהחלטנו קודם, וזו בדיוק הנקודה. עכשיו אותו שלב ל-Steve Trucking.

המודל הלוגי של Steve Trucking מחזיק עכשיו שותף קמעונאי, מרכז הפצה, מניפסט, משלוח, פריט משלוח, נמען, מסלול, עצירה, צוות, משאית ושיבוץ צוות. אלה מושגים עסקיים, ועכשיו אני יכול להתחיל למפות אותם ל-Salesforce.

שותף קמעונאי עשוי להיות חשבון. משלוח עשוי להתמפות למשהו שכבר יש ב-Salesforce לעבודה מתוזמנת בשטח, או שהוא עשוי להפוך לאובייקט מותאם אישית. למניפסט אין שום דבר סטנדרטי שמתאים, אז הוא כנראה יהיה מותאם אישית. והנמען הוא שאלה קשה באמת: חשבון אישי, איש קשר, או פשוט מידע על המשלוח? נענה על זה כמו שצריך בפרק הבא.

המילה החשובה היא עדיין עשוי. אל תניחו את המימוש רק כי מושג עסקי נשמע כמו אובייקט של Salesforce. בגלל זה בנינו קודם את המודל הלוגי: הוא נותן לנו משהו לבדוק מולו את התכנון ב-Salesforce.

ישות עסקית היא לא אוטומטית אובייקט מותאם אישית

Section titled “ישות עסקית היא לא אוטומטית אובייקט מותאם אישית ”

הנה מלכודת שאני רוצה שאדמינים יימנעו ממנה: “זיהינו אחת עשרה ישויות, אז אנחנו צריכים אחד עשר אובייקטים מותאמים אישית.” לא. ישות לוגית אומרת לנו שהמושג העסקי חשוב. היא לא מכתיבה איך Salesforce חייבת לשמור אותו. מושג יכול להפוך לאובייקט סטנדרטי, לאובייקט מותאם אישית, לקשר בין אובייקטים, לשדה או לכמה שדות, לערך שמנוהל בהגדרות, או לנתונים שחיים לגמרי מחוץ ל-Salesforce (תמונות המשלוחים של Steve Trucking הן מועמדות טובות לזה). המודל הפיזי הוא המקום שבו הבחירות האלה נעשות, וזו בדיוק הסיבה שלא עשינו אותן בשיחה הראשונה.

מאפיינים הופכים לשדות פיזיים

Section titled “מאפיינים הופכים לשדות פיזיים ”

אותו מעבר קורה עם מאפיינים. למשאית הלוגית שלנו יש מספר יחידה, מספר שלדה (VIN), יצרן, דגם, שנת דגם, לוחית רישוי וסטטוס. עכשיו אנחנו מחליטים איך הם קיימים פיזית: איזה אובייקט מחזיק בהם, באילו סוגי שדות הם משתמשים, אילו מהם חובה, אילו חייבים להיות ייחודיים, אילו הם מזהים חיצוניים, אילו צריכים אימות, אילו נגזרים במקום להישמר, ואילו רגישים. ברמה הלוגית שאלנו מה משאית אומרת. ברמה הפיזית אנחנו שואלים איך Salesforce תייצג משאית. שאלות שונות.

משאית: מישות לוגית לאובייקט Salesforce שני כרטיסים, שורה מול שורה. לוגי, משאית, מה משאית אומרת: מזהה משאית, מספר צי, VIN, יצרן, דגם, שנת ייצור, לוחית רישוי, סטטוס. פיזי, Truck__c, איך Salesforce תייצג אותה: Id, מזהה הרשומה של Salesforce; Name, טקסט, שמחזיק את מספר הצי; VIN__c, טקסט של 17 תווים, ייחודי ומזהה חיצוני; 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), ייחודי, מזהה חיצוני 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 מממשת אותו: lookup, master-detail, או אובייקט צומת של Salesforce (Salesforce Junction Object), ואולי אובייקט צומת עם מאפיינים משלו, כי, כמו שמצאנו, לקשר עצמו יכולה להיות משמעות עסקית.

חשבו שוב על שיבוץ הצוות. יכולנו לפתוח את הפרק הזה ולומר: “בואו ניצור אובייקט צומת של Salesforce בין צוות למשאית.” תראו על מה היינו מדלגים: למה הקשר קיים, האם הוא צריך תאריך ומסלול, האם יש לו סטטוס, והאם תביעת נזק שבועות אחר כך צריכה את ההיסטוריה שלו. השאלות העסקיות האלה אומרות לנו מה שיבוץ צוות הוא. רק אז כדאי להחליט איך Salesforce בונה אותו, והאם כבר יש ב-Salesforce משהו שעושה את העבודה.

עכשיו שרטטו את המודל הפיזי

Section titled “עכשיו שרטטו את המודל הפיזי ”

התרשים משתנה שוב. המודל המושגי הראה מושגים עסקיים וקווים פשוטים. המודל הלוגי הוסיף מאפיינים, מפתחות, קרדינליות והישויות שמסתתרות בקשרים. עכשיו המודל הפיזי מתחיל להיראות כמו Salesforce: אובייקטים סטנדרטיים, אובייקטים מותאמים אישית, שדות, סוגי קשרים, ומה שחי מחוץ לפלטפורמה.

אותו עסק בשלוש רמות שלושה חלונות, אותו חתך בשלוש רמות. מושגי, מה קיים: שותף קמעונאי, הקמעונאי שעבורו אנחנו מובילים, שולח משלוחים, וכל משלוח, הזמנה אחת לנמען אחד, מכיל פריטי משלוח, מוצר במשלוח. לוגי, איך הנתונים בנויים: אותם שלושה עם מזהי רשומה וכמה שדות; המשלוח מוכר גם לפי מספר ההזמנה אצל השותף; פריט המשלוח נושא את מזהה המוצר וכמות. פיזי, איך Salesforce תבנה את זה: השותף הקמעונאי הוא חשבון (Account) סטנדרטי עם סוג הרשומה שותף קמעונאי; המשלוח הוא אובייקט מותאם אישית, Delivery__c, עם מספר ההזמנה אצל השותף כמזהה חיצוני ו-lookup לחשבון; פריט המשלוח הוא אובייקט מותאם אישית, Delivery_Item__c, בקשר master-detail למשלוח שלו, עם כמות. הערה מתחת: עסק, מושגי, לוגי, פיזי; הצביעו על כל דבר מימין ועקבו אחריו חזרה שמאלה. מושגי: מה קיים? לוגי: איך הנתונים בנויים? פיזי: איך SALESFORCE תבנה את זה? שולח מכיל שולח מכיל lookup master detail שותף קמעונאי הקמעונאי שעבורו אנחנו מובילים משלוח הזמנה אחת לנמען אחד פריט משלוח מוצר במשלוח שותף קמעונאי מזהה שותף קמעונאי מזהה רשומה שם סטטוס משלוח מזהה משלוח מזהה רשומה מספר הזמנה אצל השותף מוכר גם בתור תאריך משלוח סטטוס פריט משלוח מזהה פריט משלוח מזהה רשומה מזהה מוצר כמות חשבון (סטנדרטי) Id מזהה רשומה סוג רשומה: שותף קמעונאי שם Delivery__c Id מזהה רשומה Partner_Order_Number__c מזהה חיצוני Retail_Partner__c LOOKUP Delivery_Item__c Id מזהה רשומה Delivery__c MASTER-DETAIL Quantity__c עסק ← מושגי ← לוגי ← פיזי: הצביעו על כל דבר מימין ועקבו אחריו חזרה שמאלה. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

אני רוצה שתוכלו לשים את שלושת התרשימים האלה זה לצד זה ולראות את ההתקדמות: לא שלושה תרשימים שאין ביניהם קשר, אלא אותו עסק בשלוש רמות.

מילה על האופן שבו אני משרטט אותם, כי הפריסה היא חלק מהמסר. אני שם את האובייקט הראשי באמצע, קצת למטה. אם יש לו אובייקטי הורה, אני שם אותם קצת מעליו, כך שקוראים את המודל מלמעלה למטה, משמאל לימין, כמו שהעסק חושב עליו. נתוני ייחוס הולכים לצד. גם לצבע יש משמעות: אני תמיד צובע את Salesforce בכחול, ובוחר צבע למערכות של החברה עצמה, בדרך כלל ירוק, כי ירוק הוא צבע נחמד וידידותי. אני לא משתמש באדום, וצהובים קצת צורמים. כשמודל פרוס ככה, הוא שר לי. הרבה מהתרשימים שתמצאו הם בעצם ניהול שטח: איך אני מחנה את כל המכוניות שלי במוסך הצפוף? אני מעדיף לצייר תמונה הגיונית שהמוח יכול לתפוס.

המודל הפיזי צריך לכבד את הפלטפורמה

Section titled “המודל הפיזי צריך לכבד את הפלטפורמה ”

Salesforce היא לא מסד נתונים רלציוני כללי. יש לה דעות על קשרים, בעלות, אבטחה ודיווח. יש לה מגבלות, התנהגות שאילתות ואוטומציה, וארכיטקטורה שמשפיעה על האופן שבו מודל מתנהג בקנה מידה. אז מודל לוגי שנראה מושלם על הלוח עשוי להצטרך שינוי כשהוא הופך לפיזי. זה לא Salesforce שמפריעה. זה אומר שלפלטפורמה יש צורה, וארכיטקטים טובים מבינים את הצורה הזו. הפרק הבא עוסק בדיוק בזה.

לפעמים, גם, המודל הפיזי יהיה שונה בכוונה מהמודל הלוגי הנקי בגלל החלטות הדה-נרמול שקיבלנו ביחידה 5. זה בסדר, כל עוד אנחנו יכולים להסביר למה.

יש הרגל שאני רוצה שתשברו אם יש לכם אותו: להתחיל את ארכיטקטורת הנתונים ב-Setup → Object Manager → New Custom Object ולהבין את המודל תוך כדי. Salesforce הופכת יצירה של דברים לקלה להפליא; זו אחת החוזקות שלה, ואחת הסיבות שמודלי נתונים חלשים נוצרים כל כך מהר. כמה קליקים ויש לכם אובייקט, עוד כמה ויש לכם שדות וקשר. ואז מגיעים נתונים, נבנים Flows, נוצרים דוחות, אינטגרציות תלויות בו, והאובייקט שיצרתם בחמש דקות הופך ליקר מאוד לשינוי. זה מבחן ההפיכות מפרק 1. אז לפני שאתם לוחצים על New Custom Object, שרטטו את המודל.

יש עוד סיבה שאני שומר את שלושת המודלים נפרדים: הטכנולוגיה משתנה. היום חלק מהנתונים של Steve Trucking חיים על הליבה של Salesforce. מחר חלק מהם עשויים לחיות ב-Data 360, במחסן נתונים, או במערכת שעוד לא בחרנו, ועוזר הבינה המלאכותית צריך ייצוג משלו. הארכיטקטורה הפיזית יכולה להשתנות, בזמן שהמושגים העסקיים נשארים יציבים להפליא: שותפים קמעונאיים, משלוחים ונמענים עדיין קיימים. זה מה שהופך את המודל הלוגי לבעל ערך. הוא תיאור עמיד של העסק שלא קשור למימוש של היום.

כשאני הופך מודל לוגי למודל פיזי ב-Salesforce, אני מחליט:

  • אילו ישויות עסקיות מתמפות ליכולות סטנדרטיות של Salesforce, ואילו צריכות אובייקטים מותאמים אישית או ייצוג אחר.
  • איך מאפיינים לוגיים הופכים לשדות פיזיים, ואיך קשרים ממומשים בפלטפורמה.
  • איפה דה-נרמול מכוון שייך בתכנון הפיזי.
  • אילו נתונים שייכים ל-Salesforce, ואילו שייכים למקום אחר.
  • אילו מאפיינים של הפלטפורמה מחייבים את המודל הפיזי להיות שונה מהלוגי.

והכי חשוב, אני רוצה להיות מסוגל להתחקות אחורה אחרי כל החלטה. אם תצביעו על משהו במודל הפיזי שלי ותשאלו “למה זה שם?”, אני צריך להיות מסוגל להוביל אתכם בחזרה דרך המודל הלוגי והמודל המושגי אל משהו שהעסק באמת צריך: עסק ← מושגי ← לוגי ← פיזי.

מעבר למבחן: מה הבינה המלאכותית משנה. בינה מלאכותית יכולה היום לקחת מסמך דרישות עד לאובייקטים ושדות של Salesforce בקפיצה אחת. זה הופך את הסדר לחשוב יותר, לא פחות: אם היא מדלגת מדרישות להגדרות, בקשו ממנה להראות מה קרה באמצע: מה היא החליטה שהוא ישות, אילו מפתחות היא בחרה, אילו קשרים היא הניחה, ואיפה היא ביצעה דה-נרמול. אלה החלטות ארכיטקטוניות, והארכיטקט עדיין צריך לראות אותן.

התחלנו את הפרק הזה בשיחה ראשונה, בהקשבה לשמות עצם, ואנחנו מסיימים אותו עם מודל פיזי שאפשר להתחקות אחריו בחזרה אל העסק. עכשיו, אחרי שבחרנו לבנות על Salesforce, השאלה הבאה מעמיקה יותר: על איזה סוג פלטפורמת נתונים אנחנו בעצם בונים?