8.1.7 关系
外键表示两个表格数据的关系。例如,Orders表到Customers表的关系表示Orders中一行与Customers表一行的关系。
关系数据库中有3种基本的关系类型。根据关系双方所含对象的多少,可以将这些关系分为一对一、一对多、多对多3种关系。
一对一关系表示关系双方只有一个对象相互对应。例如,如果将Addresses放入与Customers表分离出的一个独立表中,则该表和Customers表就是一对一关系。从Addresses表到Customers表或者从Customers表到Addresses表也可以有外键(两者都不是必要的)。
在一对多关系里,一个表中的一行与另一表中的多行具有相互关联的关系。在这个例子中,一个用户可能有许多订单。在这些关系中,包含多行的表对应于包含一行的表应该有一个外键。在这里,我们将CustomerID放到Order表以显示其关系。
在多对多的关系中,表中的多行与另一个表中的多行具有相互关联的关系。例如,如果有两个表Books和Authors,我们会发现一本书可能由两个作者完成,这两个作者又独自著有或者与其他人合著有其他著作。通常,这种关系类型各自都要有一个表,因此,可能需要Books、Authors和Books_Authors三个表。第三个表只包含其他两个表中的键,将其作为外键对,用来显示哪些作者写了哪些书。