Overview of the SharePoint Team Services Database
SharePoint Team Services from Microsoft uses a database to store document and list metadata and data, making it easy for users to build data-driven pages and Web sites. The database complements and in some cases duplicates the data in existing Microsoft FrontPage metadata files (_vti_cnf directories). The data of a SharePoint team Web site is synchronized by always updating the FrontPage metadata files and promoting data changes from the FrontPage files into the database.
Lists are the fundamental building blocks of the team Web site database. The database stores information about lists in different places:
- List metadata is information about the list. For example, the name, description, author, type, default values, validation rules, and views. The list metadata is stored in the List of Lists table and the Views table. One of the pieces of metadata is the name of the table that contains the data for the list. Another piece of metadata is the URL of the page used to display the view.
- List data is the actual data in the list. For example, a task list has a name, description, author, and due date for each task in the list. The task list data is stored in the ows_Tasks table. Each list has its own table, and the fields in the table map one-to-one with the fields in the list, but the list may contain references to other lists. For example, an Author field refers to the UserInfo table, and a Home Page URL field refers to the URL list (DocMD table). A list that contains an Author or URL only stores an index into the Author or URL list.
The following illustration presents a high-level overview of the database schema, depicting how team Web sites incorporate lists that interact with each other.
The following kinds of lists are implemented on a team Web site:
- Discussions: In addition to facilitating threaded discussions in general, Discussion lists can also contain threaded comments about a document. Document discussions are just a special kind of list with a user interface for displaying and editing comments.
- Document Libraries: Document libraries are lists of related documents and document properties. A document library is a special kind of list where the list fields are derived from document properties.
- List of Lists: This table contains information about what lists are contained in each team Web site grouped by site. Each entry in the List of Lists table points to a table containing the data for a list.
- People (UserInfo): The People list contains information about the users who participate in the team Web site. This information mirrors the user list maintained in the roles.ini file. Whenever a new user modifies the database, SharePoint Team Services adds the user to the UserInfo table so that data changes can be tracked.
- Projects: A single database can host information from multiple Web sites, and all the information about each site is stored in the Projects table. Each row represents a Web site on the virtual server.
- Subscriptions (NtMd and PendingNtMd): Subscription lists provide a scheme for notifying people about document, list, discussion, or page modifications. Subscriptions employ a list with fields for each user’s subscriptions and notification preferences.
- URLs (DocMD): The URLs list contains all the URLs that are referenced in the team Web site.
- Views: A Views list defines all the active views on a team Web site.
While the List of Lists table contains data from multiple sites, each site also stores much of its list data in proprietary tables where each table is assigned to one and only one site. Examples of such lists include announcements, document libraries, and product ideas. Each list table contains all the data in the list, and each list has its own table and its own schema. For example, an announcements list has a different set of fields than a tasks list. Also, lists can be related to other lists. For example, a document library list can have an author field that refers to a list of users.
The Discussions, List of Lists, People (UserInfo), Projects, Subscriptions (NtMd and PendingNtMd), URLs (DocMd), and Views lists are each system, or global (one per database), lists that support the SharePoint Team Services feature set. They are predefined by SharePoint Team Services and have custom logic associated with them. For example, subscriptions, discussions, and users all have a special role on a team Web site. System lists are built-in lists; they cannot be directly edited or deleted by the end user. Custom lists, on the other hand, are user-created and have no special-purpose code associated with them, including, for example, custom lists for announcements, tasks, and events. SharePoint Team Services includes several custom list templates to make getting started easier.