# US 2018/0322153 A1 · Custom entities and fields in a multi-tenant database system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0322153 A1
- Document ID: US20180322153A1
- Status: Published application
- Kind: A1
- Application number: 16/032,405
- Filed: 2018-07-11
- Published: 2018-11-08
- Earliest claimed: 2004-04-02
- Assignees: salesforce.com, inc.
- Applicants: salesforce.com, inc.
- Inventors: Craig Weissman; Simon Wong
- Web page: https://patentgrep.com/patent/US20180322153A1

## CPC

- G06F 16/2264: {Multidimensional index structures}
- G06F 16/2291: {User-Defined Types; Storage management thereof}
- G06F 16/284: {Relational databases}
- G06F 16/289: {Object oriented databases}
- G06Q 10/063112: {Skill-based matching of a person or a group to a task}
- G06F 16/2462: {Approximate or statistical queries}
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

Systems and methods for hosting variable schema data such as dynamic tables and columns in a fixed physical database schema. Standard objects, such as tables are provided for use by multiple tenants or organizations in a multi-tenant database system. Each organization may add or define custom fields for inclusion in a standard object. Custom fields for multiple tenants are stored in a custom data column within the object data structure, and this single custom data column may contain different data types for each tenant.

## Claims

### Claim at position 1

1-18. (canceled)

### Claim 19

A method comprising:
defining, at a server system that is communicatively coupled to at least one storage device, a multi-tenant data structure in the at least one storage device including a data table having a plurality of data columns and a plurality of rows, wherein at least two of the rows of the data table are each specific to different tenants and store data for a corresponding one of the different tenants;
receiving, at the server system from a first tenant a first definition for a first data column of the plurality data columns, the first definition designating a first data field of the first data column for storing data that is of a first data type,
receiving, at the server system from a second tenant a second definition for the data column, the second definition designating a second data field of the first data column for storing data that is of a second data type, wherein the second data type is different than the first data type;
storing in metadata of the multi-tenant data structure, at the at least one storage device by the server system, the first definition for the first data column and the second definition for the first data column by:
storing, in the metadata at the at least one storage device, an identifier of the first tenant in association with an identifier of the first data column and an identifier of the first data type, and
storing, in the metadata at the at least one storage device, an identifier of the second tenant in association with the identifier of the first data column and an identifier of the second data type;
receiving, by the server system from the first tenant, a first data value of the first data type to be stored in the first data column;
storing, at the at least one storage device by the server system, the first data value of the first data type received from the first tenant using the first data field of the first data column;
receiving, by the server system from the second tenant, a second data value of the second data type to be stored in the first data column; and
storing, at the at least one storage device by the server system, the second data value of the second data type received from the second tenant using the second data field of the first data column.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
when the first data field has been flagged for indexing, storing, in the metadata at the at least one storage device, an indication that the first data field has been flagged for indexing; and
when the second data field has been flagged for indexing, storing, in the metadata at the at least one storage device, an indication that the second data field has been flagged for indexing.

### Claim 21 (depends on 19)

The method of claim 19, wherein the first definition and the second definition are stored in the metadata at the at least one storage device using an extensible markup language (XML) format.

### Claim 22 (depends on 19)

The method of claim 19, wherein a second data column of the plurality of data columns of the data table is specific to an identifier of one of the different tenants, such that a third data field of the second data column in a first row specific to the first tenant stores an identifier of the first tenant and a fourth data field of the second data column in a second row specific to the second tenant stores an identifier of the second tenant.

### Claim 23 (depends on 19)

The method of claim 19, wherein the first data type and the second data type are selected from the group consisting of: a string, a number, a date, and a picklist.

### Claim 24 (depends on 19)

The method of claim 19, further comprising:
accessing, at the at least one storage device communicatively coupled to the server system, to the first data value stored using the first data field by reading the first data type stored in the metadata; and
providing, to the server system, the first data value in a format indicated by the first data type.

### Claim 25 (depends on 24)

The method of claim 24, further comprising:
determining, at the server system, the first data type from the metadata based on the identifier of the first tenant and the identifier of the data column.

### Claim 26 (depends on 24)

The method of claim 24, further comprising:
restricting, by the server system, access to the first data value stored in the at least one storage device to the first tenant.

### Claim 27 (depends on 19)

The method of claim 19, further comprising:
accessing, by the server system, the second data value stored at the at least one storage device using the second data field by reading the second data type stored in the metadata; and
providing, at the server system, the second data value in a format indicated by the second data type.

### Claim 28 (depends on 27)

The method of claim 27, further comprising:
determining, at the server system, the second data type from the metadata based on the identifier of the second tenant and the identifier of the data column.

### Claim 29 (depends on 26)

The method of claim 26, further comprising:
restricting, by the server system, access to the second data value stored in the at least one storage device to the second tenant.

### Claim 30 (depends on 19)

The method of claim 19, further comprising:
storing, at the at least one storage device, a third row in the data table that stores data specific to a third tenant.

### Claim 31 (depends on 30)

The method of claim 30, further comprising:
storing, at the at least one storage device, a null value in a field of the third row corresponding to the data column when a definition for the data column is not received from the third tenant.

### Claim 32 (depends on 19)

The method of claim 19, wherein the data table further comprises at least one second data column having a standard data type for storing data of a same data type for the tenants.
