如何定义数据库表之间的关系特别说明数据库的正规化是关系型数据库理论的基础。随着数据库的正规化工作的完成, 数据库中的各个数据表中的数据关系也就建立起来了。在设计关系型数据库时,最主要的一部分工作是将数据元素如何分配到各个关系数据表中。一旦完成了对这些数据元素的分类, 对于数据的操作将依赖于这些数据表之间的关系, 通过这些数据表之间的关系, 就可以将这些数据通过某种有意义的方式联系在一起。例如, 如果你不知道哪个用户下了订单, 那么单独的订单信息是没有任何用处的。但是, 你没有必要在同一个数据表中同时存储顾客和订单信息。你可以在两个关系数据表中分别存储顾客信息和订单信息, 然后使用两个数据表之间的关系, 可以同时查看数据表中每个订单以及其相关的客户信息。如果正规化的数据表是关系型数据库的基础的话, 那么这些数据表之间的关系则是建立这些基础的基石。出发点下面的数据将要用在本文的例子中,用他们来说明如何定义数据库表之间的关系。通过 Boyce-Codd Normal Form ( BCNF )对数据进行正规化后,产生了七个关系表: Books: {Title*, ISBN, Price} Authors: {FirstName*, LastName*} ZIPCodes: {ZIPCode*} Categories: {Category*, Description} Publishers: {Publisher*} States: {State*} Cities: {City*} 现在所需要做的工作就是说明如何在这些表之间建立关系。关系类型在家中, 你与其他的成员一起存在着许多关系。例如, 你和你的母亲是有关系的, 你只有一位母亲, 但是你母亲可能会有好几个孩子。你和你的兄弟姐妹是有关系的——你可能有很多兄弟和姐妹, 同样, 他们也有很多兄弟和姐妹。如果你已经结婚了, 你和你的配偶都有一个配偶——这是相互的——但是一次只能有一个。在数据表这一级, 数据库关系和上面所描述现象中的联系非常相似。有三种不同类型的关系: 一对一: 在这种关系中, 关系表的每一边都只能存在一个记录。每个数据表中的关键字在对应的关系表中只能存在一个记录或者没有对应的记录。这种关系和一对配偶之间的关系非常相似——要么你已经结婚, 你和你的配偶只能有一个配偶, 要么你没有结婚没有配偶。大多数的一对一的关系都是某种商业规则约束的结果,而不是按照数据的自然属性来得到的。如果没有这些规则的约束, 你通常可以把两个数据表合并进一个数据表, 而且不会打破任何规范化的规则。一对多: 主键数据表中只能含有一个记录, 而在其关系表中这条记录可以与一个或者多个记录相关, 也可以没有记录与之相关。这种关系类似于你和你的父母之间的关系。你只有一位母亲,但是你母亲可以有几个孩子。多对多: 两个数据表里的每条记录都可以和另一个数据表里任意数量的记录( 或者没有记录) 相关。例如,如果你有多个兄弟姐妹,这对你的兄弟姐妹也是一样(有多个兄弟姐妹) ,多对多这种关系需要引入第三个数据表, 这种数据表称为联系表或者连接表, 因为关系型系统不能直接实现这种关系。建立关系在开始着手考虑建立关系表之间的关系之前, 你可能需要对数据非常熟悉。只有在熟悉数据之后, 关联会比你刚开始的时候更明显。你的数据库系统依赖于在两个数据表中找
数据库定义表之间关系(带图) 来自淘豆网m.daumloan.com转载请标明出处.