You can create relationships between lists by using a combination of unique columns, lookup columns, and relationship enforcement (cascade and restrict delete), all of which enhance your ability to create more sophisticated business solutions and help preserve the integrity of your data.
In this article
Overview of list relationships
The following sections provides important background information about creating relationships between source and target lists, creating unique and lookup columns, enforcing list relationship behavior, adding primary and secondary lookup columns, viewing, editing, and deleting items within list relationships, managing list relationships when lists have many items, and the additional benefits of using an editing program such as Microsoft Office SharePoint Designer 2010.
1. The Items list is the source list and the Orders list is the target list.
2. Each list has unique columns to ensure that the correct data is matched.
3. The primary lookup column in the source list "looks up" the Order ID column in the target list based on a matching value.
4. A secondary lookup column in the source list automatically inserts the Orders Description column from the target list.
Creating unique columns
When you create a column, you can specify that the column must contain unique values. This means that the list cannot have any duplicate values in that column. You cannot add a list item that contains a duplicate value, modify an existing list item that would result in creating a duplicate value, or restore an item from the Recycle Bin if it would result in a duplicate value. Furthermore, if you create a lookup column in a source list, and you define that column to be unique, the column in the target list must not contain duplicate values.
Note: Uniqueness is not case-sensitive, so for example, ORD-231 and ord-231 are considered duplicate values.
A unique column must also have an index. When you create a unique column, you may be prompted to create the index and it is automatically created when you click OK. Once a unique column has an index, you cannot remove the index from that column, unless you first redefine the column to allow duplicate values.
The following table summarizes what column types can and cannot be used to create unique columns.
Supported Column Types |
Unsupported Column Types |
Single line of text |
Multiple lines of text |
Choice (single value) |
Choice (multi-valued) |
Number |
Calculated |
Currency |
Hyperlink or Picture |
Date and Time |
Custom Columns |
Lookup (single value) |
Lookup (multi-valued) |
Person or Group (single value) |
Person or Group (multi-valued) |
Yes/No |
Creating lookup columns
To create a relationship between two lists, in the source list, you create a lookup column that retrieves (or "looks up") one or more values from a target list if those values match the value in the lookup column in the source list. Once you create this lookup column (the primary column), you can continue to add additional columns (secondary columns) from the target list to the source list, as long as those additional columns have a supported data type described below.
The following table summarizes what column types can and cannot be used to create lookup columns.
Supported Column Types |
Unsupported Column Types |
Single line of text |
Currency |
Number |
Lookup |
Date and Time |
Person or Group |
Calculated |
|
Hyperlink or Picture |
|
Multiple lines of text |
|
Yes/No |
|
Choice |
|
Custom Columns |
There are two types of lookup columns that you can create, a lookup column with an enforced relationship and a lookup column with an unenforced relationship.
A lookup column with an enforced relationship
In a lookup column with an enforced relationship (also called referential integrity), you can lookup single values and maintain the integrity of your data in the target list in one of two ways:
Cascade Delete When an item in the target list is deleted, the related item or items in the source list are also deleted. In this case, you want to make sure that all related items are deleted as part of one database transaction. For example, if you delete an order in a target list, you can ensure that the corresponding order items in the source list is also deleted. You don't want to have order items without a corresponding order, because that would create "orphan" order items that might cause confusion later on.
Restrict Delete When you try to delete an item in the target list, and it has one or more related items in the source list, you are prevented from deleting the item in the target list. In this case, you want to ensure that the related item in the target list is preserved. For example, if someone tries to delete an order item from a target list, a customer might still have that order pending, and you want to prevent that delete operation from occurring until the order has been processed. You don't want the customer’s order to be accidentally deleted because that would affect your ability to complete the order.
1. A cascade delete operation ensures all related items are deleted in one database transaction.
2. A restrict delete operation prevents deleting items in the target list if related source list items exist.
In short, enforcing a list relationship behavior helps keep your data valid and helps prevent inconsistencies that might cause problems down the road.
Note: You must have Manage Lists permission on a list to create or modify an enforced relationship.
A lookup column that enforces a relationship must also have an index. When you create a lookup column that enforces a relationship, you might be prompted to create the index, and it is automatically created when you click OK. Once a lookup column that enforces a relationship has an index, you cannot remove the index from that column, unless you first remove the enforced relationship.
A lookup column with an unenforced relationship
In a lookup column with an unenforced relationship, from the source list, you can lookup single or multiple values in the target list. Also, when you delete an item in the source list, as long as you have delete permission on the list, there are no additional delete restrictions or delete operations that occur in the target list.
Viewing and editing items in list relationships
One of the beneficial effects of creating list relationships is that you can display and edit columns from two or more lists, on one page. When you create a lookup column in a source list, the primary column displays values from the target list column, but you can also specify that additional, secondary columns from the target list also display alongside the primary column and the other source list columns.
The primary column value is a link that you can click to the display all the column values of that item in the target list. Each secondary column value from the target list displays as text in the source list column. If you create a lookup column with multiple values, each column from the target list, whether primary or secondary, display their multiple corresponding values delimited by semicolons. You can manipulate these primary and secondary columns in list view in much the same way as the columns from the source list, by, for example, adding, removing, filtering, and sorting them.
The primary column name is a name you provide when you create the lookup column. By default, each secondary column name follows a standard naming convention of <primary column name in source list>: <column name in target list>. Changing the name of the primary column, therefore, changes the names of all secondary columns. However, you can modify the default secondary column names and descriptions to make the names more meaningful to you.
1. A primary lookup column with multiple values.
2. A secondary lookup column with multiple values.
3. The column name has been changed from the default name of GetID: Title to Instruments.
Deleting items and lists in a list relationship
If you want to delete items or lists in a list relationship, then you need to be aware of the consequences of doing this operation on the source and target lists and any related columns, especially if the lists have an enforced relationship of restrict delete or cascade delete. To maintain the integrity of the data, you may be blocked from deleting items even when you have delete permission. Deleting these items also requires the backend database to temporarily lock the data when performing the delete transaction, which can take time to complete.
The following sections describe what happens in more detail.
Delete a source or target list item with an unenforced relationship When you try to delete a source or target list item that does not have an enforced relationship, then the following occurs:
-
You can remove the item from the source or target list.
-
The related item in the target or source list is not deleted.
Delete a source list item with an enforced relationship of restrict delete When you try to delete an item in the source list with an enforced relationship of restrict delete, then the following occurs:
-
You can remove the item from the source list.
-
The related item in the target list is not deleted
Delete a target list item with an enforced relationship of restrict delete When you try to delete an item in the target list with an enforced relationship of restrict delete, then the following occurs:
-
You receive an error message that the column is used to enforce the restrict delete operation.
-
You cannot delete the target list item, even if you have delete permission on this item.
Delete a source list item with an enforced relationship of cascade delete When you try to delete an item in the source list with an enforced relationship of cascade delete, then the following occurs:
-
You can then delete the item in the source list.
-
The related item in the target list is not deleted.
Delete a target list item with an enforced relationship of cascade delete When you try to delete an item in the target list with an enforced relationship of cascade delete, then the following occurs:
-
You can delete the item in the target list and all related items in the source list.
-
The delete operation occurs as a database transaction, which means that the entire delete operation must complete to ensure that neither list is left in an invalid state.
Note: In the case of a Document Library, if the item in the source list is a checked out file, both items are still deleted.
Delete a source or target list with an unenforced relationship When you try to delete a source and target list with an unenforced relationship, then you can delete either the source list or the target list, just like any other list.
Delete a source or target list with an enforced relationship of cascade or restrict delete When you try to delete a source or target list with an enforced relationship of cascade or restrict delete, the following occurs:
-
You receive a warning that the source or target list has one or more relationships with other lists, and those lists are displayed in the warning message.
-
You cannot delete the source or target list.
Restoring from the Recycle Bin If the Recycle Bin is enabled on your site, then all deleted items are stored in the recycle bin, and you can restore them if you need to. If the items were deleted in one database transaction as part of a cascade delete operation, all items in the relationship are displayed, and you can restore them as well. However, the original target and source lists must still exist, or else the items cannot be restored.
To summarize:
-
When an item in the target list is deleted, a cascade delete operation also deletes all related items in the source list.
-
When you try to delete an item in the target list, a restrict delete operation will prevent you from deleting the item in the target list if it has one or more related items in the source list.
-
You cannot delete lists participating in an enforced relationship.
Managing list relationships when lists have many items
When you create list relationships by using lookup columns, unique columns, and lists with enforced relationships, you can reach a resource threshold or limit and may be blocked under the following circumstances:
-
If you make a column unique in an existing list that has more items than the List View Threshold (but note that adding one item to a list that makes the list greater than the List View Threshold is an operation that is not usually blocked).
-
If you turn on Cascade Delete or Restrict Delete for a lookup field in a list that has more items than the List View Threshold.
-
You have exceeded the List View Lookup Threshold, which by default is eight lookup columns.
-
The number of items in a delete operation exceeds 1,000.
Find more information about thresholds and limits and managing lists and libraries with many items in the See Also section.
Using editing programs, such as Office SharePoint Designer 2010
Consider using an editing program compatible with SharePoint technologies. For example, Microsoft Office SharePoint Designer 2010 helps you work with list relationships by providing additional functionality and features. You can connect a List View Web Part or Data Form Web Part to a Related List Web Part to vertically display multiple values from the Lookup target list. You can also restrict insert operations as part of a field validation by using the List Schema editor.
Find more information about Office SharePoint Designer 2010 in that product's Help system.
How to create a unique and lookup column
The following sections provide step-by-step instructions for creating a unique column and a lookup column.
Create or modify a unique column
Warning: You cannot create a unique column in a list with item-level permissions defined, you cannot break inheritance of permissions from a list to a list item if the list contains a unique column, you cannot create a unique column or modify a column to be unique in a list that contains items with unique permissions or one that has content approval enabled, and you cannot copy a file to a library by using the Open with Explorer command, if that library contains a unique column.
-
Navigate to the site containing the list for which you want to add a unique column.
-
Click the name of the list on the Quick Launch, or click Site Actions , click View All Site Content, and then under the list section, click the name of the list.
Note: A site can be significantly modified in appearance and navigation. If you cannot locate an option, such as a command, button, or link, contact your administrator.
-
In the ribbon, click the List tab, and then in the Manage Views group, click Create Column.
-
In the Columns Name box, type a name for the column.
-
Under The type of information in this column is, click one of the following:
-
Single line of text
-
Multiple lines of text
-
Choice
-
Number
-
Currency
-
Date and Time
-
Yes/No
-
Lookup (single value)
-
Person or Group (single value)
-
-
In the Additional Column Settings section, under Enforce unique values click Yes.
If you select a data type that is not supported, or of you are creating a lookup column that allows multiple values, the Enforce unique values is not displayed.
Note: .
-
You cannot remove the index of a unique column. If you want to remove the index, you must change the column from a unique column to one that allows duplicate values first, and then remove the index.
-
If you try to change an existing column from duplicate values to unique values, you may be prevented from doing this operation if the existing column contains duplicate values. In this case, you must remove all the duplicate values first, and then change the column from allowing duplicate values to a unique column.
-
If you want to change the data type of the unique column, you must do the following: change the column to allow duplicate values, remove the index, change the column to the other supported data type, and then make the column unique.
Create a lookup column
-
Navigate to the site containing the list for which you want to add a lookup column.
-
Click the name of the list on the Quick Launch, or click Site Actions , click View All Site Content, and then under the list section, click the name of the list.
Note: A site can be significantly modified in appearance and navigation. If you cannot locate an option, such as a command, button, or link, contact your administrator.
-
In the ribbon, click the List tab, and then in the Manage Views group, click Create Column.
-
In the Columns Name box, type a name for the column.
-
Under The type of information in this column is, click Lookup.
-
In the Get information from box, select a target list.
-
In the In this column box, select a primary column.
-
Under Add a column to show each of these additional fields, for each secondary column you want to add, click the check box next to the column name. Only columns with supported data types are listed.
-
Later on if you want to add or remove secondary columns, modify the lookup column and make the selections you want.
Note: You cannot index a secondary column nor can you make a secondary column unique.
-
If you want the lookup columns to display in the default view, select Add to default view.
-
To create an enforced relationship, select Enforce relationship behavior and then click Restrict Delete or Cascade Delete.
-
Click OK.