欢迎来到天天文库
浏览记录
ID:20501302
大小:25.00 KB
页数:2页
时间:2018-10-13
《数据库中表之间关系》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据库中表之间的关系表关系(一对一,一对多,多对多)收藏可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的。在一个关系型数据库中,利用关系可以避免多余的数据。例如,如果设计一个可以跟踪图书信息的数据库,您需要创建一个名为titles的表,它用来存储有关每本书的信息,例如书名、出版日期和出版社。您也可能保存有关出版社的信息,诸如出版社的电话、地址和邮政编码。如果您打算在titles表中保存所有这些信息,那么对于某出版社出版的每本书都会重复该出版社的电话号码。更好的方法是将有关出版社的信息在单独的表,publishers,中只保存一次。然后可以在tit
2、les表中放置一个引用出版社表中某项的指针。为了确保您的数据同步,可以实施titles和publishers之间的参照完整性。参照完整性关系可以帮助确保一个表中的信息与另一个表中的信息相匹配。例如,titles表中的每个书名必须与publishers表中的一个特定出版社相关。如果在数据库中没有一个出版社的信息,那么该出版社的书名也不能添加到这个数据库中。为了更好地理解表关系,请参阅:定义表关系实施参照完整性定义表关系关系的确立需要通过匹配键列中的数据(通常是两表中同名的列)。在大多数情况下,该关系会将一个表中的主键(它为每行提供了唯一标识)与另一个表的外部键中的某项相匹配。例如,通
3、过创建titles表中的title_id(主键)与sales表中的title_id列(外部键)之间的关系,则销售额就与售出的特定书名相关联了。表之间有三种关系。所创建关系的类型取决于相关列是如何定义的。一对多关系多对多关系一对一关系一对多关系一对多关系是最普通的一种关系。在这种关系中,A表中的一行可以匹配B表中的多行,但是B表中的一行只能匹配A表中的一行。例如,publishers和titles表之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。只有当一个相关列是一个主键或具有唯一约束时,才能创建一对多关系。多对多关系在多对多关系中,A表中的一行可以匹配B表
4、中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由A表和B表的外部键组成。例如,authors和titles表具有多对多关系,这是由于这些表都与titleauthors表具有一对多关系。titleauthors表的主键是au_id列(authors表的主键)和title_id列(titles表的主键)的组合。一对一关系在一对一关系中,A表中的一行最多只能匹配于B表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。这种关系并不常见,因为一般来说,按照这种方式相关的信息都在一个表中。可以利用一对一关系来:分割具有多列的表。由于安全原
5、因而隔离表的一部分。保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。保存只适用于主表的子集的信息。实施参照完整性参照完整性是一个规则系统,能确保相关表行之间关系的有效性,并且确保不会在无意之中删除或更改相关数据。当实施参照完整性时,必须遵守以下规则:如果在相关表的主键中没有某个值,则不能在相关表的外部键列中输入该值。但是,可以在外部键列中输入一个null值。例如,不能将一项工作分配给一位没有包含在employee表中的雇员,但是可以在employee表的job_id列中输入一个null值,表明一位雇员没有分配工作。如果某行在相关表中存在相匹配的行,则不能从一个主键表中
6、删除该行。例如,如果在employee表中表明某些雇员分配了某项工作,则不能在jobs表中删除该工作所对应的行。如果主键表的行具有相关行,则不能更改主键表中的某个键的值。例如,如果一位雇员分配了jobs表中的某项工作,则不能从employee表中删除该雇员。当符合下列所有条件时,才可以设置参照完整性:主表中的匹配列是一个主键或者具有唯一约束。相关列具有相同的数据类型和大小。两个表属于相同的数据库。
此文档下载收益归作者所有