La plateforme Salesforce1: modèle de données, relations et requêtes.
Durant ce webinar, nos experts vous présenterons comment personnaliser le modèle de données de la plateforme Salesforce 1. Vous apprendrez à gérer differents types de relations et leur utilisation dans vos requêtes ou dans votre code Apex. Si vous hésitez entre “Lookup” ou “Master Detail”, ou si cette question ne vous parle pas, ce webinar est fait pour vous.
Les sujets traités seront :
Tour d’horizon des différents outils disponibles pour créer des relations
Explication de la différence entre les relations de type Lookup et Master detail
Les relations dans les requêtes à l'API REST
Les requêtes standards et patterns Apex dans l’utilisation des données liées
3. Safe Harbor
Déclaration conforme à la directive « Safe Harbor » contenue dans la loi américaine intitulée « Private Securities Litigation Reform Act » de 1995 :
Cette présentation est susceptible de comporter des déclarations conditionnelles, qui impliquent nécessairement une certaine prise de risque, des
incertitudes et des hypothèses. Si l'une de ces incertitudes se concrétise ou si certaines hypothèses se révèlent incorrectes, les résultats de
salesforce.com, Inc. pourraient être sensiblement différents de ceux explicitement ou implicitement avancés par nos déclarations conditionnelles.
Toutes les déclarations ne portant pas sur des faits historiques peuvent être considérées comme conditionnelles, y compris les projections de
disponibilité des produits ou des services, d'augmentation du nombre d'abonnés, de bénéfices, de chiffre d'affaires ou autre valeur financière, toute
déclaration concernant les stratégies ou les plans de gestion des opérations à venir, toute opinion personnelle, toute déclaration concernant les
services ou les développements technologiques nouveaux, planifiés ou mis à niveau, ainsi que les contrats clients et l'utilisation de nos services.
Les incertitudes et les risques susmentionnés concernent, sans s'y limiter, les risques associés au développement et à la fourniture de nouvelles
fonctionnalités pour notre service, aux nouveaux produits et services, à notre nouveau modèle commercial, nos pertes d'exploitation antérieures, les
éventuelles fluctuations de nos résultats d'exploitation et de notre taux de croissance, les interruptions ou les retards de notre système d'hébergement,
les failles des mesures de sécurité, l'issue des litiges, les risques associés aux fusions et acquisitions réelles et éventuelles, la jeunesse du marché
dans lequel nous évoluons, notre historique relativement limité, notre capacité à développer, fidéliser et motiver notre personnel et à gérer notre
croissance, les nouvelles éditions de notre service, ainsi que le déploiement réussi chez les clients, notre expérience limitée en matière de revente de
produits tiers, et l'utilisation et les ventes à de grands comptes. Vous trouverez plus d'informations sur les facteurs pouvant influencer les résultats
financiers de salesforce.com, Inc. dans notre rapport annuel (formulaire 10-K) pour l'exercice fiscal le plus récent et dans notre rapport trimestriel
(formulaire 10-Q) pour le trimestre fiscal le plus récent. Ce rapport et d'autres documents contenant d'importantes informations sont accessibles sur
notre site web dans la partie Informations Investisseurs, section Documents pour la Commission des opérations de bourse (SEC).
Certains services ou fonctions qui ne sont pas encore commercialisés et sont mentionnés ici ou dans d'autres présentations, communiqués de presse
ou déclarations publiques, ne sont pas encore disponibles et ne seront peut-être pas livrés à temps, voire pas livrés du tout. Les clients qui achètent
nos services doivent prendre leur décision sur la base des fonctions actuellement disponibles. Salesforce.com, Inc. n'est pas tenu et n'a pas l'intention
de mettre à jour ces déclarations conditionnelles.
4. Agenda
Modèle de données & relations
Comparaison de Force.com avec un SGBDR
Types de relations & jointures pré-définies
Relations & SOQL
SOQL vs SQL
Requêtes sur les relations
5. Pré-requis
Connaissance de base de la plateforme Force.com :
– Création d’objets
– Ajout de champs
– Navigation dans l’interface utilisateur
Connaissance des concepts des bases de données
relationnelles
– Tables
– Clés primaires / étrangères
– Jointures
7. Modèle de données sous Force.com
sObject:
– Structure similaire à une
table
• Enregistrements
• Champs
– Extensible
– Requêtable / Modifiable
– Relations
Fonctions natives:
– IHM
– Sécurité
• CRUD
• Granularité champs
• Enregistrement (Access
Control List)
– APIs REST & SOAP
8. Modèle de données standard
Objets standard
– Compte
– Contact
– Piste
– Opportunité
– Demande
– …
Champs standard
– Id
– Nom
– Créé par/Date
– Modifié par/Date
– Id propriétaire
– …
10. Relations : Jointure pré-définie
SGBDR
– Jointure à
l’exécution en SQL
ou dans une vue
Force.com
– Jointure pré-définie
à la conception
– Similaire à une
contrainte
d’intégrité
11. Principal - DétailRéférence
Types de relations
NonOptionnel
CascadeEffacer/Bloquer/Cascade
Nul
Suppression
Hérité du parentIndépendant du parent
225
Partage
Champs maxi
14. SOQL
Salesforce Object Query Language
Syntaxe similaire au SQL
Requête les objets Force.com
Utilisé :
– En Apex
– Dans les outils de développement (Console, Eclipse,
Workbench, …)
– API (REST, SOAP, Bulk, …)
15. De SQL à SOQL
Semblent proches
Différences importantes
Apprenez les différences
Utilisez de bonnes pratiques de
conception
16. De SQL à SOQL : Les similarités
Structure tabulaire
Syntaxe des requêtes
similaire
Index
Transactionnel
Triggers
SELECT Id, Name, Capacity__c
FROM Room__c
WHERE Capacity__c > 10
17. De SQL à SOQL : Les différences évidentes
Pas de select *
Pas de Vues
Lecture seule
Index limités
Mapping objet-relationnel automatique
Protection contre les modifications des schémas
18. De SQL à SOQL : Les autres différences
sObjects ne sont pas des tables physiques –
environnement multi-tenant
Les relations sont des métadonnées
– Intégrité référentielle
– Jointures pré-définies
– Syntaxe propre aux requêtes sur les relations
Usage monitoré
– Limites Batch API
– Governor Limits Apex
19. Les suffixes __c et __r
Room__c
Workshop__c
Id
Id
Room__c
Room__r
Workshops__r Type:
List<Workshop__c>
Type: Id
Type: Room__c
1-M
20. Requête sur une relation : Enfant vers parent
SELECT Id, Name, Room__c,
Room__r.Id,
Room__r.Capacity__c
FROM Workshop__c
WHERE Status__c = ’Open’
[
{
"Id": "a0145000000aBf4AAE",
"Name": "Yoga for Beginners",
"Room__c": "a00vn000000dU3dAAE",
"Room__r": {
"Id": "a00vn000000dU3dAAE",
"Capacity__c": 10
}
},
{
"Id": "a0145000000aBf4AAE",
"Name": "Yoga for Beginners",
"Room__c": "",
"Room__r": ""
}, ...
]
21. Requête sur une relation : Parent vers enfant
SELECT Id, Name,
(SELECT Id, Status__c
FROM Workshops__r)
FROM Room__c
WHERE Capacity__c > 10
[
{
"Id": "a00vn000000dU3dAAE",
"Name": "Salon 1 West",
"Workshops__r": [
{
"Id": "a0145000000aBf4AAE",
"Status__c": "Open"
},
{
"Id": "a0145000000aBd4AAE",
"Status__c": "Full"
}
]
}, ...
]
22. Champ de la relation dans le prédicat
Select Id, Name,
Room__r.Name,
Room__r.Capacity__c
FROM Workshop__c
WHERE
Room__r.Capacity__c > 8
[
{
"Id": "a0145000000aBf4AAE",
"Name": "Yoga for Beginners",
"Room__c": "a00vn000000dU3dAAE",
"Room__r": {
"Id": "a00vn000000dU3dAAE",
"Capacity__c": 10
}
},
{...},
...
]
25. En résumé
Modèle de données &
relations
– Nombreuses similarités
– Quelques différences
importantes
– Jointures pré-définies
– Deux types de relations
Relations & SOQL
– SOQL gère les relations
mais n’est pas
“relationnel”
– Les limites ne peuvent
être ignorées
– Les bonnes pratiques de
conception s’appliquent
toujours mais peuvent être
revues