表关系类型

关系通过匹配键列(通常是两个表中同名的列)中的数据来发挥作用。 在大多数情况下,关系将一个表的主键(它为每行提供唯一标识符)与另一表中外键的项相匹配。 例如,通过在 titles 表的 title_id 列(主键)和 sales 表的 title_id 列(外键)之间创建关系,可以使图书销售额与售出的具体书名相关联。

表之间有三种类型的关系。 所创建的关系类型取决于相关列是如何定义的。

备注

为 SQL Server 2012 格式的数据库提供了一个新版本的表设计器。本主题介绍表设计器的旧版本,可将其与 SQL Server 早期格式的数据库配合使用。

在新版本中,可通过图形界面或直接在脚本窗格中更改表定义。如果使用图形界面,表定义将在脚本窗格中自动更新。若要在脚本窗格中应用 SQL 代码,请选择“更新”按钮。有关新版本的详细信息,请参阅如何使用表设计器创建数据库对象

一对多关系

一对多关系是关系的最常见类型。 在这种关系中,表 A 中的一行在表 B 中可以有许多匹配行,但表 B 中的一行在表 A 中只能有一个匹配行。 例如,publishers 和 titles 表具有一对多关系:每个出版商出版很多书,但每本书只出自一个出版商。

如果在相关列中只有一列是主键或具有唯一约束,则创建一对多关系。

一对多关系的主键方由键符号表示。 关系的外键方由无穷符号表示。

多对多关系

在多对多关系中,表 A 中的一行在表 B 中可以有许多匹配行,反之亦然。 可通过定义第三个表(称为联接表)创建此类关系,联接表的主键由来自表 A 和表 B 的外键组成。 例如,authors 表和 titles 表具有多对多关系,此关系由这两个表中的每一个与 titleauthors 表之间的一对多关系定义。 titleauthors 表的主键是 au_id 列(authors 表的主键)和 title_id 列(titles 表的主键)的组合。

一对一关系

在一对一关系中,表 A 中的一行最多只能与表 B 中的一行相匹配,反之亦然。 当两个相关列都是主键或都具有唯一约束时,将创建一对一关系。

这种关系不常见,因为以这种方式相关的多数信息都在一个表中。 可以使用一对一关系用于:

  • 分割一个含有许多列的表。

  • 由于安全原因而隔离表的某一部分。

  • 存储可以很容易删除的临时数据,只需删除表即可删除这些数据。

  • 存储只应用于主表的一个子集的信息。

一对一关系的主键方由键符号表示。 外键方也由键符号表示。

请参见

概念

引用完整性概述

其他资源

使用关系

使用键