天天看点

数据库中表关系(一对多,多对多,一对一)

一对多关系

一对多关系是最普通的一种关系。在这种关系中,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。例如,

publishers

 和 

titles

 表之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。

只有当一个相关列是一个主键或具有唯一约束时,才能创建一对多关系。

多对多关系

在多对多关系中,A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。例如,

authors

 和 

titles

 表具有多对多关系,这是由于这些表都与

titleauthors

 表具有一对多关系。

titleauthors

 表的主键是 

au_id

 列(

authors

 表的主键)和 

title_id

 列(

titles

 表的主键)的组合。

一对一关系

在一对一关系中,A 表中的一行最多只能匹配于 B 表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。

这种关系并不常见,因为一般来说,按照这种方式相关的信息都在一个表中。可以利用一对一关系来:

  • 分割具有多列的表。
  • 由于安全原因而隔离表的一部分。
  • 保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。
  • 保存只适用于主表的子集的信息。