您的位置: 旅游网 > 女人

VB.NET数据库工具教程之四

发布时间:2019-09-13 20:59:08

关联和外码

在能够使用任何DRI前,我们必须定义表之间的关联。只要有共同的属性,二个或更多的数据库表是可以相关联的。例如,我们有一个描述工作岗位的表和一个描述员工的表,在现实生活中,许多员工可能在一个工作岗位工作。假设我们指定一个值来区分不同的工作岗位,我们可以将它称作“岗位ID”,然后如果在每个员工的记录上存储“岗位ID”,于是我们就将员工记录与岗位记录关联了起来。如果我们将“岗位ID”定义为岗位记录的唯一性关健字,就可以将员工记录上的“岗位ID”定义为外码(如图16)。这样,我们就在二个数据库表之间建立了关联。

(图16)

请注意一下tblEmp表上的外码是如何连接到tblLocation表的主码上的,这一关联定义一种一对多的关系。对于每个工作岗位记录而言,可能存在多个员工记录,在这种关系中,每一方的关健字必须是唯一的。只要索引是唯一的,我们可以使用混合索引。只要具有唯一性,它甚至无需必须是主码。外码被定义在“工作岗位”字段上,如果不存在外码的索引,为了创建这一关联,SQL Server将定义非唯一性索引。

关联的类型

有三种基本的关联类型:

一对一型:对于表B中的记录而言,表A中只存在不超过1个的记录。根据引用完整性设置,可能存在表A中不存在与表B中某记录相对应的记录,或者表B中不存在与表A中某记录相对应的记录。

一对多型:对于表A中的每个记录而言,在表B中存在0或多个外码与之相同的记录。

多对多型:对于表A中的每个记录而言,表B中存在0或多个记录与之相对应;对于表B中的每个记录而言,表A中存在与之相去对应的0或多个记录。

在一对多、多对多类型的关联中是否会有0记录出现取决于引用完整性设置的情况。

引用完整性

在学习了如何定义表之间的关联后,我们下面来研究DRI的问题。在对定义了关联的表进行插入或更新操作时,我们将引用完整性定义为SQL Server使用的规则。如下图所示,DRI的设置在“属性页”的下半部分,如图17所示

(图17)

·创建时检查现有数据━━这一选项使SQL Server在第一次保存关联时验证所有DRI规则。应当小心使用这一选项,在较大的表上它可能会需要较长的时间。

·复制时执行关联━━这一选项使SQL Server在复制数据时执行关联。除非正在执行复制工作,这一选项与我们没有关系。如果正在执行复制操作,如果定义了一个关联,我们需要关闭这一选项。关闭这一选项 ,在对数据库进行同步时,SQL Server不对DRI规则进行检查。

·运行INSERT和UPDATE时执行关联━━这一选项使SQL Server在执行插入或更新操作时检查关联。如果外码丢失或与外部数据库表中的一个值不匹配,插入或更新操作会失败,SQL Server将给出错误信息。如果没有选择该选择项,SQL Server将在外码数据无效的情况下执行插入或更新操作。如果该选择了该选项,下面的二个选项才能够使用。

·更新相关字段━━一对多类型的关联中的一个相关字段改变后,所有相关字段都会自动地更新为新值。应当谨慎使用这一选项,因为大规模数据库表的性能可能因此而大幅度下降。如果不选择该选项,如果改变相关字段的值,SQL Server会出现错误,因为这会破坏引用完整性。

·删除相关字段━━如果删除一对多关联类型的数据库表中的一个记录,相关联的数据库表中具有相同外码的所有记录将被全部删除。如果没有选择这一选项,删除具有相关记录的记录会触发SQL Server出现错误。

检查约束

检查约束(图3)是字段在被写到数据库前应用于字段的规则。例如,我们可以指定一个字段的值必须小于100或文本字段不能全部由空格组成。

(图18)

约束表达式必须返回“真”或“假”,而且不能包含集合表达式。图18中的约束使用SQL Server拒绝Contact Name字段中的值全是空格。三个检查框的功能与“关联”标签相似。

查看本文来源

新生儿黄疸应该吃什么药好
芪斛楂颗粒多少钱一盒
孩子消化不良的表现
宝宝发烧39度
猜你会喜欢的
猜你会喜欢的