学习Salesforce第一步就是要理解数据模型即对象Object、字段Field(域)及关系Relationship。用大家耳熟能详的Excel来解释对象、字段和记录的关系:Object相当于电子表格的tab,字段相关于电子表格的列,记录对应于电子表格的行,所以Object是用来存储数据的,与关系数据库类似,但也有区别,比如Salesforce是通过关系字段来与其它对象的数据通信的,而关系型数据库是通过主、外键来实现通讯表与表之间数据通讯的功能。
一、对象:
1、分类:
a、标准对象:Salesforce默认便有的,Salesforce是基于云来部署服务的(应用),它将客户关系管理常用的功能集成在系统中,比如销售云、市场云等,这些在各个公司有很强的共性,所以集成在了平台上。常见的标准对象如:Account、Contact、Lead、Opportunity、Order、Contract......
b、自定义对象:为实现个性化的定制自己创建的对象,用于扩展平台的功能,使其更利于企业的实际需要。
2、对象的其他特点:
a、Formula:应用场景包括创建验证规则,工作流规则标准,甚至是定义字段,可用来操作数据。
b、Validation:常用于对字段合法性的verify。
c、Triggers:在记录变化时来触发某个功能片段的执行,类似于事件,但绑定的对象是记录的变化。
d、Labels:每一个对象都有一个标签用来包含一些描述性和提示性的信息。
e、Notes and Attachments:为记录增添注释和添加附件eg:pdf。
f、Track Field History:用于跟踪哪一个字段被修改,并创建一个实体用来记录操作日期,时间、内容及操作人信息。
g、Security:数据库服务提供的一套安全机制,用于设置数据的访问权限,级谁能访问对象、记录和/或字段。
二、字段:
1、分类:
a、身份字段Identity Field:由大小写敏感的15位或18位字符串组成,系统自动生成,只读,
如:https://yourInstance.salesforce.com/0015000000Gv7qJ,该链接用唯一id指向特定id的页面。
b、系统字段System Fields:系统自动生成。
CreatedDate
CreatedById
LastModifiedDate
SystemModStamp
c、名称字段Name Field:他有两种形式,字符串和Auto-Number,系统默认为该字段产生一个链接,用于链接到该名称的详细页面。
d、自定义字段Custom Fields:
Auto Number
Checkbox
Date or Date/Time
Number
Email, Phone and URL
Picklist and Multi-Select Picklists
Text and Text Areas
Currency:可以自定义货币单位
Formula:从表达式中获取值,只读,常用于copy其他字段的value或者用于显示多个字段值运算之后的结果。
Geolocation:标识某位置的经纬度,另外还可以计算两个位置的距离
e、Relationship Fields:Force.com数据库与关系数据库的区别在于实现记录关系的方式。 Force.com不使用主键和外键来定义数据之间的关系,而是使用关系字段。关系字段存储关系中父记录的ID,以及可选地在父记录和子记录中提供用户界面表示。
Lookup:可用于创建1对1或1对多的关系。
Master-Detail:This creates a special type of relationship between two objects(the child, or "detail") and another object(the parent, or "master").
Master-detail relationships can be used whenever there is a tight binding between two objects. For example, consider a blog and blog posts. If the blog is deleted,
the blog posts should go too.也可用于创建多对多的关系。
Note:The master object in a master-detail relationship can also contain rollup summary fields. These fields store values aggregated from the child records
in the relationship. For example, you can use these fields to count the number of child records, sum values in field of a child record, or determine the maximum/minimum of
a field in a filtered set of child record.
As shown in the figure below:
三、关系:
1、Force.com database不像关系型数据库通过主键、外键来实现记录间的关系,而是通过自定义关系字段来实现。一个对象的记录可以通过关系记录的链接到另一个记录。
相关联的数据提供了可以相互链接的可能,关联的实质是通过对象id来实现记录间的相互关联。
2、lookup和master-detail两种关系的区别:在诸如数据删除,sharing和页面布局中的必填字段之类的两种类型的关系之间存在根本差异。
a、当在两个对象之间存在直接依赖关系时,通常使用主- 详关系。这些关系具有以下独特的特征。
·无法创建没有主记录的详细记录。
·删除主记录时,将自动删除其所有详细记录。
·详细记录从主记录继承共享规则。
·您可以使用的主 - 详关系数量有限,具体取决于您的版本和许可证。
·您无法为详细记录设置配置文件对象权限。详细记录从主记录继承权限。
·主 -详关系自动包括在报表记录类型中。
b、当在某些情况下需要两个对象之间的关系时,查找关系更适合,但不总是如此。查找关系的典型场景有:
·引用共享数据,如引用数据。
·将多个父记录与子记录相关联。
·当不想要主 - 详细关系的行为(例如共享规则,配置文件权限和级联删除)时,将两个对象链接在一起。
·如果细节对象有自己的选项卡,那么您可能想使用查找,而不是主 -细节关系。
·只要主对象上不存在累积汇总字段,您就可以将主从关系转换为查找关系。您可以将查找关系转换为主 -详细关系,但仅当所有记录中的查找字段包含值时。
补充:
上图有几个需要我们特别注意的点:
1、关于salesforce中workflow rules和process builder的应用场景及局限研究,在这篇文章中,曾提到workflow不能跨对象,这里进行修正:假如两个对象关系为master-detail关系,那么,可以使用workflow跨对象取字段;
2、如果业务中需要累计汇总,那可以使用master-detail关系;
3、master-detail关系中,parent记录被锁定后,child记录也会继承被锁的状态;
4、master-detail关系的child没有owner字段;
Junction对象及重要特性:Deep dive into Junction object – Create many to many relationship in Salesforce
Few important points (Interview Questions of salesforce ): A and B is master object, C is detail side.
相关Trailhead链接资源:https://trailhead.salesforce.com/trails/force_com_dev_beginner/modules/data_modeling/units/object_relationships
【数据模型进阶】:Object Relationships Overview