By: Yi Fan Tang
Project Server 2010 comes as a web application to a SharePoint 2010 Farm, along with a service application for provisioning and managing. Although it is a web application, large part of the data are not stored in the web application’s content database. They are stored in a separated database created during the provision of the project server web application. I will use the custom fields as an example to show briefly how Project Server 2010 stores the data in that database.

Basically, a custom field value for a project will involve four tables, the project field values table, the custom fields table, the lookup tables table and the lookup tables values table. The following table shows the roles of each table.

The following diagram shows the relationship of all the four tables.

The “Project Field Values” table only stores the custom field values. If the custom field is a look up field, the “Project Field Values” table stores the lookup table value ID. The value’s actual display name, for example, is stored in the “Lookup Table Values” table. Given a project ID and a custom field ID, you can get the name of the custom field in the “Custom Fields” table and its value in the “Project Field Values” table, or further the value’s display information in the “Lookup Table Values” table.
For developers to access the project custom fields’ information programmatically, the following out of box Project Server 2010 web service will come in handy:

Please check the following MSDN article for the full information of each web service:
http://msdn.microsoft.com/en-us/library/ee767707.aspx
By: Yi Fan Tang