Learn 2 Salesforce - I Write Crappy Code

advertisement
Learn 2 Salesforce
Relational Databases For Those Who Like
Spreadsheets
So What Are We Talking About?
 Salesforce for most people is a big black box. They don’t
know how it works, or why it works like it does.
 This ‘course’ aims to give you a better understanding of
the Salesforce system. Starting with the very basics and
moving up from there.
 Along with making life easier for the Salesforce admin
team, learning what is and is not possible may give you
ideas on how we can make it better for you and your
team.
Outline
 Salesforce is at it’s core is a database. It uses some
different terms from standard, but it IS a database. So
we’ll start our adventure by learning more about them.
 I am going to be teaching this as if you were a
database/salsforce admin in training so you can think
like one.
 So today we will be covering:
 What is a database?
 What are objects/tables
 What are relationships
 What are the relationship types
Why should I Care?
 You’ll be less confused when using the system.
 You may be able to resolve more errors on your own, and
understand various error messages and notices.
 You’ll understand what I’m talking about more in meetings.
 You’ll be able to come up with cool ideas that are
implementable to make life easier for you.
 These skills and knowledge are/is transferable and make
you a more valuable employee.
 Oh, and if you pay attention, stay involved and I feel you
grasp the topics, I may give you access to some really
powerful tools in Salesforce later on
(mass update anyone?)
What is a Database?
 A database in the simplest form, is an organized
collection of data. Usually the data is organized in such
way to represent different aspects of reality (such as
people, hotel rooms, cars, etc)
 You can think of a database as an Excel workbook for
now. A collection of data and each tab represents a
different thing.
A few terms
 Before we dig deeper, we will need to define a few terms. Each
term is first shown with it’s standard name, after the slash is
how Salesforce refers to it.
 Database/Org – Collection of tables that contain data.
 Table/Object – A collection of similar that share attributes in the
Database (like on page of an excel workbook)
 Attribute/Field – The vertical columns of a table. Describes the
data contained.
 Row/Record – The horizontal rows of a table.
 Null – The complete absence of data. Not 0, but nothingness. A
vacuum.
 Relationship – A way to link records from one table to another to
share data between them.
 Primary Key/Lookup – Name for the field that creates a
relationship.
Database/Table Example
Philosophers
ID
Firstname
Lastname
1
Bertrand
Russell
2
John
Morley
3
Socrates
Quotes
ID
ParentID
Quote
1
1
The fundamental cause of trouble in the world today is that the
stupid are cocksure while the intelligent are full of doubt.
2
2
Where it is a duty to worship the sun it is pretty sure to be a
crime to examine the laws of heat.
3
3
An unexamined life is not worth living
4
1
I would never die for my beliefs because I might be wrong.
5
3
As for me, all I know is that I know nothing.
6
2
You have not converted a man because you have silenced him.
Make Sense?
 For the last diagram, see if you can figure out the
following.
 What were the names of the tables?
 What was the relationship between the tables?
 Give an example of a record in the first table
 Give an example of an attribute in the second table
 Did either table have an example of null in them?
Answers
 What were the names of the tables?
 Philosophers and Quotes
 What was the relationship between the tables?
 Quotes was linked to Philosophers via the parentId field
 Give an example of a record in the first table
 Bertrand Russell or John Morely or Socrates
 Give an example of an attribute in the second table
 Id or ParentId or Quote
 Did either table have an example of null in them?
 Yes, the first table. Socrates last name was a null value.
Some To Know About Databases
 In general attributes/fields (columns) are not created,
modified, or deleted during everyday use. They are
created during setup and not modified.
 Records/Rows can and are created, deleted, and
updated frequently.
 If your database design cannot handle hundreds of
thousands of records without need to modify the
structure of the tables, you have done something wrong.
 Databases are meant to be searchable. Include fields
that make it easy to identify records you are looking for.
Fields/Attributes
 There are many kinds of fields. Each is meant to house a
specfic kind of data, such as whole numbers (integers),
text, rational numbers (has a decimal point), currency
and more.
 Each database system has it’s own set of field types.
Some like those listed above a common in nearly all of
them, and each DBMS (database management system)
has it’s own unique field types as well.
Salesforce Field Types - Basic 1
 Checkbox - Allows users to select a True (checked) or False
(unchecked) value.
 Currency - Allows users to enter a dollar or other currency
amount and automatically formats the field as a currency
amount.
 Date - Allows users to enter a date or pick a date from a
popup calendar.
 Date/Time - Allows users to enter a date and time, or pick
a date from a popup calendar.
 Email - Allows users to enter an email address, which is
validated to ensure proper format.
 Number - Allows users to enter any number. Leading zeros
are removed.
 Percent - Allows users to enter a percentage number, for
example, '10' and automatically adds the percent sign to
the number.
Salesforce Field Types - Basic 2
 Phone - Allows users to enter any phone number.
Automatically formats it as a phone number.
 Picklist - Allows users to select a value from a list you
define.
 Picklist (Multi-Select) - Allows users to select multiple
values from a list you define
 Text - Allows users to enter any combination of letters
and numbers
 Text Area - Allows users to enter up to 255 characters
on separate lines.
 Text Area (Long) - Allows users to enter up to 32,768
