【Salesforce Apex 教程】4.数据库操作与SOQL① 数据库基础
2023年09月17日
文章浏览:289

4. 数据库操作与SOQL

4.1 数据库基础

在深入学习SOQL和Apex的数据库操作之前,理解Salesforce的数据模型是非常关键的。Salesforce提供了一个特殊的对象-关系数据库模型,它既包括传统的表和行概念,又包括对象和字段的概念。


4.1.1 Salesforce数据模型概述 (Salesforce Data Model Overview)

Salesforce提供了一个强大的、基于云的、多租户的数据存储方案。在进行Apex开发之前,理解其核心数据模型是至关重要的。


对象 (Objects):

对象在Salesforce中的作用类似于传统数据库中的表。它们存储信息,每个对象都有一系列字段。

示例:

Account myAcc = new Account(Name='OpenAI');
insert myAcc;

以上代码示例演示了如何在Apex中创建一个新的Account记录并将其插入到数据库中。


标准对象 (Standard Objects): Salesforce预先定义的对象,如Account、Contact等。

自定义对象 (Custom Objects): 您可以根据业务需求创建的对象。它们的名称通常以__c结束。


字段 (Fields):

字段表示对象中的某一具体数据项。

示例:

Account myAcc = new Account();
myAcc.Name = 'OpenAI';
myAcc.BillingCity = 'San Francisco';
insert myAcc;

上述代码演示了如何设置Account对象的Name和BillingCity字段。


标准字段 (Standard Fields): 每个对象都有一组预定义的字段。

自定义字段 (Custom Fields): 根据需要,您可以添加到对象的额外字段。它们的名称通常以__c结束。


关系 (Relationships): 在Salesforce中,您可以定义不同对象之间的关系。

查找关系 (Lookup Relationship): 这是一种简单的关系,允许一个对象引用另一个对象的记录。

主详细关系 (Master-Detail Relationship 也叫主从关系): 更为紧密的关系,其中详细记录依赖于主记录。


4.1.2 对象、字段和关系的基础知识 (Basics of Objects, Fields, and Relationships)

在Salesforce数据模型中,对象、字段和关系是三个基础且核心的概念。理解它们以及它们之间的交互关系对于任何Apex开发者来说都是至关重要的。


1. 对象 (Objects)

定义: 对象可以被看作是一个数据表,其中存储着特定类型的数据记录。

创建: 除了Salesforce提供的标准对象外,您还可以创建自定义对象以满足特定的业务需求。

示例:

CustomObject__c customObj = new CustomObject__c(Name='Sample');
insert customObj;

记录 (Records): 对象中的每一行数据都被称为一条记录。


2. 字段 (Fields)

定义: 字段代表了对象中的一个特定数据点或属性。

数据类型 (Data Types): Salesforce提供了多种字段数据类型,如文本(Text)、数字(Number)、货币(Currency)、日期(Date)等。

示例:

Account a = new Account();
a.Name = 'OpenAI';      // 文本字段
a.NumberOfEmployees = 100; // 数字字段


3. 关系 (Relationships)

关系允许我们定义对象之间的连接方式,使数据模型更具有结构性。


查找关系 (Lookup Relationship): 这种关系允许一个对象引用另一个对象的单一记录。它是一个轻量级的连接。

示例:

Contact con = new Contact();
con.AccountId = existingAccountId;  // AccountId 是 Contact 对象上的查找字段,指向 Account 对象。
insert con;

主详细关系 (Master-Detail Relationship 也叫主从关系): 这是一个强关联,其中详细记录完全依赖于主记录。如果主记录被删除,那么所有相关的详细记录也会被删除。

示例:

DetailObject__c detail = new DetailObject__c();
detail.MasterObjectId__c = existingMasterId;  // MasterObjectId__c 是详细对象上的主详细字段,指向主对象。
insert detail;


Lookup Relationship 和 Master-Detail Relationship 都是 Salesforce 中的两种主要的记录间关联方式。它们都允许在不同的对象之间建立关系,但它们有很大的区别和各自的用途。以下是这两种关系的主要差异:

  1. 所有权和控制:Lookup Relationship: 子记录与父记录的关联不太紧密。子记录有其自己的所有者,与父记录的所有者可能不同。Master-Detail Relationship: 子记录(详细记录)不拥有自己的所有者。它继承主记录(master record)的所有者。如果主记录被删除,所有相关的详细记录也会被自动删除。
  2. 安全性和数据访问:Lookup Relationship: 子记录的安全性设置是独立的,不会从其父记录继承。Master-Detail Relationship: 子记录的安全性和访问控制是基于主记录的。详细记录继承其主记录的共享规则和访问权限。
  3. 必要性:Lookup Relationship: 这种关系是可选的,意味着子记录可以存在而没有相关的父记录。Master-Detail Relationship: 这种关系是强制性的,意味着详细记录必须始终与一个主记录相关联。
  4. 报告:Lookup Relationship: 子记录和父记录可能有各自的独立报告。Master-Detail Relationship: 允许创建从属报告,其中详细记录可以按主记录进行分组。
  5. 字段的级联删除与清除:Lookup Relationship: 删除父记录不会影响子记录。但可以设置当父记录被删除时清除子记录的关联字段值。Master-Detail Relationship: 如前所述,删除主记录将导致所有相关的详细记录也被删除。
  6. 字段值继承:Lookup Relationship: 不提供字段值继承。Master-Detail Relationship: 允许使用跨对象公式从主记录向详细记录传递值。

选择哪种类型的关系取决于特定的业务需求和所需的数据结构。

关注 收藏