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 中的两种主要的记录间关联方式。它们都允许在不同的对象之间建立关系,但它们有很大的区别和各自的用途。以下是这两种关系的主要差异:
选择哪种类型的关系取决于特定的业务需求和所需的数据结构。