Database StructureThe Salesforce database is not a standard Relational Database Management System (RDBMS). While it uses Oracle under the hood, it is a specialized use that facilitate the multi-tenant environment and enforce additional security. It does not support ANSI SQL, though much of SOQL (their proprietary query language) looks and behaves similar to SQL. See here for more details. First, the terminology is a little tricky. A Salesforce Object is analogous to a database table. It's not exactly the same as Salesforce has an abstraction layer seen above. Note, Salesforce does have objects in Apex typical of Object Oriented Programming languages, but this is not the same. An SObject (Salesforce object) typically refers to an individual database record, instantiated as an Apex object that extends the class SObject. These are built by Salesforce based on the database; the developer is note required to write the classes While behind the scenes, Salesforce uses a relational database (Oracle), the Salesforce objects do not represent Oracle tables. Salesforce restructures the schema to support their multi-tenant environment.
One should understand, that SOQL is not simply passed through to the underlying table
structure—rather Salesforce is reading the SOQL and generating a new SQL query (invisible
to the developer) which is then passed to the underlying database. Though SOQL, looks similar to
SQL, it is actually a proprietary query language, built by Salesforce.
|