表关系类型 (Visual Database Tools)
关系通过匹配键列(通常是两个表中同名的列)中的数据来发挥作用。在大多数情况下,关系将一个表的主键(它为每行提供唯一标识符)与另一表的外键中的项相匹配。例如,通过在 titles 表中的 title_id 列(主键)和 sales 表的 title_id 列(外键)之间创建关系,可以使书籍销售额与售出的具体书名相关联。
表之间有三种类型的关系。所创建的关系类型取决于相关列是如何定义的。
一对多关系
多对多关系
一对一关系
一对多关系
一对多关系是最常见的关系类型。在这种关系中,表 A 中的一行在表 B 中可以有许多匹配行,但表 B 中的一行在表 A 中只能有一个匹配行。例如,publishers 和 titles 表具有一对多关系:每个出版商可出版很多书籍,但每本书籍只能出自一个出版商。
如果在相关列中只有一列是主键或具有唯一约束,则会创建一对多关系。
一对多关系的主键方由键符号表示。关系的外键方由无穷符号表示。
多对多关系
在多对多关系中,表 A 中的一行在表 B 中可以有许多匹配行,反之亦然。您需要通过定义第三个表(称为联接表)来创建这样的关系,该表的主键由来自表 A 和表 B 的外键组成。例如,authors 表和 titles 表具有多对多关系,该关系由这两个表中任意一个表与 titleauthors 表之间的一对多关系定义。titleauthors 表的主键是 au_id 列(authors 表的主键)和 title_id 列(titles 表的主键)的组合。
一对一关系
在一对一关系中,表 A 中的一行最多只能与表 B 中的一行相匹配,反之亦然。当两个相关列都是主键或都具有唯一约束时,将创建一对一关系。
这种关系不常见,因为以这种方式相关的多数信息都在一个表中。一对一关系可以用于:
分割一个含有许多列的表。
由于安全原因而隔离表的某一部分。
存储只需删除表就会很容易删除的临时数据。
存储只应用于主表的一个子集的信息。
一对一关系的主键方由键符号表示。外键方也由键符号表示。