您可组合使用唯一列、查找列和关系强制(级联删除和限制删除)来创建列表之间的关系,所有这些关系都可以增强创建更复杂的业务解决方案并帮助保持数据完整性的功能。
本文内容
列表关系概述
以下各部分提供了有关以下方面的重要背景信息:在源列表和目标列表之间创建关系;创建唯一列和查找列;强制实施列表关系行为;添加主查找列和次查找列;查看、编辑和删除列表关系中的项;管理具有许多项的列表的列表关系。此外,还提供了使用诸如 Microsoft Office SharePoint Designer 2010 等编辑程序的额外好处。
1.项目列表是源列表和订单列表是目标列表。
2.每个列表都具有唯一列以确保匹配正确的数据。
3. 源列表中的主查找列将基于匹配值“查找”目标列表中的“订单 ID”列。
4. 源列表中的次查找列自动从目标列表中插入“订单说明”列。
创建唯一列
当您创建一个列时,可指定该列必须包含唯一值。这意味着列表中的该列不得具有任何重复值。您无法添加包含重复值的列表项、将现有列表项修改为包含重复值或是从回收站还原导致重复值的列表项。而且,如果您在源列表中创建了一个查找列,且将该列定义为唯一,则目标列表中的相应列不得包含重复值。
注意: 唯一性不区分大小写,因此,ORD-231 和 ord-231 将被视为重复值。
唯一列还必须具有索引。当您创建唯一列时,可能会提示您创建索引,当您单击“确定”时,系统将自动创建索引。当唯一列具有索引时,除非首先将该列重新定义为允许重复值,否则无法从该列中删除索引。
下表总结了哪些列类型可以用于创建唯一列,哪些列类型不可以。
支持的栏类型 |
不支持的栏类型 |
单行文本 |
多行文本 |
选择(单值) |
选择(多值) |
数字 |
计算 |
货币 |
超链接或图片 |
日期和时间 |
自定义栏 |
查找(单值) |
查找(多值) |
人员或组(单值) |
人员或组(多值) |
是/否 |
创建查找列
若要创建两个列表之间的关系,请在源列表中创建查找列,如果目标列表中的一个或多个值与源列表中的查找列中的值相匹配,则查找列可以检索(或“查找”)这些值。创建此查找列(主列)后,可以继续将目标列表中的其他列(次列)添加到源列表中,条件是这些列具有如下所述的受支持的数据类型。
下表总结了哪些列类型可以用于创建查找列,哪些列类型不可以。
支持的列类型 |
不支持的列类型 |
单行文本 |
货币 |
数字 |
查询 |
日期和时间 |
人员或组 |
计算 |
|
超链接或图片 |
|
多行文本 |
|
是/否 |
|
选项 |
|
自定义栏 |
您可创建两种类型的查找列,一种是具有强制关系的查找列,另一种是具有非强制关系的查找列。
具有强制关系的查找列
在具有强制关系(也称为参照完整性)的查找列中,您可通过以下两种方法之一查找单一值并维护目标列表中数据的完整性:
级联删除 删除目标列表中的项目时,源列表中的相关项目也将被删除。在此情况下,您需要确保在一个数据库事务中删除所有相关项。例如,如果您删除了目标列表中的一个订单,则应确保源列表中的相应订单项也被删除。您不必保留没有相应订单的订单项,因为这将会导致“孤立”订单项,这些项可能会在以后引发混乱。
限制删除 尝试删除目标列表中的项目且此项目在源列表中具有一个或多个相关项目时,您将无法从目标列表中删除此项。在此情况下,您需要确保目标列表中的相关项被保留。例如,如果其他人尝试从目标列表中删除某一订单项,而客户可能暂时未处理该订单,则您需要阻止该删除操作,直到该订单被处理。您不希望客户订单被无意中删除,因为这将会影响您完成订单的能力。
1.级联删除操作可确保在一个数据库事务中删除所有相关的项。
2.限制删除操作可防止删除项目相关源列表项时,目标列表中的存在。
简而言之,强制实施列表关系行为可帮助保持数据有效性并有助于防止可能会导致以后出现问题的不一致情形。
注意: 您必须对列表具有“管理列表”权限才能创建或修改强制关系。
强制实施关系的查找列还必须具有索引。在创建强制实施关系的查找列时,可能会提示您创建索引,当您单击“确定”时,系统将自动创建索引。当强制实施关系的查找列具有索引时,除非首先删除了该强制关系,否则无法从该列删除索引。
具有非强制关系的查找列
在具有非强制关系的查找列中,可以从源列表查找目标列表中的单个值或多个值。此外,当您删除源列表中的某一项时,只要您对该列表具有删除权限,则不会对目标列表实施更多删除限制或删除操作。
查看和编辑列表关系中的项
创建列表关系的一个有益之处是,您可以在一个页面上显示并编辑两个或更多列表中的列。当您在源列表中创建查找列时,主列将显示来自目标列表相应列中的值,但您还可以指定目标列表中其他次列与主列和源列表中的其他列一起显示。
主列值是一个链接,您可单击此链接以显示目标列表中的该项的所有列值。目标列表中的每个次列值在源列表的列中都显示为文本。如果您创建了一个具有多个值的查找列,则目标列表中的每个列(无论是主列还是次列)都显示出它们的多个相应值并以分号分隔。您可按照处理源列表列的方式,在列表视图中对这些主列和次列进行操作,例如,添加、删除、筛选和排序。
主列的名称是您在创建查找列时提供的名称。默认情况下,每个次列的名称都遵守标准命名约定,即 <源列表中的主列名>: <目标列表中的列名>。因此,更改主列名将会更改所有次列名。不过,您可以修改默认的次列名和说明以便创建对您而言更有意义的名称。
1.具有多个值的主查找列。
2.具有多个值的次查找列。
3. 列名已从默认名称 GetID: Title 更改为 Instruments。
删除列表关系中的项和列表
如果您要删除列表关系中的项或列表,则需要了解对源列表和目标列表以及任何相关列执行此操作的后果,尤其是当列表具有限制删除或级联删除的强制关系时。为了保持数据完整性,即使您具有删除权限,也可能无法删除项。删除这些项还要求后端数据库在执行删除事务时暂时锁定数据,这需要一些时间才能完成。
以下各个部分将详细说明具体情况。
删除带有非强制关系的源列表或目标列表项 尝试删除不具有强制关系的源列表或目标列表项时,将显示以下情况:
-
您可从源或目标列表中删除该项。
-
目标或源列表中的相关项未被删除。
删除带有限制删除的强制关系的源列表项 尝试删除源列表中具有限制删除的强制关系的项目时,将显示以下情况:
-
您可从源列表中删除该项。
-
目标列表中的相关项未被删除
删除带有限制删除的强制关系的目标列表项 尝试删除目标列表中具有限制删除的强制关系的项目时,将显示以下情况:
-
您将收到一条错误消息,指出该列用于强制执行限制删除操作。
-
您无法删除该目标列表项,即使您对该项具有删除权限。
删除带有级联删除的强制关系的源列表项 尝试删除源列表中具有级联删除的强制关系的项目时,将显示以下情况:
-
您可从源列表中删除该项。
-
目标列表中的相关项未被删除。
删除带有级联删除的强制关系的目标列表项 尝试删除目标列表中具有级联删除的强制关系的项目时,将显示以下情况:
-
您可从目标列表中删除该项并从源列表中删除所有相关项。
-
删除操作以数据库事务的形式执行,这意味着必须完成整个删除操作才能确保两个列表都不会处于无效状态。
注意: 对于文档库,如果源列表项是一个签出的文件,则两个项仍被删除。
删除具有非强制关系的源列表或目标列表 尝试删除具有非强制关系的源列表和目标列表时,正如其他列表一样,您可删除源列表或目标列表。
删除具有级联删除或限制删除的强制关系的源列表或目标列表 尝试删除具有级联删除或限制删除的强制关系的源列表或目标列表时,将出现以下情况:
-
您将收到一条警告,指出源列表或目标列表与其他列表存在一个或多个关系,这些列表显示在警告消息中。
-
您无法删除该源列表或目标列表。
从回收站还原 如果在网站中启用了回收站,则所有已删除的项目都存储在回收站并且需要时可将其还原。如果这些项是在作为级联删除操作一部分的数据库事务中删除的,则将显示出关系中的所有项,您也可还原它们。但是,原始目标列表和源列表必须仍然存在,否则,将无法还原这些项。
总结:
-
当删除目标列表项时,级联删除操作还将删除源列表中的所有相关项。
-
当您尝试删除目标列表项时,限制删除操作将阻止您从目标列表中删除在源列表中具有一个或多个相关项的项。
-
您无法删除涉及强制关系的列表。
管理具有许多项的列表的关系
当您使用查找列、唯一列和具有强制关系的列表创建列表关系时,可能会达到资源阈值或限制,并可能在以下情况被阻止:
-
如果在项数超过列表视图阈值的现有列表中将某一列设置为唯一列(但请注意,向列表中添加一项而导致列表大于列表视图阈值的操作通常不会被阻止)。
-
如果在项数超过列表视图阈值的列表中对某一查找字段打开级联删除或限制删除。
-
您已超过列表视图查找阈值(默认情况下是八个查找列)。
-
一次删除操作中的要删除项数超过 1,000。
在“另请参阅”部分中,可以找到有关阈值和限制以及管理具有许多项的列表和库的详细信息。
使用 Office 等编辑程序 SharePoint Designer 2010
考虑使用与 SharePoint 技术相兼容的编辑程序。 例如,Microsoft Office SharePoint Designer 2010 通过提供附加功能来帮助您处理列表关系。 您可将列表视图 Web 部件或数据表单 Web 部件连接到相关列表 Web 部件来垂直显示查找目标列表中的多个值。 您还可使用列表架构编辑器在字段验证过程中限制插入操作。
有关 Office SharePoint Designer 2010 的详细信息,请参阅该产品的帮助系统。
如何创建唯一列和查找列
以下各个部分提供了创建唯一列和查找列的详细操作说明。
创建或修改唯一列
警告: 您无法在定义了项级权限的列表中创建唯一列;如果列表包含唯一列,则无法中断从列表到列表项的权限继承;无法在包含具有唯一权限的项或启用内容审批的列表中创建唯一列或将某列更改为唯一列;如果某个库中包含唯一列,则无法使用“使用资源管理器打开”命令将文件复制到该库。
-
导航到包含要为其添加唯一列的列表的网站。
-
单击快速启动上的列表的名称或单击网站操作 ,单击查看所有网站内容,然后在列表部分中,单击列表的名称。
注意: 网站的外观和导航方式可能会进行大幅修改。如果找不到选项(如命令、按钮或链接),请与管理员联系。
-
在功能区中,单击“列表”选项卡,然后在“管理视图”组中,单击“创建列”。
-
在“列名”框中,键入列的名称。
-
在“此列中的信息类型为”下,单击以下选项之一:
-
单行文本
-
多行文本
-
选择
-
数字
-
货币
-
日期和时间
-
是/否
-
查找(单值)
-
人员或组(单值)
-
-
在“其他列设置”部分中的“强制执行唯一值”下,单击“是”。
如果选择了不受支持的数据类型,或者要创建允许多个值的查找列,则不显示“强制执行唯一值”。
注意: .
-
无法删除唯一列的索引。如果要删除此类索引,必须首先将该列从唯一列更改为允许重复值的列,然后才能删除索引。
-
如果您尝试将现有列从重复值更改为唯一值,则当现有列包含重复值时,可能无法执行此操作。在此情况下,必须首先删除所有重复值,然后将该列从允许重复值更改为唯一列。
-
如果要更改唯一列的数据类型,则必须执行以下操作:将该列更改为允许重复值、删除索引、将该列更改为其他受支持的数据类型,然后将该列设置为唯一列。
创建查找列
-
导航到包含要为其添加查找列的列表的网站。
-
单击快速启动上的列表的名称或单击网站操作 ,单击查看所有网站内容,然后在列表部分中,单击列表的名称。
注意: 网站的外观和导航方式可能会进行大幅修改。如果找不到选项(如命令、按钮或链接),请与管理员联系。
-
在功能区中,单击“列表”选项卡,然后在“管理视图”组中,单击“创建列”。
-
在“列名”框中,键入列的名称。
-
在“此列中的信息类型为”下,单击“查找”。
-
在“信息来源”框中,选择一个目标列表。
-
在“此列包含”框中,选择一个主列。
-
在“为以下要显示的每个附加字段添加一列”下,对于要添加的每个次列,单击该列名旁边的复选框。将只列出具有支持的数据类型的列。
-
如果您要在以后添加或删除次列,则修改查找列并选择需要的选项。
注意: 不能对次列建立索引,也不能将次列设置为唯一。
-
如果您希望查找列出现在默认视图中,则选择“添加到默认视图”。
-
若要创建强制关系,请选择“强制关系行为”,然后单击“限制删除”或“级联删除”。
-
单击“确定”。