mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 03:09:50 +08:00
6.8 KiB
6.8 KiB
Salesforce Data Model Template
Data model diagram template using flowchart LR for visualizing Salesforce object relationships with color coding, LDV markers, and relationship type labels.
When to Use
- Documenting object relationships
- Planning data model changes
- Understanding existing schema
- Design reviews and architecture discussions
Cloud-Specific Templates
For pre-built cloud diagrams, see:
- Sales Cloud ERD - Account, Contact, Opportunity, Lead, Product, Campaign
- Service Cloud ERD - Case, Entitlement, Knowledge, ServiceContract
Preferred Format: flowchart LR
Use flowchart LR (left-to-right) for data model diagrams. This format supports:
- Individual node color coding by object type
- Thick arrows (
==>) for Master-Detail relationships - Left-to-right flow for readability
- Simple object nodes (name + record count, no fields)
Quick Reference
Object Type Colors
| Type | Fill | Stroke | Example |
|---|---|---|---|
| Standard | #bae6fd |
#0369a1 |
Account, Contact |
Custom (__c) |
#fed7aa |
#c2410c |
Invoice__c |
External (__x) |
#a7f3d0 |
#047857 |
SAP_Order__x |
Relationship Arrows
| Arrow | Type | Meaning |
|---|---|---|
--> |
Lookup (LK) | Optional parent, no cascade delete |
==> |
Master-Detail (MD) | Required parent, cascade delete |
-.-> |
Special | Conversion, indirect relationship |
Metadata Annotations
| Annotation | When to Use |
|---|---|
LDV[~4M] |
Record count >2M |
(317) |
Record count <2M |
Query Org Metadata
Enrich diagrams with live org data:
python3 ../../scripts/query-org-metadata.py \
--objects Account,Contact,Opportunity,Case \
--target-org myorg
Mermaid Template (Preferred)
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
%% ═══════════════════════════════════════════════════════════════
%% LEGEND: LK = Lookup (-->), MD = Master-Detail (==>)
%% Colors: Blue = Standard, Orange = Custom, Green = External
%% ═══════════════════════════════════════════════════════════════
Account["Account<br/>(317)"]
Contact["Contact<br/>(346)"]
Opportunity["Opportunity<br/>(6)"]
Case["Case<br/>(2)"]
Account -->|"LK"| Contact
Account -->|"LK"| Opportunity
Account -->|"LK"| Case
Contact -->|"LK"| Case
%% Standard Objects - Sky Blue
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Contact fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Opportunity fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Case fill:#bae6fd,stroke:#0369a1,color:#1f2937
ASCII Fallback Template
┌─────────────────────────────────────────────────────────────────────────────┐
│ DATA MODEL (L→R) │
│ Legend: LK = Lookup (-->), MD = Master-Detail (==>) │
└─────────────────────────────────────────────────────────────────────────────┘
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ ACCOUNT │── LK ──>│ CONTACT │── LK ──>│ CASE │
│ (317) │ │ (346) │ │ (2) │
└───────┬────────┘ └────────────────┘ └────────────────┘
│
│ LK
▼
┌────────────────┐
│ OPPORTUNITY │
│ (6) │
└────────────────┘
Custom Object Example
Shows mixing Standard (blue) and Custom (orange) objects:
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
%% Standard Objects
Account["Account<br/>(317)"]
Product2["Product2<br/>(50)"]
%% Custom Objects
Invoice["Invoice__c<br/>(1,200)"]
InvoiceLine["Invoice_Line_Item__c<br/>(5,400)"]
Account ==>|"MD"| Invoice
Invoice ==>|"MD"| InvoiceLine
Product2 -->|"LK"| InvoiceLine
%% Standard - Sky Blue
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Product2 fill:#bae6fd,stroke:#0369a1,color:#1f2937
%% Custom - Orange
style Invoice fill:#fed7aa,stroke:#c2410c,color:#1f2937
style InvoiceLine fill:#fed7aa,stroke:#c2410c,color:#1f2937
External Object Example
Shows Standard, Custom, and External objects together:
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
Account["Account<br/>(317)"]
SAPOrder["SAP_Order__x<br/>(ext)"]
OrderLine["Order_Line__c<br/>(2,400)"]
Account -->|"LK"| SAPOrder
SAPOrder -->|"LK"| OrderLine
%% Standard - Sky Blue
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
%% External - Green
style SAPOrder fill:#a7f3d0,stroke:#047857,color:#1f2937
%% Custom - Orange
style OrderLine fill:#fed7aa,stroke:#c2410c,color:#1f2937
LDV (Large Data Volume) Example
Objects with >2M records show LDV indicator:
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
Account["Account<br/>LDV[~4M]"]
Contact["Contact<br/>LDV[~8M]"]
Case["Case<br/>(450K)"]
Account -->|"LK"| Contact
Account -->|"LK"| Case
Contact -->|"LK"| Case
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Contact fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Case fill:#bae6fd,stroke:#0369a1,color:#1f2937
Best Practices
- Use
flowchart LR- Left-to-right flow is easier to read - Keep objects simple - Show name + record count only (no fields)
- Color code by type - Blue=Standard, Orange=Custom, Green=External
- Use correct arrows -
-->for Lookup,==>for Master-Detail - Add LDV indicators - For objects >2M records
- Use API names - Show
Accountnot "Accounts"
ERD Conventions
See ERD Conventions for full documentation.