What are Salesforce Force.com objects?

You can think of Force.com objects as being similar to MS SQL Server database Tables – with many additional properties to simplify your development.

Force.com provides many out-of-box elements as well as gives you the ability to create your own elements. The built in elements are referred to as Standard (e.g. standard objects, fields), while the ones you create are called Custom (e.g. custom objects, custom fields).

You can rename these standard objects and also add custom fields to them (like facebook__C, blog__c).

You can of course create your own objects (e.g. Speaker__C). Any object you create have some standard fields built-in for you (e.g. “Last modified By”).

The __c suffix is the internal name (also called API name) of the object and fields – for your labels you will have more user friendly names. When you access your objects and fields programmatically or through APIs, you will use the internal name.

MS SQL Server DB vs. Salesforce Force.com Objects

Objects are really much more than RDBMS tables. When you create an object – UI (page layout), search indexes and DR infrastructure are automatically generated for you. Bindings between your program and objects are automatically generated – unlike a RDBMS schema where you would need to create ADO.NET components (or prepared statements/JDBC in case of Java).

Data model in Force.com vs. RDBMS Schema

You have a very rich set of data types (e.g. master-detail, lookups, picklists, formula) unlike a database table which has datatypes like char, varchar. The availability of standard objects and the rich data types mean that you can model very complex relationships with surprisingly few objects.

 compare_data_model

Unlike a traditional RDBM data model, in a Salesforce Force.com object schema, many of the reference tables are not needed (replaced by picklists). In the traditional data model, you would further need to create other tables to represent entities (e.g. accounts, customers, products), but in Force.com these can be easily represented by pre-built standard objects.

To summarize – you can interact with Force.com objects as you would with RDBMS tables (through SQL syntax) or as application objects (using APIs).

So what are how does the lingo match up?

RDBMS Tables

Objects

Tables Objects
Columns Fields
Keys (e.g primary key) Ids, External Ids
Foreign Keys Relationships
Keys (e.g primary key) Ids, External Ids
Row Record