characters on separate lines.
 URL - Allows users to enter any valid website address.
When users click on the field, the URL will open in a
separate browser window.
Salesforce Field Types - Advanced
 Auto Number - A system-generated sequence number
that uses a display format you define. The number is
automatically incremented for each new record.
 Formula - A read-only field that derives its value from a
formula expression you define. The formula field is
updated when any of the source fields change.
 Roll-Up Summary - A read-only field that displays the
sum, minimum, or maximum value of a field in a related
list or the record count of all records listed in a related
list.
 Lookup Relationship - Creates a relationship that links
this object to another object. The relationship field
allows users to click on a lookup icon to select a value
from a popup list. The other object is the source of the
values in the list.
Tables - General
 We have already had some exposure to tables, but now we
are going to talk a little more about exactly how to use them,
and how they are set up.
 Tables are composed of attributes/fields (the columns) and
rows/records (the rows).
 Tables are used to contain records that have attributes in
common. Lists of cars, people, events, whatever. They
however should not contained mixed sets of data. All things in
a table should have one overarching thing in common that
binds them together. Otherwise they should be in different
tables.
 In Salesforce, a table is an object. The contact object is a
table. A single contact is a row/record. Accounts, Studies,
Contacts, Payments all just tables.
Tables - Design
 Plan what kind of data you will need to hold ahead of
time.
 Use as few fields as possible to keep things clean
 Use relationships to get data that is in another table
instead of replicating it.
 Use descriptive, simple attribute names. Attribute names
should not have spaces, or special chars. They must be
unique within the table.
 All tables, should always, always have an ID field with a
value that is unique to every record (Though Salesforce
handles this for you).
 Choose the closest matching, smallest field type that will
hold the data you need.
How would you structure this?
 I have a pet store, and I want to keep track of the types
of animals we keep. I want to track:
 The name of the type of animal
 A Price for that type of animal
 A short description of it
 How many of them I have in stock
 A value indicating how easy they are to care for.
 How many tables would I need? What attributes? What
field types are those attributes?
Answer (one of practically infinite)
id
name
price
description
qunatity
easeOfCare
1
Dog
500.00
Cute, Playful,
Loyal
10
Easy
2
Cat
250.00
Fuzzy, Sharp,
Cuddly
15
Medium
3
Human
1000.00
Walking talking 3
meat.
Id – Salesforce Generated Id (automatically created)
Name – Text (100 chars max)
Price – Currency
Description – Text Area Long (32,000)
Quantity – Number (no decimal points)
Easy of Care – Picklist (Easy, Medium, Hard)
Hard
Relationships
 No man is an island, and most tables aren’t either.
Tables rely on each other to help create a complete
picture of an organizations data.
 Relating tables allows you to share data between them.
 Connecting tables in normal databases is done by keys,
and done in Salesforce with lookup, and master-detail
relationship fields.
 Logistically there are 3 major kinds of relationships, oneto-one, one-to-many and many-to-many.
Relationships - One to One
 A one to one relationship is where one record in a table
will be related to exactly one other record in another.
Type type of relationship is fairly rare, is if this is the
case, odds are the two tables could be joined into one.
 An example in our database/org would be payments to
checks. One payment will spawn exactly one check.
Every check has a 1 payment, every payment has 1
check. No more, no less.
Check
Check
Relationships – One-to-Many
 This is probably the most common type of relationship.
One ‘parent’ with many ‘children’. Each child can get
information from it’s parent easily.
 An example in our org would be accounts and contacts.
One account can have many contacts, but contacts can
have only one account.
 In general it is easy to get parent information when
looking at the child, but it is harder to get specific child
information when looking at the parent (as you have to
specify which child you want).
Contact
Account
Contact
Contact
Relationships Many-to-Many
 Many-to-Many relationships are the most complicated,
but somewhat frequently used. They make use of what
is called a ‘junction’ object to allow connecting of many
objects to each other.
 An example in our org is Contacts to Respondents to
Studies
Respondent
Contact
Respondent
Respondent
Study
Reporting
 In Salesforce reporting is done by running a query ( a
request to the databse to get some data ). You don’t
have to write the actual code for the query, you get to
use that nice report builder (You can write the queries
directly, but you need a special tool to do that, we’ll talk
about that later).
 All your design decisions should take reporting into
affect. A report can only contain data from the source
object (what you decide to report against) and objects it
has relationships with.
 Always structure your data so that reporting will be easy
and meaningful. Don’t use a text field (which could have
any value) when a picklist will get you better data to
report against.
Summary
 Now you should have a basic idea of the structure of a
database. When you are using Salesforce you can start
to see the underlying principals that power it. What the
objects are, the field types, the relationships.
Understanding these things will make the system make
a lot more sense.
 Next time we will talk more about the interplay of parent
and child objects. How summarizations/aggregation
work, roll-up fields, and the importance of master-detail
relationship fields.
Questions? Comments?
 I know that was a lot of information, and mostly fairly
abstract so feel free to ask anything. Seriously, this stuff
is kind of complicated and it’s really important to
understand it. Ask. Ask now. Do it. Nobody is going to
judge you. I’d rather you ask now than break something
later.
Download